diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java index 5ec87de..451e1c7 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java @@ -510,9 +510,9 @@ public class DevChangeServiceImpl implements DevChangeService { // && !deptId.equals(PROVINCE_COMPANY_DEPT_ID)) { // dto.setCompanyId(deptId); // } - if(ADMIN_ID.equals(userId)){ + if (ADMIN_ID.equals(userId)) { dto.setCompanyId(1L); - }else{ + } else { dto.setCompanyId(deptId); } return mapper.getList(dto); @@ -737,17 +737,24 @@ public class DevChangeServiceImpl implements DevChangeService { } /** - * @param entity 出库信息 - * @return 结果 + * @param entity + * @return */ @Override public AjaxResult orderOut(CsDeviceDetails entity) { try { //装备 if (entity.getDevType().equals("1")) { - BigDecimal inStockNum = mapper.getMaNum(entity); - if (inStockNum.compareTo(BigDecimal.ZERO) <= 0) { - return AjaxResult.error("当前装备非在库状态,无法出库!"); + BigDecimal toolNum = mapper.getMaNum(entity); + if (toolNum.compareTo(entity.getOutNum()) < 0) { + // 库存不足,计算差额 + 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); } else { @@ -786,7 +793,7 @@ public class DevChangeServiceImpl implements DevChangeService { // 2. 先检查所有工器具的库存是否充足 for (CsDeviceDetails item : outAllList) { - if (!item.getDevType().equals("0")) { + if (item.getDevType().equals("1")) { // 工器具需要检查库存 BigDecimal toolNum = mapper.getToolNum(item); // 注意:参数应该是 item BigDecimal outNum = item.getOutNum(); @@ -800,6 +807,20 @@ public class DevChangeServiceImpl implements DevChangeService { 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 public AjaxResult orderOutCancel(CsDeviceDetails entity) { try { @@ -839,6 +864,10 @@ public class DevChangeServiceImpl implements DevChangeService { } } + /** + * @param entity + * @return + */ @Override public AjaxResult orderOutCancelAll(CsDeviceDetails entity) { try { diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml index 52f9a21..74a4553 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml @@ -195,7 +195,7 @@ - GROUP BY mdi.code,cd.order_id + GROUP BY mdi.code,cdc.change_id HAVING useNum > 0 and useNum is not null UNION ALL @@ -345,7 +345,7 @@ - GROUP BY mdi.code,cd.order_id + GROUP BY mdi.code,cdc.order_id HAVING useNum > 0 and useNum is not null UNION ALL diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml index f52356d..934018c 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml @@ -1098,6 +1098,13 @@ ELSE '' END, '' ) 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, COALESCE(cdcd.num, 0) - COALESCE(cdcd.real_num, 0) AS outNum, moi.pro_code AS proCode, @@ -1111,6 +1118,8 @@ LEFT JOIN tool_ledger b ON cdcd.devType = '1' 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}