diff --git a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/BackApplyInfo.java b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/BackApplyInfo.java index 101a712..18de002 100644 --- a/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/BackApplyInfo.java +++ b/sgzb-api/sgzb-api-system/src/main/java/com/bonus/sgzb/base/api/domain/BackApplyInfo.java @@ -284,7 +284,21 @@ public class BackApplyInfo extends BaseEntity { /** * 已完成的退料数量 */ - private String finishedBackNum; + private float finishedBackNum; + + /** + * 未完成的退料数量 + */ + private float inCompletedBackNum; + + /** + * 此协议号最大剩余退料数 (前台显示 slt_agreement_info 表减去 back_check_details) + */ + private float maxBackNum; + /** + * 此协议号最大剩余退料数 (后台计算,只查 slt_agreement_info 表) + */ + private float maxBackNumBackend; @ApiModelProperty(value = "详情id和数量") private String detailsIdByNum; diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/BackReceiveController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/BackReceiveController.java index 2cbb035..18f064f 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/BackReceiveController.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/controller/BackReceiveController.java @@ -190,7 +190,7 @@ public class BackReceiveController extends BaseController { } } - @Log(title = "退料接收-结束任务", businessType = BusinessType.MATERIAL) + //@Log(title = "退料接收-结束任务", businessType = BusinessType.MATERIAL) @PreventRepeatSubmit @PostMapping("endBack") public AjaxResult endBack(@RequestBody BackApplyInfo record) { @@ -199,7 +199,7 @@ public class BackReceiveController extends BaseController { if (res > 0) { return AjaxResult.success("接收成功"); } else { - return AjaxResult.error("接收失败"); + return AjaxResult.error("未接收到数据"); } } catch (Exception e) { throw new RuntimeException(e); diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/BackReceiveMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/BackReceiveMapper.java index f5113b0..6f35191 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/BackReceiveMapper.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/mapper/BackReceiveMapper.java @@ -30,9 +30,9 @@ public interface BackReceiveMapper { * @param record 查询条件 * @return List */ - List receiveView(BackApplyInfo record); + List receiveView4FrontEnd(BackApplyInfo record); - List receiveView2(BackApplyInfo record); + List receiveView4Backend(BackApplyInfo record); /** * 添加接收数据back_check_details diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java index c90173f..0d881a6 100644 --- a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/app/service/impl/BackReceiveServiceImpl.java @@ -13,6 +13,7 @@ import com.bonus.sgzb.common.core.enums.TaskTypeEnum; import com.bonus.sgzb.common.core.utils.DateUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.text.SimpleDateFormat; @@ -43,7 +44,7 @@ public class BackReceiveServiceImpl implements BackReceiveService { @Override public List receiveView(BackApplyInfo record) { - List backApplyInfoList = backReceiveMapper.receiveView(record); + List backApplyInfoList = backReceiveMapper.receiveView4FrontEnd(record); int count1 = 0; int count2 = 0; for (BackApplyInfo backApplyInfo : backApplyInfoList) { @@ -150,6 +151,7 @@ public class BackReceiveServiceImpl implements BackReceiveService { int res = 0; // try { int taskId = record.getTaskId(); + int maxBackNumBackEnd = 0; int passNum = 0; int maintenanceNum = 0; int scrapNum = 0; @@ -167,7 +169,33 @@ public class BackReceiveServiceImpl implements BackReceiveService { throw new RuntimeException("该退料单已完成退料"); } //修改任务状态 - List list = backReceiveMapper.receiveView2(record); + List list = backReceiveMapper.receiveView4Backend(record); + if (!CollectionUtils.isEmpty(list)) { + for (BackApplyInfo backApplyInfo : list) { + maxBackNumBackEnd += (int) backApplyInfo.getMaxBackNumBackend(); + } + } + List hgList = backReceiveMapper.getHgList(record); + if (hgList != null && hgList.size() > 0) { + for (BackApplyInfo bi : hgList) { + passNum += bi.getBackNum(); + } + } + List wxList = backReceiveMapper.getWxList(record); + if (wxList != null && wxList.size() > 0) { + for (BackApplyInfo bi : wxList) { + maintenanceNum += bi.getBackNum(); + } + } + List bfList = backReceiveMapper.getBfList(record); + if (bfList != null && bfList.size() > 0) { + for (BackApplyInfo bi : bfList) { + scrapNum += bi.getBackNum(); + } + } + if (maxBackNumBackEnd < passNum + maintenanceNum + scrapNum) { + throw new RuntimeException("提交退料数量大于最大退料数,可能您的退料已被别人退掉了"); + } boolean allZeros = list.stream().allMatch(n -> Double.valueOf(n.getNum()).intValue() == 0); if (allZeros) { res = updateTaskStatus(taskId, 40); @@ -177,7 +205,6 @@ public class BackReceiveServiceImpl implements BackReceiveService { } //更加退料接收的数据创建下一步流程 //合格的插入入库记录input_apply_details,修改库存ma_type,修改机具状态 - List hgList = backReceiveMapper.getHgList(record); if (hgList != null && hgList.size() > 0) { res = insertIad(hgList); if (res == 0) { @@ -200,12 +227,8 @@ public class BackReceiveServiceImpl implements BackReceiveService { if (res == 0) { throw new RuntimeException("ma_machines"); } - for (BackApplyInfo bi : hgList) { - passNum += bi.getBackNum(); - } } //维修的创建维修任务,插入任务协议表 - List wxList = backReceiveMapper.getWxList(record); if (wxList != null && wxList.size() > 0) { //插入任务表tm_task int newTaskId = insertTt(wxList, TaskTypeEnum.MAINTENANCE_TASK.getCode(), record.getCreateBy()); @@ -213,13 +236,8 @@ public class BackReceiveServiceImpl implements BackReceiveService { res = insertTta(newTaskId, wxList); //插入维修记录表repair_apply_details res = insertRad(newTaskId, wxList); - for (BackApplyInfo bi : wxList) { - maintenanceNum += bi.getBackNum(); - } } //待报废的创建报废任务,插入任务协议表 - - List bfList = backReceiveMapper.getBfList(record); if (bfList != null && bfList.size() > 0) { //插入任务表tm_task int newTaskId = insertTt(bfList, TaskTypeEnum.SCRAP_TASK.getCode(), record.getCreateBy()); @@ -227,9 +245,6 @@ public class BackReceiveServiceImpl implements BackReceiveService { res = insertTta(newTaskId, bfList); //插入维修记录表scrap_apply_details res = insertSad(newTaskId, bfList); - for (BackApplyInfo bi : bfList) { - scrapNum += bi.getBackNum(); - } } List allList = backReceiveMapper.getAllList(record); diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml index a4047b9..c19a859 100644 --- a/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/app/BackReceiveMapper.xml @@ -659,10 +659,11 @@ bai.create_time DESC - SELECT bai.id, bai.task_id as taskId, + bai.back_person as backPerson, tta.agreement_id as agreementId, mt.type_id as modelId, mt2.type_id as typeId, @@ -672,15 +673,22 @@ bad.pre_num as preNum, bad.audit_num as auditNum, bad.status as status, - IFNULL(bad.audit_num,0)-IFNULL(aa.back_num,0) as num, + CASE WHEN ((IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) > (bad.audit_num-IFNULL(bb.finished_back_num,0)-IFNULL(aa.back_num,0))) + THEN (bad.audit_num-IFNULL(bb.finished_back_num,0)-IFNULL(aa.back_num,0)) + ELSE + (CASE WHEN (IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) < 0 THEN 0 ELSE (IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) END) + END as max_back_num, + IFNULL(aa.back_num,0) as in_completed_back_num, + IFNULL(bb.finished_back_num, 0) as finished_back_num, mt.manage_type as manageType, - bb.finished_back_num, mtk.user_id, CONCAT('NSJJ',mt.`code`,mt.model_code) as `code` FROM back_apply_details bad LEFT JOIN back_apply_info bai on bai.id=bad.parent_id LEFT JOIN tm_task_agreement tta on tta.task_id=bai.task_id + LEFT JOIN (select agreement_id,type_id, sum(IFNULL(num, 0)) as num from slt_agreement_info where status=0 + group by agreement_id,type_id) sai on tta.agreement_id=sai.agreement_id and sai.type_id=bad.type_id LEFT JOIN ma_type mt on mt.type_id=bad.type_id LEFT JOIN ma_type mt2 ON mt2.type_id=mt.parent_id LEFT JOIN ma_type_keeper mtk on mt.type_id=mtk.type_id @@ -691,7 +699,7 @@ FROM back_check_details WHERE - parent_id=#{id} + parent_id=#{id} and is_finished is null GROUP BY type_id ) aa on aa.typeId=bad.type_id LEFT JOIN ( @@ -714,7 +722,7 @@ - SELECT bai.id, bai.task_id as taskId, @@ -727,38 +735,44 @@ bad.pre_num as preNum, bad.audit_num as auditNum, bad.status as status, - IFNULL(bad.audit_num,0)-IFNULL(aa.back_num,0) as num, + CASE WHEN ((IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) > (bad.audit_num-IFNULL(bb.finished_back_num,0)-IFNULL(aa.back_num,0))) + THEN (bad.audit_num-IFNULL(bb.finished_back_num,0)-IFNULL(aa.back_num,0)) + ELSE + (CASE WHEN (IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) < 0 THEN 0 ELSE (IFNULL(sai.num, 0)-IFNULL(aa.back_num,0)) END) + END as num, + IFNULL(sai.num, 0) as max_back_num_backend, mt.manage_type as manageType, - bb.finished_back_num, mtk.user_id, CONCAT('NSJJ',mt.`code`,mt.model_code) as `code` FROM back_apply_details bad LEFT JOIN back_apply_info bai on bai.id=bad.parent_id LEFT JOIN tm_task_agreement tta on tta.task_id=bai.task_id + LEFT JOIN (select agreement_id,type_id, sum(IFNULL(num, 0)) as num from slt_agreement_info where status=0 + group by agreement_id,type_id) sai on tta.agreement_id=sai.agreement_id and sai.type_id=bad.type_id LEFT JOIN ma_type mt on mt.type_id=bad.type_id LEFT JOIN ma_type mt2 ON mt2.type_id=mt.parent_id LEFT JOIN ma_type_keeper mtk on mt.type_id=mtk.type_id LEFT JOIN ( - SELECT - type_id as typeId, - SUM(IFNULL(back_num,0)) as back_num - FROM - back_check_details - WHERE - parent_id=#{parentId} - GROUP BY type_id - ) aa on aa.typeId=bad.type_id + SELECT + type_id as typeId, + SUM(IFNULL(back_num,0)) as back_num + FROM + back_check_details + WHERE + parent_id=#{parentId} and is_finished is null + GROUP BY type_id + ) aa on aa.typeId=bad.type_id LEFT JOIN ( - SELECT - type_id as typeId, - SUM(IFNULL(back_num,0)) as finished_back_num - FROM - back_check_details - WHERE - parent_id=#{parentId} and is_finished = 1 - GROUP BY type_id - ) bb on bb.typeId=bad.type_id + SELECT + type_id as typeId, + SUM(IFNULL(back_num,0)) as finished_back_num + FROM + back_check_details + WHERE + parent_id=#{id} and is_finished = 1 + GROUP BY type_id + ) bb on bb.typeId=bad.type_id WHERE bai.id=#{parentId}