问题修改

This commit is contained in:
jiang 2026-01-05 09:32:59 +08:00
parent 30276847ae
commit ffaf9d938a
10 changed files with 115 additions and 77 deletions

View File

@ -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()));

View File

@ -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
</sql>
<select id="selectBmCompanyAddressList" parameterType="com.bonus.material.basic.domain.BmCompanyAddress" resultMap="BmCompanyAddressResult">

View File

@ -624,11 +624,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getBaseAddress" resultType="com.bonus.common.biz.domain.BaseAddress">
select id,name,code from base_address
select id,name,area_code from sys_cnarea
</select>
<select id="getBaseAddressById" resultType="String">
select name from base_address where id = #{id}
select name from sys_cnarea where id = #{id}
</select>
<select id="selectDevInfoLists" resultType="com.bonus.material.device.domain.vo.DevInfoVo">
@ -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'

View File

@ -123,7 +123,7 @@
#{manageType},
#{code},
'0',
'340000000000',
#{province},
#{propertyUnitId},
<!-- 非必填字段对应值 -->
<if test="originalCode != null and originalCode != ''">#{originalCode},</if>
@ -193,7 +193,7 @@
#{manageType},
#{code},
'0',
'340000000000',
#{province},
#{propertyUnitId},
<!-- 非必填字段对应值 -->
<if test="originalCode != null and originalCode != ''">#{originalCode},</if>

View File

@ -373,7 +373,7 @@
<select id="getCityName" resultType="java.lang.String">
select name
from base_address where code = #{city}
from sys_cnarea where area_code = #{city}
</select>
</mapper>

View File

@ -82,10 +82,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getArea" resultType="com.bonus.common.biz.domain.vo.AreaVo">
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
<if test="areaCode == 0">
and parent_code = 0

View File

@ -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
<where>
<if test="companyId != null">
@ -31,7 +31,7 @@
and mdi.on_company = #{companyId}
</if>
</where>
) t2) AS temp;
) t2) AS temp
</select>
<select id="getUseDeviceNum" resultType="java.util.Map">
SELECT ROUND(IFNULL(t1.available_num, 0) + IFNULL(t2.available_num, 0)) AS availableNum,
@ -249,32 +249,54 @@
</select>
<select id="getDeviceNumByMonth" resultType="java.util.Map">
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 @@
</choose>
</select>
<select id="getShare" resultType="java.util.Map">
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
<where>
<if test="companyId != null">
and dept_id = #{companyId}
</if>
</where>
-- 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>
<select id="getDeviceByDeptEX" resultType="com.bonus.material.index.domain.CompanyDevToolStatisticsExport">
SELECT sd.dept_abbreviation AS companyName, -- 公司名称

View File

@ -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'

View File

@ -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>
<select id="getAddress" resultType="java.util.Map">
SELECT code, name
from base_address
SELECT area_code, name
from sys_cnarea
where level = 1
</select>
<select id="getDept" resultType="java.util.Map">

View File

@ -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'