diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevMergeServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevMergeServiceImpl.java
index 0ac370c..7996f5d 100644
--- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevMergeServiceImpl.java
+++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevMergeServiceImpl.java
@@ -243,8 +243,10 @@ public class DevMergeServiceImpl implements DevMergeService {
public AjaxResult interDevice(MaDevInfo maDevInfo) {
try {
Long thisLoginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
+ String province = SecurityUtils.getLoginUser().getSysUser().getDept().getProvince();
maDevInfo.setPropertyUnitId(Math.toIntExact(thisLoginUserDeptId));
maDevInfo.setCode(getString());
+ maDevInfo.setProvince(province);
Integer i = devMergeMapper.interDevice(maDevInfo);
if (i > 0) {
devInfoMapper.deleteDevInfoProperties(Long.valueOf(maDevInfo.getMaId()));
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/basic/BmCompanyAddressMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/basic/BmCompanyAddressMapper.xml
index 9d4fc06..a8bbcd8 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/basic/BmCompanyAddressMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/basic/BmCompanyAddressMapper.xml
@@ -21,9 +21,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select bca.id, bca.company_id, bca.province_code, bca.city_code, bca.area_code, bca.address, bca.create_time, bca.update_time,
b.name as area_name, b1.name as province_name, b2.name as city_name
from bm_company_address bca
- LEFT JOIN base_address b ON b.code = bca.area_code
- LEFT JOIN base_address b1 on bca.province_code = b1.code
- LEFT JOIN base_address b2 on bca.city_code = b2.code
+ LEFT JOIN sys_cnarea b ON b.area_code = bca.area_code
+ LEFT JOIN sys_cnarea b1 on bca.province_code = b1.area_code
+ LEFT JOIN sys_cnarea b2 on bca.city_code = b2.area_code
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml
index 2942ec7..0997a39 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml
@@ -624,11 +624,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- select id,name,code from base_address
+ select id,name,area_code from sys_cnarea
- select name from base_address where id = #{id}
+ select name from sys_cnarea where id = #{id}
@@ -1768,7 +1768,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
0.0 AS valueC
FROM sys_dept sd
-- 左连接设备表(过滤有效数据)
- LEFT JOIN base_address ba ON ba.code = sd.city
+ LEFT JOIN sys_cnarea ba ON ba.area_code = sd.city
LEFT JOIN ma_dev_info mdi
ON mdi.on_company = sd.dept_id
AND mdi.change_status != '4'
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevMergeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevMergeMapper.xml
index 4e72dd4..c285905 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevMergeMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevMergeMapper.xml
@@ -123,7 +123,7 @@
#{manageType},
#{code},
'0',
- '340000000000',
+ #{province},
#{propertyUnitId},
#{originalCode},
@@ -193,7 +193,7 @@
#{manageType},
#{code},
'0',
- '340000000000',
+ #{province},
#{propertyUnitId},
#{originalCode},
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml
index f842b16..de6c1f2 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/equipment/SysDeptMapper.xml
@@ -373,7 +373,7 @@
select name
- from base_address where code = #{city}
+ from sys_cnarea where area_code = #{city}
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/home/MaTypeInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/home/MaTypeInfoMapper.xml
index 3485830..e9095d5 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/home/MaTypeInfoMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/home/MaTypeInfoMapper.xml
@@ -82,10 +82,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
id as areaId,
- `code` as areaCode,
+ area_code as areaCode,
parent_code as areaParentCode,
name as areaName
- from base_address
+ from sys_cnarea
where 1 = 1
and parent_code = 0
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/index/IndexMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/index/IndexMapper.xml
index 17d6485..ccb76a7 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/index/IndexMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/index/IndexMapper.xml
@@ -9,9 +9,9 @@
IFNULL(totalSum,0) AS totalSum,
IFNULL(ROUND((toolNum / totalSum) * 100, 2),0) AS toolPercent,
IFNULL(ROUND((maNum / totalSum) * 100, 2),0) AS maPercent
- FROM (SELECT ROUND(t1.toolNum) AS toolNum,
- ROUND(t2.maNum) AS maNum,
- ROUND(t1.toolNum) + ROUND(t2.maNum) AS totalSum
+ FROM (SELECT ROUND(IFNULL(t1.toolNum,0)) AS toolNum,
+ ROUND(IFNULL(t2.maNum,0)) AS maNum,
+ ROUND(IFNULL(t1.toolNum,0)) + ROUND(IFNULL(t2.maNum,0)) AS totalSum
FROM (SELECT SUM(total_num - scrap_num) AS toolNum FROM tool_ledger
@@ -31,7 +31,7 @@
and mdi.on_company = #{companyId}
- ) t2) AS temp;
+ ) t2) AS temp
SELECT ROUND(IFNULL(t1.available_num, 0) + IFNULL(t2.available_num, 0)) AS availableNum,
@@ -249,32 +249,54 @@
SELECT
- -- 退库申请数量(类型1:原始退库申请)
- IFNULL(SUM(CASE WHEN cdc.type = '1' THEN cdcd.num ELSE 0 END),0) AS returnApplyNum,
-- 自用申请数量(类型2:自用申请)
- IFNULL(SUM(CASE WHEN cdc.type = '2' THEN cdcd.num ELSE 0 END),0) AS selfUseApplyNum,
+ IFNULL(SUM(CASE WHEN cdc.type = '2' AND cdc.review_status = 2 THEN cdcd.real_num ELSE 0 END),0) AS
+ selfUseApplyNum,
-- 自用出库数量(类型2的实际出库数)
- IFNULL(SUM(CASE WHEN cdc.type = '2' AND cdcd.dev_type ='1' THEN cdcd.real_num ELSE 0 END),0) AS selfUseOutNum,
+ IFNULL(SUM(CASE WHEN cdc.type = '2' AND cdc.review_status = 2 AND cdcd.dev_type ='1' THEN cdcd.real_num ELSE 0
+ END),0) AS selfUseOutNum,
-- 自用审核数量(类型2+审核通过状态2的申请数)
IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '2' AND cdcd.dev_type ='2' THEN cdcd.real_num ELSE 0
END),0) AS selfUseAuditNum,
+
+ -- 退库申请数量(类型1:原始退库申请)
+ IFNULL(SUM(CASE WHEN cdc.type = '1' AND cdc.review_status = 2 THEN cdcd.num ELSE 0 END),0) AS returnApplyNum,
-- 退库审核数量(类型1+审核通过状态2的申请数)
- IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '1' THEN cdcd.num ELSE 0 END),0) AS
+ IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '1' AND cdcd.dev_type ='1' THEN cdcd.num ELSE 0
+ END),0) AS
returnAuditApplyNum,
-- 退库维修数量(类型1+审核通过状态2的实际维修数)
- IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '1' THEN cdcd.real_num ELSE 0 END),0) AS
+ IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '1' AND cdcd.dev_type ='2' THEN cdcd.num ELSE 0
+ END),0) AS
returnAuditRepairNum,
+
+
-- 退库入库数量(类型1+审核通过状态2的申请数-实际维修数,即可入库数量)
IFNULL(SUM(CASE WHEN cdc.review_status = 2 AND cdc.type = '1' THEN (cdcd.num - cdcd.real_num) ELSE 0 END),0) AS
returnAuditStoreNum,
+
+
-- 类型4:待维修数量(未审核通过/审核中 + 申请数)
IFNULL(SUM(CASE WHEN cdc.type = '4' AND cdc.review_status != 2 THEN cdcd.num ELSE 0 END),0) AS repairPendingNum,
-- 类型4:维修退役数量(审核通过 + 实际退役数)
- IFNULL(SUM(CASE WHEN cdc.type = '4' AND cdcd.is_scrap = '1' THEN cdcd.real_num ELSE 0 END),0) AS
+ IFNULL(SUM(CASE WHEN cdc.type = '4' AND cdc.review_status = 2 AND cdcd.is_scrap = '1' THEN cdcd.real_num ELSE 0
+ END),0) + IFNULL(SUM(CASE WHEN cdc.type = '3' AND cdc.review_status = 2 THEN cdcd.real_num ELSE 0
+ END),0) AS
repairRetireNum,
-- 类型4:维修合格数量(审核通过 + 申请数-实际退役数,即可入库/复用数量)
- IFNULL(SUM(CASE WHEN cdc.type = '4' AND cdcd.is_scrap = '0' THEN (cdcd.real_num) ELSE 0 END),0) AS
- repairQualifiedNum
+ IFNULL(SUM(CASE WHEN cdc.type = '4' AND cdc.review_status = 2 AND cdcd.is_scrap = '0' THEN (cdcd.real_num) ELSE
+ 0 END),0) AS
+ repairQualifiedNum,
+ IFNULL((SELECT-- 替换子查询为LEFT JOIN,避免逐行子查询的性能损耗
+ COALESCE ( ma_detail.maNum, 0 ) + COALESCE ( tool_detail.toolNum, 0 ) AS maNum
+ FROM
+ bm_warehousing bw
+ LEFT JOIN ( SELECT cs_id, COUNT( 1 ) AS maNum FROM ma_apply_details GROUP BY cs_id ) ma_detail ON
+ ma_detail.cs_id = bw.order_id -- 预计算tool_apply_details的计数,关联一次即可
+ LEFT JOIN ( SELECT apply_id, SUM( apply_num ) AS toolNum FROM tool_apply_details WHERE del_flag = '0' GROUP BY
+ apply_id ) tool_detail ON tool_detail.apply_id = bw.apply_id
+ WHERE bw.`status` = 2 AND DATE_FORMAT(bw.create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')),0) AS
+ warehousingNum
FROM
cs_device_change cdc
-- 原LEFT JOIN + cdcd.id IS NOT NULL 等价于INNER JOIN,性能更优
@@ -330,42 +352,56 @@
- SELECT COUNT(1) AS buyerNum,
- SUM(IF(devType = '0', real_num, 0)) AS sellerNum,
- SUM(IF(devType = '1', real_num, 0)) AS toolNum
- FROM(
SELECT
- CASE
- WHEN hh.devType = '0' THEN up.dept_id
- WHEN hh.devType = '1' THEN up1.dept_id
- ELSE NULL
- END AS dept_id,
- hh.real_num,
- hh.devType
- FROM
- ma_order_details hh
- -- 左连接mdi(仅devType=0时生效)
- LEFT JOIN ma_dev_info mdi
- ON hh.ma_id = mdi.ma_id
- AND hh.devType = '0'
- -- 左连接tl(仅devType=1时生效)
- LEFT JOIN tool_ledger tl
- ON tl.id = hh.ma_id
- AND hh.devType = '1'
- -- 关联mdi对应的部门表
- LEFT JOIN sys_dept up
- ON up.dept_id = mdi.on_company
- -- 关联tl对应的部门表
- LEFT JOIN sys_dept up1
- ON up1.dept_id = tl.company_id
- -- 可选:过滤无效devType(如果需要)
- WHERE hh.devType IN ('0', '1')
- ) a
-
-
- and dept_id = #{companyId}
-
-
+ -- 1. 出售方订单数:companyId为空时统计所有,否则统计指定公司
+ IFNULL(SUM(CASE
+ WHEN #{companyId} IS NULL OR #{companyId} = '' THEN 1
+ WHEN a.sellerDeptId = #{companyId} THEN 1
+ ELSE 0
+ END), 0) AS sellerNum,
+ -- 2. 购买方订单数:companyId为空时统计所有,否则统计指定公司
+ IFNULL(SUM(CASE
+ WHEN #{companyId} IS NULL OR #{companyId} = '' THEN 1
+ WHEN a.buyerCompanyName = #{companyId} THEN 1
+ ELSE 0
+ END), 0) AS buyerNum,
+ -- 3. 出售设备总数:companyId为空时统计所有,否则统计指定公司的设备数
+ IFNULL(SUM(CASE
+ WHEN (#{companyId} IS NULL OR #{companyId} = '') AND a.devType = '0' THEN a.equipmentTotalNum
+ WHEN a.sellerDeptId = #{companyId} and a.devType = '0' THEN a.equipmentTotalNum
+ ELSE 0
+ END), 0) AS sellerMaNum,
+ IFNULL(SUM(CASE
+ WHEN (#{companyId} IS NULL OR #{companyId} = '') AND a.devType = '1' THEN a.equipmentTotalNum
+ WHEN a.sellerDeptId = #{companyId} and a.devType = '1' THEN a.equipmentTotalNum
+ ELSE 0
+ END), 0) AS sellerToolNum,
+ IFNULL(SUM(CASE
+ WHEN (#{companyId} IS NULL OR #{companyId} = '') AND a.devType = '0' THEN a.equipmentTotalNum
+ WHEN a.buyerCompanyName = #{companyId} and a.devType = '0' THEN a.equipmentTotalNum
+ ELSE 0
+ END), 0) AS buyerMaNum,
+ IFNULL(SUM(CASE
+ WHEN (#{companyId} IS NULL OR #{companyId} = '') AND a.devType = '1' THEN a.equipmentTotalNum
+ WHEN a.buyerCompanyName = #{companyId} and a.devType = '1' THEN a.equipmentTotalNum
+ ELSE 0
+ END), 0) AS buyerToolNum
+ FROM (
+ -- 内层查询:按订单维度统计出售方、购买方、设备总数(原逻辑不变)
+ SELECT up.dept_id AS sellerDeptId,
+ moi.buyer_company AS buyerCompanyName,
+ SUM(hh.num) AS equipmentTotalNum,
+ hh.devType AS devType
+ FROM ma_order_details hh
+ LEFT JOIN ma_order_info moi ON moi.order_id = hh.order_id
+ LEFT JOIN ma_dev_info mdi ON hh.ma_id = mdi.ma_id
+ LEFT JOIN sys_dept up ON up.dept_id = mdi.on_company
+ WHERE DATE_FORMAT(moi.create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
+ GROUP BY hh.order_id,
+ up.dept_id,
+ hh.devType,
+ moi.buyer_company) a
+
SELECT sd.dept_abbreviation AS companyName, -- 公司名称
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/LeaseRepairRecordMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/LeaseRepairRecordMapper.xml
index 789a95d..e2c3e4f 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/LeaseRepairRecordMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/LeaseRepairRecordMapper.xml
@@ -184,7 +184,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
ma_lease_info m
LEFT JOIN bm_company_info c ON m.company_id = c.company_id
- LEFT JOIN base_address b ON b.id = m.area_id
+ LEFT JOIN sys_cnarea b ON b.id = m.area_id
LEFT JOIN ma_hot_search h ON h.lease_id = m.id
LEFT JOIN ma_type mt4 ON mt4.type_id = m.type_id and mt4.del_flag = '0'
LEFT JOIN ma_type mt3 ON mt3.type_id = mt4.parent_id and mt3.del_flag = '0'
@@ -344,7 +344,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
ma_lease_info m
LEFT JOIN bm_company_info c ON m.company_id = c.company_id
- LEFT JOIN base_address b ON b.id = m.area_id
+ LEFT JOIN sys_cnarea b ON b.id = m.area_id
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN ma_type mt4 ON mt4.type_id = m.type_id and mt4.del_flag = '0'
LEFT JOIN ma_type mt3 ON mt3.type_id = mt4.parent_id and mt3.del_flag = '0'
@@ -438,7 +438,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM
ma_lease_info m
LEFT JOIN bm_company_info c ON m.company_id = c.company_id
- LEFT JOIN base_address b ON b.id = m.area_id
+ LEFT JOIN sys_cnarea b ON b.id = m.area_id
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
WHERE 1 = 1 and m.order_user = #{orderUser} and m.lease_status = '1'
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml
index 6f7d61b..2786b64 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/lease/MaLeaseInfoMapper.xml
@@ -180,9 +180,9 @@
END AS leaseDay
FROM
ma_lease_info m
- LEFT JOIN base_address b ON b.code = m.area_code
- LEFT JOIN base_address b1 on m.province_code = b1.code
- LEFT JOIN base_address b2 on m.city_code = b2.code
+ LEFT JOIN sys_cnarea b ON b.area_code = m.area_code
+ LEFT JOIN sys_cnarea b1 on m.province_code = b1.area_code
+ LEFT JOIN sys_cnarea b2 on m.city_code = b2.area_code
LEFT JOIN ma_hot_search h ON h.lease_id = m.id
LEFT JOIN sys_dept sd on m.publish_company = sd.dept_id
LEFT JOIN sys_dept sd2 on m.order_company = sd2.dept_id
@@ -237,9 +237,9 @@
m.publish_company as publishCompany
FROM
ma_lease_info m
- LEFT JOIN base_address b ON b.code = m.area_code
- LEFT JOIN base_address b1 on m.province_code = b1.code
- LEFT JOIN base_address b2 on m.city_code = b2.code
+ LEFT JOIN sys_cnarea b ON b.area_code = m.area_code
+ LEFT JOIN sys_cnarea b1 on m.province_code = b1.area_code
+ LEFT JOIN sys_cnarea b2 on m.city_code = b2.area_code
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
WHERE 1 = 1 and m.publish_company = #{publishCompany}
@@ -298,9 +298,9 @@
END AS leaseDay
FROM
ma_lease_info m
- LEFT JOIN base_address b ON b.code = m.area_code
- LEFT JOIN base_address b1 on m.province_code = b1.code
- LEFT JOIN base_address b2 on m.city_code = b2.code
+ LEFT JOIN sys_cnarea b ON b.area_code = m.area_code
+ LEFT JOIN sys_cnarea b1 on m.province_code = b1.area_code
+ LEFT JOIN sys_cnarea b2 on m.city_code = b2.area_code
LEFT JOIN ma_lease_details m1 ON m.id = m1.lease_id
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_dept sd ON m.publish_company = sd.dept_id
@@ -378,9 +378,9 @@
AS leaseStatusName
FROM
ma_lease_info m
- LEFT JOIN base_address b ON b.code = m.area_code
- LEFT JOIN base_address b1 on m.province_code = b1.code
- LEFT JOIN base_address b2 on m.city_code = b2.code
+ LEFT JOIN sys_cnarea b ON b.area_code = m.area_code
+ LEFT JOIN sys_cnarea b1 on m.province_code = b1.area_code
+ LEFT JOIN sys_cnarea b2 on m.city_code = b2.area_code
LEFT JOIN sys_user su ON m.publish_user = su.user_id
LEFT JOIN sys_user su1 ON m.order_user = su1.user_id
WHERE 1 = 1 and m.order_company = #{orderCompany}
@@ -712,8 +712,8 @@
AND mdi.on_company = #{ownCo}
- SELECT code, name
- from base_address
+ SELECT area_code, name
+ from sys_cnarea
where level = 1
diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/toolLedger/ToolLedgerMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/toolLedger/ToolLedgerMapper.xml
index 486d5ed..ee4df7b 100644
--- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/toolLedger/ToolLedgerMapper.xml
+++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/toolLedger/ToolLedgerMapper.xml
@@ -91,7 +91,7 @@
-- 关联4级父节点
INNER JOIN tool_type tt4 ON tt3.parent_id = tt4.type_id
WHERE
- tt.del_flag = '0'
+ tt.del_flag = '0' AND tl.type_id IS not null
AND tt1.del_flag = '0'
AND tt2.del_flag = '0'
AND tt3.del_flag = '0'