diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java index 24057479..c41cc907 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/controller/BackApplyInfoController.java @@ -17,7 +17,9 @@ import com.bonus.material.back.domain.BackApplyDetails; import com.bonus.material.back.domain.HandlingOrder; import com.bonus.material.back.domain.MaCode; import com.bonus.material.back.domain.vo.*; +import com.bonus.material.basic.domain.BmUnit; import com.bonus.material.common.annotation.PreventRepeatSubmit; +import com.bonus.material.task.mapper.TmTaskMapper; import com.bonus.system.api.RemoteFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -52,6 +54,9 @@ public class BackApplyInfoController extends BaseController { @Resource private ArchivesService archivesService; + @Resource + private TmTaskMapper taskMapper; + /** * 查询退料任务列表 */ @@ -365,6 +370,11 @@ public class BackApplyInfoController extends BaseController { @PostMapping("/submitBackApply") public AjaxResult submitBackApply(@RequestBody BackApplyInfo backApplyInfo) { try { + BmUnit unit = taskMapper.selectBmUnitInfo(backApplyInfo); + if (unit != null && unit.getTypeId() == 1731L) { + // 班组退料提交 + return backApplyInfoService.submitBzBackApply(backApplyInfo); + } return backApplyInfoService.submitBackApply(backApplyInfo); } catch (Exception e) { return error("系统错误, " + e.getMessage()); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/mapper/BackApplyInfoMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/mapper/BackApplyInfoMapper.java index aeaed0d0..2ee5cb2c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/mapper/BackApplyInfoMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/mapper/BackApplyInfoMapper.java @@ -475,4 +475,18 @@ public interface BackApplyInfoMapper { * @return */ List getTbList(BackApplyInfo bean); + + /** + * 查看机具在用数据 + * @param applyInfo + * @return + */ + List getUserList(BackApplyInfo applyInfo); + + /** + * 查看材料站在用数据 + * @param applyInfo + * @return + */ + List getClzUserList(BackApplyInfo applyInfo); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java index 5fa6cb9c..d59d6cc7 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/IBackApplyInfoService.java @@ -217,5 +217,12 @@ public interface IBackApplyInfoService { * @return */ AjaxResult getSort(HandlingOrder bean); + + /** + * 班组退料提交 + * @param backApplyInfo + * @return + */ + AjaxResult submitBzBackApply(BackApplyInfo backApplyInfo); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java index 7e18d9bc..3c540b4e 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java @@ -932,26 +932,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { if (backApplyInfo.getUnitId() == null || backApplyInfo.getProId() == null) { return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空"); } - BmUnit queryUnitInfo = bmUnitMapper.selectBmUnitByUnitId(backApplyInfo.getUnitId()); - if (queryUnitInfo.getTypeId() == null) { - throw new ServiceException("单位类型为空"); - } - // 如果单位类型为班组,则查询该班在机具签署✍️的协议ID - LeaseOutDetails leaseOutDetail = new LeaseOutDetails(); - if (queryUnitInfo.getTypeId() == 1731L) { - // 查询班组挂靠的项目部协议信息 - leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( - Math.toIntExact(backApplyInfo.getUnitId()), - Math.toIntExact(backApplyInfo.getProId()) - ); - if (leaseOutDetail == null) { - throw new ServiceException("项目部协议信息查询为空"); - } - // 把后续流程设置为项目部的协议进行处理 - backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId()); - backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId()); - } - List codeList = new ArrayList<>(); // 根据传入的id查询退料申请信息 List applyInfoList = backApplyInfoMapper.selectBackDetails(backApplyInfo); @@ -986,14 +966,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { Long agreementId = backApplyInfoMapper.selectAgreementId(backApplyInfo); // 先查第四层类型 backApplyInfo.setAgreementId(agreementId); - // 如果单位类型为班组,则查询该班在机具签署✍️的协议ID - if (queryUnitInfo.getTypeId() == 1731L) { - // 把后续流程设置为项目部的协议进行处理 - if (leaseOutDetail.getProjectUnitAgreementId() != null) { - backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId()); - backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId()); - } - } List listL4 = mapper.getUseTypeTreeL4(backApplyInfo); if (CollectionUtils.isNotEmpty(applyDetails)) { for (BackApplyDetails applyDetail : applyDetails) { @@ -1013,12 +985,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { } else { return AjaxResult.error("退料物资为空,无法进行提交"); } - // 判断是否为班组退料,将退料同步材料站以及项目部 - boolean isClz = false; - BmUnit unit = taskMapper.selectBmUnitInfo(backApplyInfo); - if (unit != null && unit.getTypeId() == 1731L) { - isClz = true; - } // 设置更新信息, backApplyInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); backApplyInfo.setUpdateTime(DateUtils.getNowDate()); @@ -1037,95 +1003,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { Long newTaskId = insertTt(SecurityUtils.getLoginUser().getSysUser().getNickName(), backApplyInfo.getRemark(), backApplyInfo.getTaskId()); // 插入协议任务表 result += insertTta(newTaskId, applyInfoList); - MaterialBackApplyInfo materialBackApplyInfo = new MaterialBackApplyInfo(); - BmAgreementInfo bmAgreementInfo = new BmAgreementInfo(); - bmAgreementInfo.setUnitId(backApplyInfo.getUnitId()); - bmAgreementInfo.setProjectId(backApplyInfo.getProId()); - BmAgreementInfo info = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo); - BackApplyInfo backApplyInfo4 = new BackApplyInfo(); - if (isClz) { - int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId()); - String code = genderClzTaskCode(thisMonthMaxOrder); - TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId(), - BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), null, thisMonthMaxOrder + 1, code); - tmTask.setCreateTime(DateUtils.getNowDate()); - String createBy = SecurityUtils.getLoginUser().getSysUser().getNickName(); - tmTask.setCreateBy(createBy); - materialBackApplyInfo.setCode(code); - materialBackApplyInfo.setCreateBy(createBy); - materialBackApplyInfo.setCreateTime(DateUtils.getNowDate()); - // 保存退料信息到 tm_task 表中 - result += taskMapper.insertTmTask(tmTask); - if (result > 0) { - TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), info.getAgreementId()); - tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); - tmTaskAgreement.setCreateBy(createBy); - taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); - materialBackApplyInfo.setTaskId(tmTask.getTaskId()); - materialBackApplyInfo.setBackStyle("2"); - materialBackApplyInfo.setStatus("2"); - BackApplyInfo backApplyInfo1 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId()); - if (backApplyInfo1 != null) { - materialBackApplyInfo.setBackPerson(StringUtils.isNotBlank(backApplyInfo1.getBackPerson()) ? backApplyInfo1.getBackPerson() : ""); - materialBackApplyInfo.setPhone(StringUtils.isNotBlank(backApplyInfo1.getPhone()) ? backApplyInfo1.getPhone() : ""); - } - result += materialBackInfoMapper.insertBackApplyInfo(materialBackApplyInfo); - if (CollectionUtils.isNotEmpty(applyDetails)) { - for (BackApplyDetails applyInfo : applyDetails) { - MaterialBackApplyDetails details = new MaterialBackApplyDetails(); - details.setCode(code); - details.setParentId(materialBackApplyInfo.getId()); - details.setPreNum(applyInfo.getPreNum()); - details.setAuditNum(applyInfo.getPreNum()); - details.setStatus(String.valueOf(BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus())); - details.setCreateBy(createBy); - details.setCreateTime(DateUtils.getNowDate()); - details.setTypeId(applyInfo.getTypeId()); - // 保存退料详情 - result += materialBackInfoMapper.insertBackApplyDetails(details); - } - } - } - // 材料站对分公司建立退料任务 - int backMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId()); - String backCode = genderTaskCode(backMonthMaxOrder); - TmTask newTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(), - BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), - null,backMonthMaxOrder + 1, backCode); - newTask.setCreateTime(DateUtils.getNowDate()); - newTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); - backApplyInfo4.setCode(backCode); - backApplyInfo4.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); - backApplyInfo4.setCreateTime(DateUtils.getNowDate()); - // 保存退料信息到 tm_task 表中 - result += taskMapper.insertTmTask(newTask); - if (result > 0) { - // 根据单位和工程id查询项目部关联协议id - BackApplyInfo backApplyInfo3 = backApplyInfoMapper.selectInfo(backApplyInfo); - if (backApplyInfo3 != null) { - TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTask.getTaskId(), backApplyInfo3.getAgreementId()); - tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); - tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); - taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); - } - backApplyInfo4.setTaskId(newTask.getTaskId()); - BackApplyInfo backApplyInfo2 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId()); - if (backApplyInfo2 != null) { - backApplyInfo4.setBackPerson(StringUtils.isNotBlank(backApplyInfo2.getBackPerson()) ? backApplyInfo2.getBackPerson() : ""); - backApplyInfo4.setPhone(StringUtils.isNotBlank(backApplyInfo2.getPhone()) ? backApplyInfo2.getPhone() : ""); - backApplyInfo4.setBackStyle("2"); - } - result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo4); - } - // 保存退料详情 - if (CollectionUtils.isNotEmpty(applyDetails)) { - for (BackApplyDetails applyDetail : applyDetails) { - // 保存退料详情 - applyDetail.setAuditNum(applyDetail.getPreNum()); - result += backApplyInfoMapper.insertBackApplyDetails(applyDetail); - } - } - } for (String typeId : typeIdList) { // 查询待维修的机具设备 backApplyInfo.setTypeId(typeId); @@ -1136,50 +1013,11 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { // 更新结算表 List allList = backApplyInfoMapper.selectBackDetails(backApplyInfo); if (CollectionUtils.isNotEmpty(allList)) { - int res = updateSlt4Bean(isClz,backApplyInfo, allList); + int res = updateSlt4Bean(backApplyInfo, allList); // 检查机具是否领料 if (res == 0) { throw new RuntimeException("该机具未被领料使用"); } - List clzList = new ArrayList<>(); - List xmList = new ArrayList<>(); - if (isClz) { - for (BackApplyInfo applyInfo : allList) { - applyInfo.setAgreementId(info.getAgreementId()); - MaterialBackApplyDetails details = new MaterialBackApplyDetails(); - details.setParentId(materialBackApplyInfo.getId()); - details.setTypeId(Long.parseLong(typeId)); - details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); - details.setCreateTime(DateUtils.getNowDate()); - details.setPreNum(applyInfo.getBackNum()); - details.setStatus("0"); - details.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null); - details.setIsFinished(1); - result += materialBackInfoMapper.insertCheckDetails(details); - // 查询材料站同步数据 - clzList = backApplyInfoMapper.selectClzList(details); - BackApplyDetails backApplyDetails = new BackApplyDetails(); - backApplyDetails.setParentId(backApplyInfo4.getId()); - backApplyDetails.setTypeId(Long.parseLong(typeId)); - backApplyDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); - backApplyDetails.setCreateTime(DateUtils.getNowDate()); - backApplyDetails.setPreNum(applyInfo.getBackNum()); - backApplyDetails.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null); - backApplyDetails.setStatus("0"); - backApplyDetails.setIsFinished(1); - result += backApplyInfoMapper.insertCheckDetails(backApplyDetails); - // 查询项目部同步数据 - //xmList = backApplyInfoMapper.selectXmList(backApplyDetails); - } - res = updateSlt4BeanClz(materialBackApplyInfo, clzList); - if (res == 0) { - throw new RuntimeException("同步材料站结算出错"); - } - /*res = updateSlt4BeanXm(backApplyInfo4, xmList); - if (res == 0) { - throw new RuntimeException("同步项目部结算出错"); - }*/ - } } // 完成退料部分,更新 back_check_details finishBackCheckDetails(backApplyInfo); @@ -2193,6 +2031,251 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { } } + /** + * 班组退料提交 + * @param backApplyInfo + * @return + */ + @Override + public AjaxResult submitBzBackApply(BackApplyInfo backApplyInfo) { + if (backApplyInfo.getUnitId() == null || backApplyInfo.getProId() == null) { + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空"); + } + BmUnit queryUnitInfo = bmUnitMapper.selectBmUnitByUnitId(backApplyInfo.getUnitId()); + if (queryUnitInfo.getTypeId() == null) { + throw new ServiceException("单位类型为空"); + } + // 如果单位类型为班组,则查询该班在机具签署✍️的协议ID + LeaseOutDetails leaseOutDetail = new LeaseOutDetails(); + if (queryUnitInfo.getTypeId() == 1731L) { + // 查询班组挂靠的项目部协议信息 + leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( + Math.toIntExact(backApplyInfo.getUnitId()), + Math.toIntExact(backApplyInfo.getProId()) + ); + if (leaseOutDetail == null) { + throw new ServiceException("项目部协议信息查询为空"); + } + // 把后续流程设置为项目部的协议进行处理 + backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId()); + backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId()); + } + SelectDto dto = new SelectDto(); + dto.setProId(backApplyInfo.getProId()).setUnitId(Math.toIntExact(backApplyInfo.getUnitId())); + List list = mapper.getAgreementInfoByIdBack(dto); + + List codeList = new ArrayList<>(); + // 根据传入的id查询退料申请信息 + List applyInfoList = backApplyInfoMapper.selectBackDetails(backApplyInfo); + // 将applyInfoList中状态不为在用的数据收集到新集合中 + if (CollectionUtils.isNotEmpty(applyInfoList)) { + for (BackApplyInfo applyInfo : applyInfoList) { + // 根据maId查询设备是否处于在用状态(需要同时查询机具和材料站) + if (applyInfo.getMaId() != null) { + List infoList = backApplyInfoMapper.getUserList(applyInfo); + List clzList = backApplyInfoMapper.getClzUserList(applyInfo); + if (CollectionUtils.isEmpty(infoList) && CollectionUtils.isEmpty(clzList)) { + codeList.add(applyInfo); + } + } + } + } + if (CollectionUtils.isNotEmpty(codeList)) { + StringBuilder msgBuilder = new StringBuilder("您所选择的编码设备编号"); + for (int i = 0; i < codeList.size(); i++) { + String maCode = codeList.get(i).getMaCode(); + msgBuilder.append(maCode); + if (i < codeList.size() - 1) { + msgBuilder.append(", "); + } + } + msgBuilder.append("已被他人完成退料,请编辑后重新提交!"); + String msg = msgBuilder.toString(); + msg = msg.replaceAll("\n", ""); + return AjaxResult.error(msg); + } + int result = 0; + //先查询退料详情信息 + List applyDetails = backApplyInfoMapper.selectBackApplyDetailsListByTaskId(backApplyInfo); + if (CollectionUtils.isEmpty(applyDetails)) { + return AjaxResult.error("退料物资为空,无法进行提交"); + } + // 设置更新信息, + backApplyInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + backApplyInfo.setUpdateTime(DateUtils.getNowDate()); + backApplyInfo.setTaskStatus(BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus()); + // 更新任务表及退料申请表状态 + result += updateTaskAndBackInfo(backApplyInfo); + if (result > 0 && CollectionUtils.isNotEmpty(applyInfoList)) { + for (BackApplyInfo applyInfo : applyInfoList) { + // 查询该设备是否存在于材料站中 + List clzList = backApplyInfoMapper.getClzUserList(applyInfo); + if (CollectionUtils.isEmpty(clzList)) { + result += machineMapper.updateStatus(applyInfo.getMaId(), MaMachineStatusEnum.BACK_REPAIR.getStatus()); + } + } + // 获取applyInfoList的typeId并生成集合 + List typeIdList = applyInfoList.stream() + .map(BackApplyInfo::getTypeId).distinct() + .collect(Collectors.toList()); + // 插入任务表 + Long newTaskId = insertTt(SecurityUtils.getLoginUser().getSysUser().getNickName(), backApplyInfo.getRemark(), backApplyInfo.getTaskId()); + // 插入协议任务表 + result += insertTta(newTaskId, applyInfoList); + MaterialBackApplyInfo materialBackApplyInfo = new MaterialBackApplyInfo(); + BmAgreementInfo bmAgreementInfo = new BmAgreementInfo(); + bmAgreementInfo.setUnitId(backApplyInfo.getUnitId()); + bmAgreementInfo.setProjectId(backApplyInfo.getProId()); + BmAgreementInfo info = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo); + BackApplyInfo backApplyInfo4 = new BackApplyInfo(); + + int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId()); + String code = genderClzTaskCode(thisMonthMaxOrder); + TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId(), + BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), null, thisMonthMaxOrder + 1, code); + tmTask.setCreateTime(DateUtils.getNowDate()); + String createBy = SecurityUtils.getLoginUser().getSysUser().getNickName(); + tmTask.setCreateBy(createBy); + materialBackApplyInfo.setCode(code); + materialBackApplyInfo.setCreateBy(createBy); + materialBackApplyInfo.setCreateTime(DateUtils.getNowDate()); + // 保存退料信息到 tm_task 表中 + result += taskMapper.insertTmTask(tmTask); + if (result > 0) { + TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), info.getAgreementId()); + tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); + tmTaskAgreement.setCreateBy(createBy); + taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); + materialBackApplyInfo.setTaskId(tmTask.getTaskId()); + materialBackApplyInfo.setBackStyle("2"); + materialBackApplyInfo.setStatus("2"); + BackApplyInfo backApplyInfo1 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId()); + if (backApplyInfo1 != null) { + materialBackApplyInfo.setBackPerson(StringUtils.isNotBlank(backApplyInfo1.getBackPerson()) ? backApplyInfo1.getBackPerson() : ""); + materialBackApplyInfo.setPhone(StringUtils.isNotBlank(backApplyInfo1.getPhone()) ? backApplyInfo1.getPhone() : ""); + } + result += materialBackInfoMapper.insertBackApplyInfo(materialBackApplyInfo); + if (CollectionUtils.isNotEmpty(applyDetails)) { + for (BackApplyDetails applyInfo : applyDetails) { + MaterialBackApplyDetails details = new MaterialBackApplyDetails(); + details.setCode(code); + details.setParentId(materialBackApplyInfo.getId()); + details.setPreNum(applyInfo.getPreNum()); + details.setAuditNum(applyInfo.getPreNum()); + details.setStatus(String.valueOf(BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus())); + details.setCreateBy(createBy); + details.setCreateTime(DateUtils.getNowDate()); + details.setTypeId(applyInfo.getTypeId()); + // 保存退料详情 + result += materialBackInfoMapper.insertBackApplyDetails(details); + } + } + } + // 材料站对分公司建立退料任务 + int backMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId()); + String backCode = genderTaskCode(backMonthMaxOrder); + TmTask newTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(), + BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), + null, backMonthMaxOrder + 1, backCode); + newTask.setCreateTime(DateUtils.getNowDate()); + newTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + backApplyInfo4.setCode(backCode); + backApplyInfo4.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + backApplyInfo4.setCreateTime(DateUtils.getNowDate()); + // 保存退料信息到 tm_task 表中 + result += taskMapper.insertTmTask(newTask); + if (result > 0) { + // 根据单位和工程id查询项目部关联协议id + BackApplyInfo backApplyInfo3 = backApplyInfoMapper.selectInfo(backApplyInfo); + if (backApplyInfo3 != null) { + TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTask.getTaskId(), backApplyInfo3.getAgreementId()); + tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); + tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); + } + backApplyInfo4.setTaskId(newTask.getTaskId()); + BackApplyInfo backApplyInfo2 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId()); + if (backApplyInfo2 != null) { + backApplyInfo4.setBackPerson(StringUtils.isNotBlank(backApplyInfo2.getBackPerson()) ? backApplyInfo2.getBackPerson() : ""); + backApplyInfo4.setPhone(StringUtils.isNotBlank(backApplyInfo2.getPhone()) ? backApplyInfo2.getPhone() : ""); + backApplyInfo4.setBackStyle("2"); + } + result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo4); + } + // 保存退料详情 + if (CollectionUtils.isNotEmpty(applyDetails)) { + for (BackApplyDetails applyDetail : applyDetails) { + // 保存退料详情 + applyDetail.setAuditNum(applyDetail.getPreNum()); + result += backApplyInfoMapper.insertBackApplyDetails(applyDetail); + } + } + for (String typeId : typeIdList) { + // 查询待维修的机具设备 + backApplyInfo.setTypeId(typeId); + List wxList = backApplyInfoMapper.getWxList(backApplyInfo); + if (CollectionUtils.isNotEmpty(wxList)) { + // 插入维修记录表 + result += insertRad(newTaskId, wxList); + // 更新结算表 + List allList = backApplyInfoMapper.selectBackDetails(backApplyInfo); + if (CollectionUtils.isNotEmpty(allList)) { + int res = updateSlt4Bean(backApplyInfo, allList); + // 检查机具是否领料 + if (res == 0) { + throw new RuntimeException("该机具未被领料使用"); + } + List clzList = new ArrayList<>(); + List xmList = new ArrayList<>(); + for (BackApplyInfo applyInfo : allList) { + applyInfo.setAgreementId(info.getAgreementId()); + MaterialBackApplyDetails details = new MaterialBackApplyDetails(); + details.setParentId(materialBackApplyInfo.getId()); + details.setTypeId(Long.parseLong(typeId)); + details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + details.setCreateTime(DateUtils.getNowDate()); + details.setPreNum(applyInfo.getBackNum()); + details.setStatus("0"); + details.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null); + details.setIsFinished(1); + result += materialBackInfoMapper.insertCheckDetails(details); + // 查询材料站同步数据 + clzList = backApplyInfoMapper.selectClzList(details); + BackApplyDetails backApplyDetails = new BackApplyDetails(); + backApplyDetails.setParentId(backApplyInfo4.getId()); + backApplyDetails.setTypeId(Long.parseLong(typeId)); + backApplyDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + backApplyDetails.setCreateTime(DateUtils.getNowDate()); + backApplyDetails.setPreNum(applyInfo.getBackNum()); + backApplyDetails.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null); + backApplyDetails.setStatus("0"); + backApplyDetails.setIsFinished(1); + result += backApplyInfoMapper.insertCheckDetails(backApplyDetails); + // 查询项目部同步数据 + //xmList = backApplyInfoMapper.selectXmList(backApplyDetails); + } + res = updateSlt4BeanClz(materialBackApplyInfo, clzList); + if (res == 0) { + throw new RuntimeException("同步材料站结算出错"); + } + /*res = updateSlt4BeanXm(backApplyInfo4, xmList); + if (res == 0) { + throw new RuntimeException("同步项目部结算出错"); + }*/ + } + // 完成退料部分,更新 back_check_details + finishBackCheckDetails(backApplyInfo); + } + } + // 如果所有操作都成功 + if (result > 0) { + return AjaxResult.success(); + } + } + // 操作失败,返回错误 + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); + } + /** * 关键字搜索 @@ -2232,7 +2315,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { * @param allList * @return */ - private int updateSlt4Bean(Boolean isClz ,BackApplyInfo record, List allList) { + private int updateSlt4Bean(BackApplyInfo record, List allList) { for (BackApplyInfo bean : allList) { List infoList = backApplyInfoMapper.getStlInfo(bean); // 查询是否存在班组数据 @@ -2267,24 +2350,22 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { } } // 非班组退料才同步班组分公司数据 - if (!isClz) { - BigDecimal tbBackNum = bean.getBackNum(); - if (CollectionUtils.isNotEmpty(tbList)) { - for (SltAgreementInfo info : tbList) { - // 获取前端要退数量 - BigDecimal num = info.getBackNum(); - if (tbBackNum.compareTo(num) == 0) { - backApplyInfoMapper.updateStlInfo(info, record); - break; - } else if (tbBackNum.compareTo(num) > 0) { - tbBackNum = tbBackNum.subtract(num); - backApplyInfoMapper.updateStlInfo(info, record); - } else { - BigDecimal many = num.subtract(tbBackNum); - backApplyInfoMapper.updateStlInfoTwo(info, record, tbBackNum); - backApplyInfoMapper.insStlInfoTwo(info, many); - break; - } + BigDecimal tbBackNum = bean.getBackNum(); + if (CollectionUtils.isNotEmpty(tbList)) { + for (SltAgreementInfo info : tbList) { + // 获取前端要退数量 + BigDecimal num = info.getBackNum(); + if (tbBackNum.compareTo(num) == 0) { + backApplyInfoMapper.updateStlInfo(info, record); + break; + } else if (tbBackNum.compareTo(num) > 0) { + tbBackNum = tbBackNum.subtract(num); + backApplyInfoMapper.updateStlInfo(info, record); + } else { + BigDecimal many = num.subtract(tbBackNum); + backApplyInfoMapper.updateStlInfoTwo(info, record, tbBackNum); + backApplyInfoMapper.insStlInfoTwo(info, many); + break; } } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java index 070d96b7..ee88e7a8 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java @@ -1,5 +1,6 @@ package com.bonus.material.common.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.nacos.common.utils.StringUtils; import com.bonus.common.biz.config.DateTimeHelper; import com.bonus.common.biz.domain.*; @@ -10,7 +11,6 @@ import com.bonus.material.back.domain.BackApplyInfo; import com.bonus.material.basic.domain.BmProject; import com.bonus.material.basic.domain.BmUnit; import com.bonus.material.basic.mapper.BmUnitMapper; -import com.bonus.material.clz.domain.lease.MaterialLeaseApplyInfo; import com.bonus.material.clz.service.MaterialLeaseInfoService; import com.bonus.material.common.domain.dto.SelectDto; import com.bonus.material.common.domain.vo.AgreementVo; @@ -526,12 +526,6 @@ public class SelectServiceImpl implements SelectService { } // 如果单位类型为班组,则查询该班在机具签署✍️的协议ID if (queryUnitInfo.getTypeId() == 1731L) { -// List agreementInfos = mapper.getMaterialAgreementInfoByIdBack(new SelectDto().setProId(bean.getProId()).setUnitId(Math.toIntExact(queryUnitInfo.getUnitId()))); -// if (CollectionUtils.isNotEmpty(agreementInfos)) { -// bean.setClzAgreementId(Long.valueOf(agreementInfos.get(0).getAgreementId())); -// } else { -// throw new ServiceException("该班组没有在机具签署✍️的协议"); -// } List clzAgreementInfos = mapper.getAgreementInfoByIdBack(new SelectDto().setProId(bean.getProId()).setUnitId(Math.toIntExact(bean.getUnitId()))); // 如果在材料站该单位有签署协议 if (CollectionUtils.isNotEmpty(clzAgreementInfos)) { @@ -542,9 +536,27 @@ public class SelectServiceImpl implements SelectService { } } + Map mergedMap = new HashMap<>(); // 先查第四层类型 listL4 = mapper.getUseTypeTreeL4(bean); if (CollectionUtils.isNotEmpty(listL4)) { + // 将listL4中typeId相同数据进行合并,数量相加 + for (TypeTreeNode item : listL4) { + Long typeId = item.getTypeId(); + if (mergedMap.containsKey(typeId)) { + // 若存在,则将数量累加 + TypeTreeNode existingItem = mergedMap.get(typeId); + existingItem.setNum(existingItem.getNum().add(item.getNum())); + } else { + // 若不存在,则将当前对象放入Map + TypeTreeNode newItem = new TypeTreeNode(); + // 复制属性 + BeanUtil.copyProperties(item, newItem); + mergedMap.put(typeId, newItem); + } + } + // 将Map中的值转换为List + listL4 = new ArrayList<>(mergedMap.values()); List list4ParentIds = listL4.stream().map(TypeTreeNode::getParentId).collect(Collectors.toList()); // 根据第四层parentId 查第三层类型 listL3 = mapper.getUseTypeTreeL3(list4ParentIds); diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml index d6a1e9e7..943e8bdb 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/back/BackApplyInfoMapper.xml @@ -1460,4 +1460,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by start_time asc + + + +