问题修改

This commit is contained in:
jiang 2026-01-08 10:51:31 +08:00
parent ef9cdc1da0
commit a843c48b07
4 changed files with 86 additions and 48 deletions

View File

@ -510,9 +510,9 @@ public class DevChangeServiceImpl implements DevChangeService {
// && !deptId.equals(PROVINCE_COMPANY_DEPT_ID)) { // && !deptId.equals(PROVINCE_COMPANY_DEPT_ID)) {
// dto.setCompanyId(deptId); // dto.setCompanyId(deptId);
// } // }
if(ADMIN_ID.equals(userId)){ if (ADMIN_ID.equals(userId)) {
dto.setCompanyId(1L); dto.setCompanyId(1L);
}else{ } else {
dto.setCompanyId(deptId); dto.setCompanyId(deptId);
} }
return mapper.getList(dto); return mapper.getList(dto);
@ -737,17 +737,24 @@ public class DevChangeServiceImpl implements DevChangeService {
} }
/** /**
* @param entity 出库信息 * @param entity
* @return 结果 * @return
*/ */
@Override @Override
public AjaxResult orderOut(CsDeviceDetails entity) { public AjaxResult orderOut(CsDeviceDetails entity) {
try { try {
//装备 //装备
if (entity.getDevType().equals("1")) { if (entity.getDevType().equals("1")) {
BigDecimal inStockNum = mapper.getMaNum(entity); BigDecimal toolNum = mapper.getMaNum(entity);
if (inStockNum.compareTo(BigDecimal.ZERO) <= 0) { if (toolNum.compareTo(entity.getOutNum()) < 0) {
return AjaxResult.error("当前装备非在库状态,无法出库!"); // 库存不足计算差额
BigDecimal shortage = entity.getOutNum().subtract(toolNum);
return AjaxResult.error(String.format(
"库存不足!当前可用:%s需要出库%s短缺%s",
toolNum.stripTrailingZeros().toPlainString(),
entity.getOutNum().stripTrailingZeros().toPlainString(),
shortage.stripTrailingZeros().toPlainString()
));
} }
mapper.updateOrderZb(entity); mapper.updateOrderZb(entity);
} else { } else {
@ -786,7 +793,7 @@ public class DevChangeServiceImpl implements DevChangeService {
// 2. 先检查所有工器具的库存是否充足 // 2. 先检查所有工器具的库存是否充足
for (CsDeviceDetails item : outAllList) { for (CsDeviceDetails item : outAllList) {
if (!item.getDevType().equals("0")) { if (item.getDevType().equals("1")) {
// 工器具需要检查库存 // 工器具需要检查库存
BigDecimal toolNum = mapper.getToolNum(item); // 注意参数应该是 item BigDecimal toolNum = mapper.getToolNum(item); // 注意参数应该是 item
BigDecimal outNum = item.getOutNum(); BigDecimal outNum = item.getOutNum();
@ -800,6 +807,20 @@ public class DevChangeServiceImpl implements DevChangeService {
shortage.stripTrailingZeros().toPlainString() shortage.stripTrailingZeros().toPlainString()
)); ));
} }
} else {
// 工器具需要检查库存
BigDecimal toolNum = mapper.getMaNum(item); // 注意参数应该是 item
BigDecimal outNum = item.getOutNum();
if (toolNum.compareTo(outNum) < 0) {
BigDecimal shortage = outNum.subtract(toolNum);
return AjaxResult.error(String.format(
"库存不足! 装备:%s当前可用%s需要出库%s短缺%s",
item.getTypeName(),
toolNum.stripTrailingZeros().toPlainString(),
outNum.stripTrailingZeros().toPlainString(),
shortage.stripTrailingZeros().toPlainString()
));
}
} }
} }
@ -828,6 +849,10 @@ public class DevChangeServiceImpl implements DevChangeService {
} }
} }
/**
* @param entity
* @return
*/
@Override @Override
public AjaxResult orderOutCancel(CsDeviceDetails entity) { public AjaxResult orderOutCancel(CsDeviceDetails entity) {
try { try {
@ -839,6 +864,10 @@ public class DevChangeServiceImpl implements DevChangeService {
} }
} }
/**
* @param entity
* @return
*/
@Override @Override
public AjaxResult orderOutCancelAll(CsDeviceDetails entity) { public AjaxResult orderOutCancelAll(CsDeviceDetails entity) {
try { try {

View File

@ -195,7 +195,7 @@
</if> </if>
</where> </where>
GROUP BY mdi.code,cd.order_id GROUP BY mdi.code,cdc.change_id
HAVING useNum &gt; 0 and useNum is not null HAVING useNum &gt; 0 and useNum is not null
UNION ALL UNION ALL
@ -345,7 +345,7 @@
</if> </if>
</where> </where>
GROUP BY mdi.code,cd.order_id GROUP BY mdi.code,cdc.order_id
HAVING useNum &gt; 0 and useNum is not null HAVING useNum &gt; 0 and useNum is not null
UNION ALL UNION ALL

View File

@ -1098,6 +1098,13 @@
ELSE '' ELSE ''
END, '' END, ''
) AS id, ) AS id,
COALESCE(
CASE
WHEN cdcd.devType = '0' THEN CONCAT(a.device_name, '')
WHEN cdcd.devType = '1' THEN CONCAT(tt1.type_name, '')
ELSE ''
END, ''
) AS typeName,
cdcd.devType AS devType, cdcd.devType AS devType,
COALESCE(cdcd.num, 0) - COALESCE(cdcd.real_num, 0) AS outNum, COALESCE(cdcd.num, 0) - COALESCE(cdcd.real_num, 0) AS outNum,
moi.pro_code AS proCode, moi.pro_code AS proCode,
@ -1111,6 +1118,8 @@
LEFT JOIN tool_ledger b LEFT JOIN tool_ledger b
ON cdcd.devType = '1' ON cdcd.devType = '1'
AND cdcd.ma_id = b.id AND cdcd.ma_id = b.id
LEFT JOIN tool_type tt ON tt.type_id = b.type_id
LEFT JOIN tool_type tt1 ON tt.parent_id = tt1.type_id
WHERE cdcd.order_id = #{id} WHERE cdcd.order_id = #{id}
</select> </select>
<select id="getToolNum" resultType="java.math.BigDecimal"> <select id="getToolNum" resultType="java.math.BigDecimal">

View File

@ -1755,46 +1755,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and tl.id = #{maId} and tl.id = #{maId}
</select> </select>
<select id="getUnitEquipmentConfiguration" resultType="java.util.Map"> <select id="getUnitEquipmentConfiguration" resultType="java.util.Map">
SELECT sd.dept_name AS deptName, SELECT sd.dept_name AS deptName, sd.dept_id AS deptId,sd.parent_id AS parentId,
sd.dept_abbreviation AS deptAbbreviation, sd.dept_abbreviation AS deptAbbreviation,
ba.name AS cityName, ba.name AS cityName,
IFNULL(sd.location, CONCAT(ba.lat, ',', ba.lng)) AS location, IFNULL(sd.location, CONCAT(ba.lat, ',', ba.lng)) AS location,
-- 统计关联了mdi且mtv.maxTypeId=5080的总数量 -- 统计关联了mdi且mtv.maxTypeId=5080的总数量
IFNULL(sum(mdi.buy_price), 0) AS totalValue, IFNULL(sum(mdi.buy_price), 0) AS totalValue,
SUM(CASE SUM(CASE
WHEN sd.dept_id = mdi.on_company THEN 1 -- 仅当类型符合时计数 WHEN sd.dept_id = mdi.on_company THEN 1 -- 仅当类型符合时计数
ELSE 0 ELSE 0
END) AS totalEquipmentQuantity, END) AS totalEquipmentQuantity,
SUM(CASE SUM(CASE
WHEN mtv.maxTypeId = 1 THEN 1 -- 仅当类型符合时计数 WHEN mtv.maxTypeId = 1 THEN 1 -- 仅当类型符合时计数
ELSE 0 ELSE 0
END) AS cableNum, END) AS cableNum,
SUM(CASE SUM(CASE
WHEN mtv.maxTypeId = 3 THEN 1 -- 仅当类型符合时计数 WHEN mtv.maxTypeId = 3 THEN 1 -- 仅当类型符合时计数
ELSE 0 ELSE 0
END) AS substationNum, END) AS substationNum,
SUM(CASE SUM(CASE
WHEN mtv.maxTypeId = 2 THEN 1 -- 仅当类型符合时计数 WHEN mtv.maxTypeId = 2 THEN 1 -- 仅当类型符合时计数
ELSE 0 ELSE 0
END) AS lineNum, END) AS lineNum,
0.0 AS configRate, 0.0 AS configRate,
0.0 AS valueA, 0.0 AS valueA,
0.0 AS valueB, 0.0 AS valueB,
0.0 AS valueC 0.0 AS valueC
FROM sys_dept sd FROM sys_dept sd
-- 左连接设备表(过滤有效数据) -- 左连接设备表(过滤有效数据)
LEFT JOIN sys_cnarea ba ON ba.area_code = sd.city LEFT JOIN sys_cnarea ba ON ba.area_code = sd.city
LEFT JOIN ma_dev_info mdi LEFT JOIN ma_dev_info mdi
ON mdi.on_company = sd.dept_id ON mdi.on_company = sd.dept_id
AND mdi.change_status != '4' AND mdi.change_status != '4'
AND mdi.is_active = '1' AND mdi.is_active = '1'
AND mdi.entry_status = '1' AND mdi.entry_status = '1'
-- 左连接类型表不在这里加maxTypeId条件避免过滤主表 -- 左连接类型表不在这里加maxTypeId条件避免过滤主表
LEFT JOIN ma_type_view mtv LEFT JOIN ma_type_view mtv
ON mtv.typeId = mdi.type_id ON mtv.typeId = mdi.type_id
WHERE sd.del_flag = '0' WHERE sd.del_flag = '0' and sd.is_show='1'
<if test="deptId != null"> <if test="deptId != null">
AND sd.dept_id = #{deptId} AND sd.dept_id = #{deptId}
</if> </if>
GROUP BY sd.dept_id, sd.dept_name -- 按部门分组,确保所有部门都被列出 GROUP BY sd.dept_id, sd.dept_name -- 按部门分组,确保所有部门都被列出
ORDER BY totalValue DESC ORDER BY totalValue DESC