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 9dd823f7..44b2c491 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 @@ -577,4 +577,11 @@ public interface BackApplyInfoMapper { * @return */ SltAgreementInfo getClzUseInfoList(@Param("info") MaCodeVo maCodeVo, @Param("agreementIds") List listAgreement); + + /** + * 查询项目部在用数据 + * @param bean + * @return + */ + List getXmInfoList(BackApplyInfo bean); } 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 ba28a879..a3e821fc 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 @@ -160,8 +160,8 @@ public class SelectServiceImpl implements SelectService { return AjaxResult.success(bmProjects); } - Long deptId = typeService.getUserDeptId(); - bmProject.setDeptId(deptId); + /*Long deptId = typeService.getUserDeptId(); + bmProject.setDeptId(deptId);*/ // // 获取登陆用户的组织ID // Long thisLoginUserDeptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); // if (null == thisLoginUserDeptId || 0 == thisLoginUserDeptId) { diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/DirectRotationController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/DirectRotationController.java index 9fb6e404..2f431e00 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/DirectRotationController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/controller/DirectRotationController.java @@ -11,6 +11,7 @@ import com.bonus.material.basic.domain.BmUnit; import com.bonus.material.common.annotation.PreventRepeatSubmit; import com.bonus.material.ma.domain.*; import com.bonus.material.ma.service.DirectRotationService; +import com.bonus.material.ma.service.ITypeService; import com.bonus.material.settlement.domain.SltAgreementInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -37,6 +38,9 @@ public class DirectRotationController extends BaseController { @Resource(name = "directRotationService") private DirectRotationService service; + @Resource + private ITypeService typeService; + /** * 根据协议Id查询在用数据 */ @@ -157,6 +161,8 @@ public class DirectRotationController extends BaseController { @ApiOperation(value = "直转提交") @PostMapping("/submitNew") public AjaxResult submitNew(@RequestBody DirectApplyInfoDetails directApplyInfoDetails) { + Long deptId = typeService.getUserDeptId(); + directApplyInfoDetails.getDirectApplyInfo().setCompanyId(deptId); return service.submitNew(directApplyInfoDetails); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyDetails.java index 677cabc4..42dca93a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyDetails.java @@ -1,6 +1,7 @@ package com.bonus.material.ma.domain; import com.bonus.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -64,4 +65,17 @@ public class DirectApplyDetails extends BaseEntity { * 领料协议id */ private Long leaseAgreementId; + + @ApiModelProperty(value = "协议id") + private Long agreementId; + + /** + * 是否存在于xmList + */ + private Boolean isXmbUse = false; + + /** + * 是否存在于clzInfoList + */ + private Boolean isClzUse = false; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyInfo.java index 6c2b2303..45624c01 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyInfo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/DirectApplyInfo.java @@ -244,4 +244,7 @@ public class DirectApplyInfo extends BaseEntity { * 审核单位id */ private String auditUnitId; + + @ApiModelProperty(value = "数据所属组织") + private Long companyId; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/DirectRotationMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/DirectRotationMapper.java index 721c0161..35aca694 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/DirectRotationMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/DirectRotationMapper.java @@ -133,4 +133,8 @@ public interface DirectRotationMapper { * @return */ List getCodeList(DirectApplyInfo directApplyInfo); + + List getXmList(DirectApplyDetails applyDetail); + + List getClzList(DirectApplyDetails applyDetail); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/DirectRotationImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/DirectRotationImpl.java index f6d5c64d..1385937e 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/DirectRotationImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/DirectRotationImpl.java @@ -3,6 +3,7 @@ package com.bonus.material.ma.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; +import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.lease.LeaseApplyInfo; import com.bonus.common.biz.domain.lease.LeaseOutDetails; @@ -16,8 +17,18 @@ import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.back.domain.BackApplyDetails; import com.bonus.material.back.domain.BackApplyInfo; import com.bonus.material.back.mapper.BackApplyInfoMapper; +import com.bonus.material.basic.domain.BmAgreementInfo; import com.bonus.material.basic.domain.BmUnit; +import com.bonus.material.basic.mapper.BmAgreementInfoMapper; +import com.bonus.material.clz.domain.back.MaterialBackApplyDetails; +import com.bonus.material.clz.domain.back.MaterialBackApplyInfo; import com.bonus.material.clz.domain.direct.ClzDirectApplyInfo; +import com.bonus.material.clz.domain.lease.MaterialLeaseApplyInfo; +import com.bonus.material.clz.mapper.MaterialBackInfoMapper; +import com.bonus.material.clz.mapper.MaterialLeaseInfoMapper; +import com.bonus.material.common.domain.dto.SelectDto; +import com.bonus.material.common.domain.vo.AgreementVo; +import com.bonus.material.common.mapper.SelectMapper; import com.bonus.material.event.InsertWorkflowEvent; import com.bonus.material.lease.domain.LeaseApplyDetails; import com.bonus.material.lease.mapper.LeaseApplyDetailsMapper; @@ -119,6 +130,18 @@ public class DirectRotationImpl implements DirectRotationService { @Resource private ApplicationEventPublisher applicationEventPublisher; + @Resource + private SelectMapper selectMapper; + + @Resource + private BmAgreementInfoMapper bmAgreementInfoMapper; + + @Resource + private MaterialBackInfoMapper materialBackInfoMapper; + + @Resource + private MaterialLeaseInfoMapper materialLeaseInfoMapper; + @Override public List getUseringData(SltAgreementInfo sltAgreementInfo) { return mapper.getUseringData(sltAgreementInfo); @@ -345,6 +368,31 @@ public class DirectRotationImpl implements DirectRotationService { if (directApplyInfos.getBackAgreementId()==directApplyInfos.getLeaseAgreementId()){ return AjaxResult.error("直转失败,不能转入同单位同工程"); } + // 判断领退料单位是否为班组类型(typeId为1731) + // 查询退料单位类型 + Long backUnitTypeId = leaseApplyInfoMapper.selectUnitTypeByUnitId(Long.valueOf(directApplyInfos.getBackUnitId())); + if (backUnitTypeId != null && backUnitTypeId == 1731L) { + // 查询该班在机具签署✍️的协议ID,查询班组挂靠的项目部协议信息 + LeaseOutDetails backOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( + Math.toIntExact(Long.parseLong(directApplyInfos.getBackUnitId())), + Math.toIntExact(Long.parseLong(directApplyInfos.getBackProId())) + ); + if (backOutDetail == null) { + return AjaxResult.error("退料单位项目部协议信息查询为空"); + } + } + // 查询领料单位类型 + Long leaseUnitTypeId = leaseApplyInfoMapper.selectUnitTypeByUnitId(Long.valueOf(directApplyInfos.getLeaseUnitId())); + if (leaseUnitTypeId != null && leaseUnitTypeId == 1731L) { + // 查询该班在机具签署✍️的协议ID,查询班组挂靠的项目部协议信息 + LeaseOutDetails leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( + Math.toIntExact(Long.parseLong(directApplyInfos.getLeaseUnitId())), + Math.toIntExact(Long.parseLong(directApplyInfos.getLeaseProId())) + ); + if (leaseOutDetail == null) { + return AjaxResult.error("领料单位项目部协议信息查询为空"); + } + } String code = workSiteDirectManageService.genderLeaseCode(); directApplyInfos.setCode(code); directApplyInfos.setCreateTime(new Date()); @@ -372,10 +420,9 @@ public class DirectRotationImpl implements DirectRotationService { int i = workSiteDirectManageService.saveDirectApplyDetails(directApplyDetail); } - //以下走退料、领料方法 SltAgreementInfo sltAgreementInfo = new SltAgreementInfo(); - sltAgreementInfo.setId(Long.valueOf(id)); + sltAgreementInfo.setId((long) id); DirectApplyInfo info = mapper.getInfoById(sltAgreementInfo); BackApplyInfo backApplyInfo = new BackApplyInfo(); if (info != null) { @@ -389,29 +436,171 @@ public class DirectRotationImpl implements DirectRotationService { String codes = genderZzBackTaskCode(thisMonthMaxOrder); TmTask task = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(), BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), - null,thisMonthMaxOrder + 1, codes); + directApplyInfos.getCompanyId(),thisMonthMaxOrder + 1, codes); task.setCreateTime(DateUtils.getNowDate()); task.setCreateBy(SecurityUtils.getUsername()); backApplyInfo.setCode(codes); backApplyInfo.setCreateBy(SecurityUtils.getUsername()); backApplyInfo.setCreateTime(DateUtils.getNowDate()); - backApplyInfo.setDirectId(Long.valueOf(id)); + backApplyInfo.setDirectId((long) id); // 保存退料信息到 tm_task 表中 int result = 0; result = taskMapper.insertTmTask(task); // 新增退料表back_apply_info信息 - result = getBackInfoResult(info, backApplyInfo, task, result); + result = getBackInfoResult(info, backApplyInfo, task, result, directApplyInfos.getCompanyId()); if (result > 0) { // 保存退料详情数据 back_apply_details - result = getBackDetailsResult(backApplyInfo, list, result); + result = getBackDetailsResult(backApplyInfo, list, result, directApplyInfos.getCompanyId()); // 保存退料详情数据 back_check_details - extractedCheckDetails(backApplyInfo, detailById, result); + extractedCheckDetails(backApplyInfo, detailById, result, directApplyInfos.getCompanyId(), null, 1); + // 如果退料单位类型为班组,则需要进行项目部以及材料站数据 + if (backUnitTypeId != null && backUnitTypeId == 1731L) { + // 查询该班在机具签署✍️的协议ID,查询班组挂靠的项目部协议信息 + LeaseOutDetails leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( + Math.toIntExact(Long.parseLong(directApplyInfos.getBackUnitId())), + Math.toIntExact(Long.parseLong(directApplyInfos.getBackProId())) + ); + SelectDto dto = new SelectDto(); + dto.setProjectId(directApplyInfos.getBackProId()).setUnitId(Math.toIntExact(Long.parseLong(directApplyInfos.getBackUnitId()))); + List clzList = selectMapper.getAgreementInfoByIdBack(dto); + for (DirectApplyDetails applyDetail : detailById) { + // 根据项目部及材料站协议查询退料设备是否存在于其中,若不存在,则不用进行退料 + applyDetail.setAgreementId(leaseOutDetail.getProjectUnitAgreementId()); + List xmList = mapper.getXmList(applyDetail); + if (!CollectionUtils.isEmpty(xmList)) { + applyDetail.setIsXmbUse(true); + } + if (CollectionUtils.isNotEmpty(list)) { + applyDetail.setAgreementId(Long.valueOf(clzList.get(0).getAgreementId())); + List clzInfoList = mapper.getClzList(applyDetail); + if (!CollectionUtils.isEmpty(clzInfoList)) { + applyDetail.setIsClzUse(true); + } + } + } + + // 项目部使用 + boolean isXmbUse = false; + // 材料站使用 + boolean isClzUse = false; + // 示例:统计全局是否有至少一条数据满足xmList + isXmbUse = detailById.stream() + .anyMatch(DirectApplyDetails::getIsXmbUse); + + // 示例:统计全局是否有至少一条数据满足clzInfoList + isClzUse = detailById.stream() + .anyMatch(DirectApplyDetails::getIsClzUse); + + // 材料站对分公司建立退料任务 + if (isXmbUse) { + BackApplyInfo backApplyInfo4 = new BackApplyInfo(); + if (info != null) { + backApplyInfo.setAgreementId(Long.valueOf(info.getBackAgreementId())); + backApplyInfo.setBackPerson(info.getBackMan()); + backApplyInfo.setPhone(info.getBackPhone()); + } + int maxOrder = taskMapper.getMonthMaxOrderByDateTwo(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId()); + String ZzCode = genderZzBackTaskCode(maxOrder); + TmTask newTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(), + BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), + directApplyInfos.getCompanyId(),maxOrder + 1, ZzCode); + newTask.setCreateTime(DateUtils.getNowDate()); + newTask.setCreateBy(SecurityUtils.getUsername()); + backApplyInfo4.setCode(ZzCode); + backApplyInfo4.setCreateBy(SecurityUtils.getUsername()); + backApplyInfo4.setCreateTime(DateUtils.getNowDate()); + backApplyInfo4.setDirectId((long) id); + // 保存退料信息到 tm_task 表中 + result = taskMapper.insertTmTask(task); + if (result > 0) { + // 根据单位和工程id查询项目部关联协议id + BackApplyInfo backApplyInfo3 = backApplyInfoMapper.selectInfo(backApplyInfo); + if (backApplyInfo3 != null) { + // 给项目部处理的时候要使用挂靠的项目部协议ID + TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTask.getTaskId(), leaseOutDetail.getProjectUnitAgreementId()); + tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); + tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + tmTaskAgreement.setCompanyId(directApplyInfos.getCompanyId()); + 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"); + backApplyInfo4.setCompanyId(directApplyInfos.getCompanyId()); + } + result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo4); + } + // 保存退料详情数据 back_apply_details + result = getBackDetailsResult(backApplyInfo4, list, result, directApplyInfos.getCompanyId()); + // 保存退料详情数据 back_check_details + extractedCheckDetails(backApplyInfo4, detailById, result, directApplyInfos.getCompanyId(), leaseOutDetail.getProjectUnitAgreementId(), 2); + } + + BmAgreementInfo bmAgreementInfo = new BmAgreementInfo(); + bmAgreementInfo.setUnitId(Long.valueOf(directApplyInfos.getBackUnitId())); + bmAgreementInfo.setProjectId(Long.valueOf(directApplyInfos.getBackProId())); + BmAgreementInfo agreementInfo = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo); + // 材料站建立退料任务 + if (isClzUse) { + MaterialBackApplyInfo materialBackApplyInfo = new MaterialBackApplyInfo(); + int clzMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId()); + String clzCode = genderClzTaskCode(clzMonthMaxOrder); + TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId(), + BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), backApplyInfo.getCompanyId(), clzMonthMaxOrder + 1, clzCode); + tmTask.setCreateTime(DateUtils.getNowDate()); + String createBy = SecurityUtils.getLoginUser().getSysUser().getNickName(); + tmTask.setCreateBy(createBy); + materialBackApplyInfo.setCode(clzCode); + materialBackApplyInfo.setCreateBy(createBy); + materialBackApplyInfo.setCreateTime(DateUtils.getNowDate()); + // 保存退料信息到 tm_task 表中 + result += taskMapper.insertTmTask(tmTask); + if (result > 0) { + TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), agreementInfo.getAgreementId()); + tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); + tmTaskAgreement.setCreateBy(createBy); + tmTaskAgreement.setCompanyId(backApplyInfo.getCompanyId()); + 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(list)) { + for (DirectApplyDetails applyInfo : list) { + MaterialBackApplyDetails details = new MaterialBackApplyDetails(); + details.setCode(clzCode); + details.setParentId(materialBackApplyInfo.getId()); + details.setPreNum(applyInfo.getDirectNum()); + details.setAuditNum(applyInfo.getDirectNum()); + details.setStatus(String.valueOf(BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus())); + details.setCreateBy(createBy); + details.setCreateTime(DateUtils.getNowDate()); + details.setTypeId(Long.valueOf(applyInfo.getTypeId())); + // 保存退料详情 + if (applyInfo.getIsClzUse()) { + result += materialBackInfoMapper.insertBackApplyDetails(details); + } + } + } + // 保存退料详情数据 back_check_details + extractedClzCheckDetails(materialBackApplyInfo, detailById, result, directApplyInfos.getCompanyId(), agreementInfo.getAgreementId()); + } + } + } } // 审核通过,处理转入单位领料逻辑 int maxOrderByDate = tmTaskMapper.getMonthMaxOrderByDateTwo(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId()); String taskCode = genderZzLeaseTaskCode(maxOrderByDate); TmTask tmTask1 = new TmTask(null, TmTaskTypeEnum.TM_TASK_LEASE.getTaskTypeId(), - LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus(),null + LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus(),directApplyInfos.getCompanyId() ,maxOrderByDate + 1, taskCode); tmTask1.setCreateTime(DateUtils.getNowDate()); tmTask1.setCreateBy(SecurityUtils.getUsername()); @@ -419,6 +608,7 @@ public class DirectRotationImpl implements DirectRotationService { TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask1.getTaskId(), Long.valueOf(info.getLeaseAgreementId())); tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); tmTaskAgreement.setCreateBy(SecurityUtils.getUsername()); + tmTaskAgreement.setCompanyId(directApplyInfos.getCompanyId()); taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); /** 设置审批人为默认的董班长 --防止代码冲突 **/ Long peopleId = leaseApplyInfoMapper.getDirectAuditBy(); @@ -430,19 +620,89 @@ public class DirectRotationImpl implements DirectRotationService { applyInfo.setPhone(info.getLeasePhone()); applyInfo.setCreateBy(SecurityUtils.getUsername()); applyInfo.setCreateTime(DateUtils.getNowDate()); - applyInfo.setDeptId(Long.valueOf(id)); + applyInfo.setDeptId((long) id); applyInfo.setDirectId((long) id); + applyInfo.setCompanyId(directApplyInfos.getCompanyId()); /** 设置审批人为默认的董班长 --防止代码冲突 **/ int count = leaseApplyInfoMapper.insertLeaseApplyInfo(applyInfo); + boolean isBz = false; if (count > 0) { // 新增lease_apply_details表数据 - count = getLeaseApplyCount(list, applyInfo, count); + count = getLeaseApplyCount(list, applyInfo, count, directApplyInfos.getCompanyId()); // 插入 lease_out_details表数据 if (count > 0) { - extracted(sltAgreementInfo, info, detailById, applyInfo); + Long projectUnitAgreementId = null; + if (leaseUnitTypeId != null && leaseUnitTypeId == 1731L) { + isBz = true; + // 查询领料班组挂靠的项目部协议ID + projectUnitAgreementId = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject( + Math.toIntExact(Long.parseLong(directApplyInfos.getLeaseUnitId())), + Math.toIntExact(Long.parseLong(directApplyInfos.getLeaseProId())) + ).getProjectUnitAgreementId(); + } + extracted(info, detailById, applyInfo, directApplyInfos.getCompanyId(), isBz, projectUnitAgreementId); + } + } + if (isBz) { + // 同步一份数据至材料站 + int clzMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_LEASE.getTaskTypeId()); + String clzCode = genderClzLeaseTaskCode(clzMonthMaxOrder); + TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_LEASE.getTaskTypeId(), + LeaseTaskStatusEnum.LEASE_TASK_FINISHED.getStatus(), + directApplyInfos.getCompanyId(), clzMonthMaxOrder + GlobalConstants.INT_1, clzCode); + tmTask.setCreateTime(DateUtils.getNowDate()); + tmTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + tmTaskMapper.insertTmTask(tmTask); + BmAgreementInfo bmAgreementInfo = new BmAgreementInfo(); + bmAgreementInfo.setUnitId(Long.valueOf(directApplyInfos.getLeaseUnitId())); + bmAgreementInfo.setProjectId(Long.valueOf(directApplyInfos.getLeaseProId())); + // 先根据班组和工程id查询,若存在则直接返回,不存在则新增 + Long agreementId = null; + BmAgreementInfo bmAgreementInfo1 = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo); + if (bmAgreementInfo1 != null) { + agreementId = bmAgreementInfo1.getAgreementId(); + } else { + count = bmAgreementInfoMapper.insertBmAgreementInfoClz(bmAgreementInfo); + if (count > GlobalConstants.INT_0) { + agreementId = bmAgreementInfo.getAgreementId(); + } else { + return AjaxResult.error("新增bm_agreement_info表失败"); + } + } + TmTaskAgreement agreement = new TmTaskAgreement(tmTask.getTaskId(), agreementId); + agreement.setCreateTime(DateUtils.getNowDate()); + agreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + agreement.setCompanyId(directApplyInfos.getCompanyId()); + taskAgreementMapper.insertTmTaskAgreement(agreement); + // 领料任务类型为2 数据同步 + MaterialLeaseApplyInfo materialLeaseApplyInfo = new MaterialLeaseApplyInfo(); + materialLeaseApplyInfo.setCode(clzCode); + materialLeaseApplyInfo.setTaskId(tmTask.getTaskId()); + materialLeaseApplyInfo.setLeaseStyle("2"); + materialLeaseApplyInfo.setTeamId(directApplyInfos.getLeaseUnitId()); + materialLeaseApplyInfo.setProId(Long.valueOf(directApplyInfos.getLeaseProId())); + materialLeaseApplyInfo.setCreateTime(DateUtils.getNowDate()); + materialLeaseApplyInfo.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + materialLeaseApplyInfo.setDirectId((long) id); + materialLeaseApplyInfo.setCompanyId(directApplyInfos.getCompanyId()); + // 根据领料id查询领料人和领料电话 + LeaseApplyInfo leaseApplyInfo = new LeaseApplyInfo(); + leaseApplyInfo = materialLeaseInfoMapper.selectLeaseInfo(applyInfo.getId()); + if (leaseApplyInfo != null) { + materialLeaseApplyInfo.setLeasePerson(StringUtils.isNotBlank(leaseApplyInfo.getLeasePerson()) ? leaseApplyInfo.getLeasePerson() : ""); + materialLeaseApplyInfo.setPhone(StringUtils.isNotBlank(leaseApplyInfo.getPhone()) ? leaseApplyInfo.getPhone() : ""); + } + count = materialLeaseInfoMapper.insertLeaseApplyInfo(materialLeaseApplyInfo); + LeaseOutDetails record = new LeaseOutDetails(); + if (count > GlobalConstants.INT_0) { + // 新增clz_lease_apply_details表数据 + insertPurchaseCheckDetails(list, materialLeaseApplyInfo, record, directApplyInfos.getCompanyId()); + // 插入 clz_lease_out_details表数据 + insertPurchaseCheckOutDetails(detailById, materialLeaseApplyInfo, record, directApplyInfos.getCompanyId(), agreementId); + } else { + return AjaxResult.error("新增任务失败,lease_apply_info表插入0条"); } } - return AjaxResult.success("直转成功"); } else { @@ -456,6 +716,135 @@ public class DirectRotationImpl implements DirectRotationService { } } + /** + * 获取材料站领料任务编号 + * @param clzMonthMaxOrder + * @return + */ + private String genderClzLeaseTaskCode(int clzMonthMaxOrder) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date nowDate = DateUtils.getNowDate(); + String format = dateFormat.format(nowDate); + String result = format.replace("-", ""); + return MaterialConstants.MATERIAL_LEASE_TASK_TYPE_LABEL + result + String.format("-%03d", clzMonthMaxOrder + GlobalConstants.INT_1); + } + + /** + * 插入 clz_lease_out_details表数据 + * @param detailById + * @param materialLeaseApplyInfo + * @param record + * @param companyId + */ + private void insertPurchaseCheckOutDetails(List detailById, MaterialLeaseApplyInfo materialLeaseApplyInfo, LeaseOutDetails record, + Long companyId, Long agreementId) { + for (DirectApplyDetails directApplyDetails : detailById) { + record.setCreateTime(DateUtils.getNowDate()); + record.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + record.setIsFinished(GlobalConstants.INT_1); + record.setPreNum(directApplyDetails.getDirectNum()); + record.setAlNum(directApplyDetails.getDirectNum()); + record.setParentId(materialLeaseApplyInfo.getId()); + record.setTypeId(Long.valueOf(directApplyDetails.getTypeId())); + record.setCompanyId(companyId); + record.setMaId(directApplyDetails.getMaId() == null ? null : Long.valueOf(directApplyDetails.getMaId())); + int res = materialLeaseInfoMapper.insertLeaseOutDetails(record); + if (res == GlobalConstants.INT_0) { + throw new RuntimeException("出库失败,插入结算记录失败"); + } + Type maType = typeMapper.getMaType(record.getTypeId()); + maType.setFinalPrice(maType.getLeasePrice()); + record.setLeaseStyle("2"); + record.setSource(2); + record.setOutNum(directApplyDetails.getDirectNum()); + res = materialLeaseInfoMapper.insSltInfo(record, agreementId.toString(), maType); + } + } + + /** + * 添加clz_lease_apply_details表数据 + * @param list + * @param materialLeaseApplyInfo + * @param record + */ + private void insertPurchaseCheckDetails(List list, MaterialLeaseApplyInfo materialLeaseApplyInfo, + LeaseOutDetails record, Long companyId) { + for (DirectApplyDetails directApplyDetails : list) { + record.setPreNum(directApplyDetails.getDirectNum()); + record.setAlNum(directApplyDetails.getDirectNum()); + record.setParentId(materialLeaseApplyInfo.getId()); + record.setTypeId(Long.valueOf(directApplyDetails.getTypeId())); + record.setCompanyId(companyId); + record.setCreateTime(DateUtils.getNowDate()); + record.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + materialLeaseInfoMapper.insertLeaseApplyDetails(record); + } + } + + /** + * 工地直转材料站逻辑处理 + * @param record + * @param detailById + * @param result + * @param companyId + * @param agreementId + */ + private void extractedClzCheckDetails(MaterialBackApplyInfo record, List detailById, int result, Long companyId, Long agreementId) { + if (CollectionUtil.isNotEmpty(detailById)) { + for (DirectApplyDetails directApplyDetails : detailById) { + MaterialBackApplyDetails details = new MaterialBackApplyDetails(); + details.setParentId(record.getId()); + details.setTypeId(Long.valueOf(directApplyDetails.getTypeId())); + details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + details.setCreateTime(DateUtils.getNowDate()); + details.setPreNum(directApplyDetails.getDirectNum()); + details.setStatus("0"); + details.setMaId(directApplyDetails.getMaId() != null ? Long.valueOf(directApplyDetails.getMaId()) : null); + details.setIsFinished(1); + details.setCompanyId(companyId); + result += materialBackInfoMapper.insertCheckDetails(details); + // 更新结算表信息 + MaterialBackApplyInfo bean = new MaterialBackApplyInfo(); + bean.setAgreementId(agreementId); + bean.setTypeId(directApplyDetails.getTypeId().toString()); + bean.setMaId(directApplyDetails.getMaId() != null ? Long.valueOf(directApplyDetails.getMaId()) : null); + List infoList = materialBackInfoMapper.getClzInfo(bean); + BigDecimal backNum = directApplyDetails.getDirectNum(); + if (CollectionUtils.isNotEmpty(infoList)) { + for (SltAgreementInfo info : infoList) { + BigDecimal num = info.getBackNum(); + if (backNum.compareTo(num) == 0) { + materialBackInfoMapper.updateStlInfo(info, record); + break; + } else if (backNum.compareTo(num) > 0) { + backNum = backNum.subtract(num); + materialBackInfoMapper.updateStlInfo(info, record); + } else { + BigDecimal many = num.subtract(backNum); + materialBackInfoMapper.updateStlInfoTwo(info, record, backNum); + info.setSource("2"); + materialBackInfoMapper.insStlInfoTwo(info, many); + break; + } + } + } + } + } + } + + /** + * 生成材料站退料任务单号 + * @param thisMonthMaxOrder + * @return + */ + private String genderClzTaskCode(int thisMonthMaxOrder) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date nowDate = DateUtils.getNowDate(); + String format = dateFormat.format(nowDate); + String result = format.replace("-", ""); + return MaterialConstants.BACK_MATERIAL_TASK_TYPE_LABEL + result + String.format("-%03d", thisMonthMaxOrder + 1); + } + @Override public List getUseringDataByClz(Integer projectId) { return mapper.getUseringDataByClz(projectId); @@ -667,16 +1056,18 @@ public class DirectRotationImpl implements DirectRotationService { * @param result * @return */ - private int getBackInfoResult(DirectApplyInfo info, BackApplyInfo backApplyInfo, TmTask task, int result) { + private int getBackInfoResult(DirectApplyInfo info, BackApplyInfo backApplyInfo, TmTask task, int result, Long companyId) { if (result > 0) { TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(task.getTaskId(), Long.valueOf(info.getBackAgreementId())); tmTaskAgreement.setCreateTime(DateUtils.getNowDate()); tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); + tmTaskAgreement.setCompanyId(companyId); taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement); backApplyInfo.setTaskId(task.getTaskId()); /** 设置审批人为默认的李勇 --防止代码冲突 **/ Long peopleId = backApplyInfoMapper.getDirectAuditBy(); backApplyInfo.setDirectAuditBy(peopleId); + backApplyInfo.setCompanyId(companyId); /** 设置审批人为默认的李勇 --防止代码冲突 **/ result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo); } @@ -690,7 +1081,7 @@ public class DirectRotationImpl implements DirectRotationService { * @param result * @return */ - private int getBackDetailsResult(BackApplyInfo backApplyInfo, List list, int result) { + private int getBackDetailsResult(BackApplyInfo backApplyInfo, List list, int result, Long companyId) { if (CollectionUtil.isNotEmpty(list)) { for (DirectApplyDetails directApplyDetails : list) { BackApplyDetails details = new BackApplyDetails(); @@ -704,6 +1095,7 @@ public class DirectRotationImpl implements DirectRotationService { details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); details.setCreateTime(DateUtils.getNowDate()); details.setTypeId(Long.valueOf(directApplyDetails.getTypeId())); + details.setCompanyId(companyId); // 保存退料详情 result += backApplyInfoMapper.insertBackApplyDetails(details); } @@ -717,7 +1109,8 @@ public class DirectRotationImpl implements DirectRotationService { * @param detailById * @param result */ - private void extractedCheckDetails(BackApplyInfo backApplyInfo, List detailById, int result) { + private void extractedCheckDetails(BackApplyInfo backApplyInfo, List detailById, int result, Long companyId, + Long projectUnitAgreementId, Integer flag) { if (CollectionUtil.isNotEmpty(detailById)) { for (DirectApplyDetails directApplyDetails : detailById) { BackApplyDetails details = new BackApplyDetails(); @@ -731,15 +1124,24 @@ public class DirectRotationImpl implements DirectRotationService { details.setBackStatus("0"); details.setStatus("2"); details.setIsFinished(1); + details.setCompanyId(companyId); // 插入 CheckDetails result += backApplyInfoMapper.insertCheckDetails(details); // 更新结算表信息 BackApplyInfo bean = new BackApplyInfo(); - bean.setAgreementId(directApplyDetails.getBackAgreementId()); + bean.setAgreementId(projectUnitAgreementId != null ? projectUnitAgreementId : directApplyDetails.getBackAgreementId()); bean.setTypeId(directApplyDetails.getTypeId().toString()); bean.setMaId(directApplyDetails.getMaId() == null ? null : Long.valueOf(directApplyDetails.getMaId())); - List infoList = backApplyInfoMapper.getStlInfo(bean); + List infoList = new ArrayList<>(); + if (flag == 1) { + // 查询直领数据 + infoList = backApplyInfoMapper.getStlInfo(bean); + } else if (flag == 2) { + // 获取项目部数据 + infoList = backApplyInfoMapper.getXmInfoList(bean); + } + BigDecimal backNum = directApplyDetails.getDirectNum(); if (CollectionUtils.isNotEmpty(infoList)) { for (SltAgreementInfo agreementInfo : infoList) { @@ -790,7 +1192,7 @@ public class DirectRotationImpl implements DirectRotationService { * @param count * @return */ - private int getLeaseApplyCount(List list, LeaseApplyInfo applyInfo, int count) { + private int getLeaseApplyCount(List list, LeaseApplyInfo applyInfo, int count, Long companyId) { if (CollectionUtil.isNotEmpty(list)) { List leaseApplyDetails = new ArrayList<>(); for (DirectApplyDetails directApplyDetails : list) { @@ -802,6 +1204,7 @@ public class DirectRotationImpl implements DirectRotationService { details.setPreNum(directApplyDetails.getDirectNum()); details.setAlNum(directApplyDetails.getDirectNum()); details.setStatus("2"); + details.setCompanyId(companyId); leaseApplyDetails.add(details); } // 批量插入详情数据 @@ -814,12 +1217,12 @@ public class DirectRotationImpl implements DirectRotationService { /** * 插入(领料出库详情表) lease_out_details表数据 - * @param sltAgreementInfo * @param info * @param detailById * @param applyInfo */ - private void extracted(SltAgreementInfo sltAgreementInfo, DirectApplyInfo info, List detailById, LeaseApplyInfo applyInfo) { + private void extracted(DirectApplyInfo info, List detailById, LeaseApplyInfo applyInfo, + Long companyId, boolean isBz, Long projectUnitAgreementId) { int count; if (CollectionUtils.isNotEmpty(detailById)) { for (DirectApplyDetails directApplyDetails : detailById) { @@ -833,26 +1236,23 @@ public class DirectRotationImpl implements DirectRotationService { 1 : 0); record.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); record.setCreateTime(DateUtils.getNowDate()); - record.setSource(1); + record.setSource(isBz ? 2 : 1); + record.setCompanyId(companyId); count = leaseOutDetailsMapper.insertLeaseOutDetails(record); // 插入结算表 if (count > 0) { - SltAgreementInfo dto = sltAgreementInfoMapper.getSltAgreementInfo(record); - if (dto != null) { - BigDecimal num = dto.getNum(); - BigDecimal outNum = record.getOutNum(); - dto.setNum(num.add(outNum)); - count = sltAgreementInfoMapper.updSltInfo(dto); - record.setAgreementId(sltAgreementInfo.getAgreementId()); - }else { - Type maType = typeMapper.getMaType(record.getTypeId()); - maType.setFinalPrice(maType.getLeasePrice()); - count = sltAgreementInfoMapper.insSltInfo(record, String.valueOf(info.getLeaseAgreementId()), maType); - } - if (count <= 0) { - throw new RuntimeException("领料结算表插入失败"); + Type maType = typeMapper.getMaType(record.getTypeId()); + maType.setFinalPrice(maType.getLeasePrice()); + count = sltAgreementInfoMapper.insSltInfo(record, String.valueOf(info.getLeaseAgreementId()), maType); + // 班组领料,同步一份数据至项目部 + if (isBz) { + record.setSource(1); + count = sltAgreementInfoMapper.insSltInfo(record, String.valueOf(projectUnitAgreementId), maType); } } + if (count <= 0) { + throw new RuntimeException("领料结算表插入失败"); + } } } } 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 0a78952f..1292c251 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 @@ -1930,4 +1930,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by start_time asc LIMIT 1 + + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/DirectRotationMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/DirectRotationMapper.xml index a28699f0..95af3816 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/DirectRotationMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/DirectRotationMapper.xml @@ -462,4 +462,62 @@ ORDER BY lai.create_time DESC + + + +