From 0f582a0d68f415e69e3e220dd4065f8aa086fa2d Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Wed, 18 Dec 2024 18:00:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E7=AE=A1=E7=90=86=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/biz/aspect/StoreLogAspect.java | 2 ++ .../impl/BackApplyInfoServiceImpl.java | 6 ++-- .../purchase/domain/PurchaseCheckInfo.java | 18 ++++++++++ .../impl/PurchaseCheckInfoServiceImpl.java | 15 +++++++-- .../impl/PurchaseStorageServiceImpl.java | 2 ++ .../material/repair/mapper/RepairMapper.java | 24 +++++++++++++- .../service/impl/RepairServiceImpl.java | 26 ++++++++++++--- .../bonus/material/task/domain/TmTask.java | 4 +++ .../material/task/mapper/TmTaskMapper.java | 2 +- .../mapper/material/repair/RepairMapper.xml | 33 +++++++++++++++---- .../mapper/material/task/TmTaskMapper.xml | 5 ++- 11 files changed, 119 insertions(+), 18 deletions(-) diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java index a2b18394..167a24a5 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/aspect/StoreLogAspect.java @@ -194,7 +194,9 @@ public class StoreLogAspect { .collect(Collectors.joining(",")); bmStorageLog.setMaCode(maCode); bmStorageLog.setInputType(InputOutEnum.CODE_DEVICE.getTypeId()); + bmStorageLog.setManageType(String.valueOf(InputOutEnum.CODE_DEVICE.getTypeId())); } else { + bmStorageLog.setManageType(String.valueOf(InputOutEnum.NUMBER_DEVICE.getTypeId())); bmStorageLog.setInNum(purchaseDto.getInputNum()); bmStorageLog.setInputType(InputOutEnum.NUMBER_DEVICE.getTypeId()); } 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 cc41db19..358465fc 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 @@ -592,7 +592,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { .map(BackApplyInfo::getTypeId).distinct() .collect(Collectors.toList()); // 插入任务表 - Long newTaskId = insertTt(SecurityUtils.getUsername()); + Long newTaskId = insertTt(SecurityUtils.getUsername(), backApplyInfo.getRemark(), backApplyInfo.getTaskId()); // 插入协议任务表 result += insertTta(newTaskId, applyInfoList); for (String typeId : typeIdList) { @@ -1146,7 +1146,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { * @param createBy * @return */ - private Long insertTt(String createBy) { + private Long insertTt(String createBy, String remark, Long preTaskId) { Long newTask = null; int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_REPAIR.getTaskTypeId()); // 生成维修单号 @@ -1154,6 +1154,8 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_REPAIR.getTaskTypeId(), BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus(), null,thisMonthMaxOrder + 1, code); tmTask.setCreateTime(DateUtils.getNowDate()); + tmTask.setRemark(remark); + tmTask.setPreTaskId(preTaskId); tmTask.setCreateBy(createBy); // 插入任务 int taskId = taskMapper.insertTmTask(tmTask); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java index f06b9a36..1d704511 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java @@ -87,6 +87,24 @@ public class PurchaseCheckInfo extends BaseEntity { @ApiModelProperty(value = "采购数量--外层Table字段") private BigDecimal purchaseMaNumber; + /** + * 验收数量 + */ + @ApiModelProperty(value = "验收数量--外层Table字段") + private BigDecimal checkMaNumber; + + /** + * 绑定数量 + */ + @ApiModelProperty(value = "绑定数量--外层Table字段") + private BigDecimal bindMaNumber; + + @ApiModelProperty(value = "入库数量--外层Table字段") + private BigDecimal inputMaNumber; + + @ApiModelProperty(value = "待入库数量--外层Table字段") + private BigDecimal waitInputNumber; + /** * 采购单价(不含税) */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java index 052b7941..7af0e07a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java @@ -143,6 +143,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> !(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) && (o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) || o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())))).collect(Collectors.toList()); OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min(); + if (isAllowPartTransfer) { if (!CollectionUtils.isEmpty(purchaseQueryDto.getStatusList())) { purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getStatusList().contains(o.getStatus())).collect(Collectors.toList()); @@ -152,7 +153,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskAndStatusList(purchaseInfo.getTaskId(), new ArrayList<>())); } if (!CollectionUtils.isEmpty(purchaseCheckDetails)) { - BigDecimal purchaseMaTotalNumber = new BigDecimal("0"); + BigDecimal purchaseMaTotalNumber = BigDecimal.ZERO; + BigDecimal checkMaTotalNumber = BigDecimal.ZERO; + BigDecimal bindMaTotalNumber = BigDecimal.ZERO; + BigDecimal inputMaTotalNumber = BigDecimal.ZERO; AtomicReference purchaseMaTotalPrice = new AtomicReference<>(BigDecimal.ZERO); for (PurchaseCheckDetails detail : purchaseCheckDetails) { if (detail.getPurchaseNum() == null || detail.getPurchasePrice() == null) { @@ -162,11 +166,18 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { throw new IllegalArgumentException("采购数量和价格必须为非负数"); } // 更新 purchaseMaTotalNumber - purchaseMaTotalNumber = purchaseMaTotalNumber.add(detail.getPurchaseNum()); + purchaseMaTotalNumber = purchaseMaTotalNumber.add(Optional.of(detail.getPurchaseNum()).orElse(BigDecimal.ZERO)); + checkMaTotalNumber = checkMaTotalNumber.add(Optional.ofNullable(detail.getCheckNum()).orElse(BigDecimal.ZERO)); + bindMaTotalNumber = bindMaTotalNumber.add(Optional.ofNullable(detail.getBindNum()).orElse(BigDecimal.ZERO)); + inputMaTotalNumber = inputMaTotalNumber.add(Optional.ofNullable(detail.getInputNum()).orElse(BigDecimal.ZERO)); purchaseMaTotalPrice.updateAndGet(v -> v.add(detail.getPurchaseNum().multiply(detail.getPurchasePrice()))); } purchaseInfo.setPurchaseMaNumber(purchaseMaTotalNumber); purchaseInfo.setPurchasePrice(purchaseMaTotalPrice.get()); + purchaseInfo.setBindMaNumber(bindMaTotalNumber); + purchaseInfo.setCheckMaNumber(checkMaTotalNumber); + purchaseInfo.setInputMaNumber(inputMaTotalNumber); + purchaseInfo.setWaitInputNumber(Optional.of(purchaseMaTotalNumber).orElse(BigDecimal.ZERO).subtract(Optional.of(inputMaTotalNumber).orElse(BigDecimal.ZERO))); if (purchaseInfo.getTaxRate() != null && purchaseInfo.getPurchasePrice() != null) { purchaseInfo.setPurchaseTaxPrice(calculateTaxPrice(purchaseMaTotalPrice.get(), purchaseInfo.getTaxRate())); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java index 707ecefe..b731288a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -26,6 +26,7 @@ import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -233,6 +234,7 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService { } dto.setTypeId(purchaseDto.getTypeId()); result += purchaseStorageMapper.insertMachine(dto); + purchaseStorageMapper.updateStorageNum(BigDecimal.ONE, dto.getTypeId()); List list = purchaseBindMapper.getMachineById(purchaseDto); if (CollectionUtils.isNotEmpty(list)) { result += purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.TO_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java index 6040b01b..b6dd18fc 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java @@ -22,6 +22,11 @@ public interface RepairMapper { */ List getRepairTaskList(RepairTask bean); + /** + * 根据任务id 查询已操作数量(已维修+已报废) + */ + int getRepairedScrapNumByTaskId(Long taskId); + /** * 获取维修任务列表 * @param taskId 任务id @@ -61,7 +66,7 @@ public interface RepairMapper { int updateThisRepairedAndScrapNum(@Param("id") Long id, @Param("thisRepairedNum") BigDecimal repairNum, @Param("thisScrapNum") BigDecimal thisScrapNum,@Param("repairer") Long repairer, @Param("userId") Long userId); - int updateRepairedNumAndStatus(@Param("id") Long id, @Param("repairNum") BigDecimal repairNum, @Param("status") int status, @Param("repairer") Long repairer, @Param("userId") Long userId); + int updateRepairedNumAndStatus(@Param("id") Long id, @Param("repairNum") BigDecimal repairNum, @Param("status") int status, @Param("repairer") String repairer, @Param("userId") Long userId); /** * 修改维修数量 @@ -71,6 +76,12 @@ public interface RepairMapper { */ int updateRepairedNumTwo(@Param("id") Long id, @Param("repairNum") BigDecimal repairNum, @Param("userId") Long userid); + /** + * 修改维修数量和状态 + * @param id 主键 key + * @param repairNum 维修数量 + * @param userid 用户id + */ int updateRepairedNumTwoAndStatus(@Param("id") Long id, @Param("repairNum") BigDecimal repairNum, @Param("status") int status, @Param("userId") Long userid); /** @@ -81,6 +92,12 @@ public interface RepairMapper { */ int updateScrapNum(@Param("id") Long id, @Param("scrapNum") BigDecimal scrapNum, @Param("userId") Long userId); + /** + * 修改报废数量和状态 + * @param id 主键key + * @param scrapNum 报废数量 + * @param userId 用户id + */ int updateScrapNumAndStatus(@Param("id") Long id, @Param("scrapNum") BigDecimal scrapNum, @Param("status") int status, @Param("userId") Long userId); /** @@ -96,6 +113,11 @@ public interface RepairMapper { */ int batchQualified(@Param("ids") ArrayList ids, @Param("userId") Long userId); + /** + * 根据已修数量、已报废数量--更新维修状态 + */ + int updateStatusByRepairScrapNum(@Param("id") Long id); + /** * 查询维修人员列表 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index ecca5e7e..d6645e06 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -7,6 +7,8 @@ import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.back.domain.BackApplyInfo; +import com.bonus.material.back.mapper.BackApplyInfoMapper; import com.bonus.material.basic.domain.BmFileInfo; import com.bonus.material.basic.mapper.BmFileInfoMapper; import com.bonus.material.repair.domain.*; @@ -22,7 +24,6 @@ import com.bonus.material.task.domain.TmTask; import com.bonus.material.task.mapper.TmTaskMapper; import com.bonus.system.api.domain.SysUser; import com.bonus.system.api.model.LoginUser; -import org.springframework.beans.BeanUtils; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +35,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -58,6 +60,9 @@ public class RepairServiceImpl implements RepairService { @Resource private RepairApplyDetailsMapper repairApplyDetailsMapper; + @Resource + private BackApplyInfoMapper backApplyInfoMapper; + // 1:内部维修 2:外部返厂维修 3:报废 private final int INNER_REPAIR = 1; // 需要严格匹配枚举值 RepairTypeEnum.INNER_REPAIR.getTypeId(); private final int RETURN_FACTORY = 2; // 需要严格匹配枚举值 RepairTypeEnum.RETURN_FACTORY.getTypeId(); @@ -435,7 +440,7 @@ public class RepairServiceImpl implements RepairService { case INNER_REPAIR: { partList = bean.getCodeInRepairPartList(); // 更新维修数量、并修改维修人员 - repairMapper.updateRepairedNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUserid(), loginUser.getUserid()); + repairMapper.updateRepairedNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUsername(), loginUser.getUserid()); break; } case RETURN_FACTORY: { @@ -621,6 +626,7 @@ public class RepairServiceImpl implements RepairService { // repairMapper.updateScrapNum(bean.getId(), scrapNum, loginUser.getUserid()); repairMapper.updateThisRepairedAndScrapNum(bean.getId(), innerRepairNum.add(outerRepairNum), scrapNum, loginUser.getUserid(), loginUser.getUserid()); } + repairMapper.updateStatusByRepairScrapNum(bean.getId()); } @@ -856,7 +862,7 @@ public class RepairServiceImpl implements RepairService { /** * 生成维修单号 - * @param thisMonthMaxOrder 当前月最大单号 + * @param thisMonthMaxOrder 当前月最大序号 */ private String genderWxTaskCode(int thisMonthMaxOrder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); @@ -869,7 +875,19 @@ public class RepairServiceImpl implements RepairService { @Override public AjaxResult rejectRepair(@NotNull List taskList) { try { - taskList.forEach(taskId -> taskMapper.updateTaskStatus(String.valueOf(taskId), RepairTaskStatusEnum.TASK_STATUS_REJECT.getStatus())); + taskList.forEach(taskId -> { + // 判断维修明细是否有已经维修的数据 + int repairedScrapNumber = repairMapper.getRepairedScrapNumByTaskId(taskId); + if (repairedScrapNumber <= 0) { + // 1.修改维修task状态为已驳回 + taskMapper.updateTaskStatus(String.valueOf(taskId), RepairTaskStatusEnum.TASK_STATUS_REJECT.getStatus()); + TmTask tmTask = taskMapper.selectTmTaskByTaskId(taskId); + if (tmTask != null && tmTask.getPreTaskId() != null) { + // 2.修改退料任务状态为被维修驳回 + backApplyInfoMapper.updateTaskStatus(new BackApplyInfo().setTaskId(tmTask.getPreTaskId()).setTaskStatus(1)); + } + } + }); } catch (DataAccessException e) { System.err.println(e.getMessage()); return AjaxResult.error("数据库SQL修改执行失败" + e.getMessage()); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java index c3f67041..1fe98ef2 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java @@ -26,6 +26,10 @@ public class TmTask extends BaseEntity { /** 任务ID */ private Long taskId; + /** 上个阶段的任务ID */ + @ApiModelProperty(value = "上个阶段的任务ID") + private Long preTaskId; + /** 任务类型(定义数据字典) */ @Excel(name = "任务类型(定义数据字典)") @ApiModelProperty(value = "任务类型(定义数据字典)") diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java index 59c49258..91ee1eb8 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/mapper/TmTaskMapper.java @@ -55,7 +55,7 @@ public interface TmTaskMapper { int updateTmTask(TmTask tmTask); /** - * 根据任务id更新任务状态 -- 批量、限制状态 + * 根据任务id更新任务状态 * @param taskId 任务id 必传 * @param newStatus 新状态 */ diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml index 04d1ad90..60e75274 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/repair/RepairMapper.xml @@ -50,11 +50,14 @@ - update repair_apply_details - set this_repaired_num = ifnull(this_repaired_num,0) + #{thisRepairedNum}, + update + repair_apply_details + set + this_repaired_num = ifnull(this_repaired_num,0) + #{thisRepairedNum}, this_scrap_num = ifnull(this_scrap_num,0) + #{thisScrapNum}, update_time = now() - where id = #{id} + where + id = #{id} @@ -135,7 +138,7 @@ SELECT rd.task_id as taskId, - rd.repairer, + su2.nick_name as repairer, tt.CODE AS repairCode, tt.create_time AS createTime, tt.task_status AS repairStatusCode, tt.company_id AS companyId, - tt.remark, + tt.remark,tt.create_by as createName, bui.unit_name AS backUnit, bpi.pro_name AS backPro, - su.nick_name AS createName, bai.CODE AS backCode, GROUP_CONCAT(DISTINCT mt2.type_name) as type FROM @@ -186,6 +188,7 @@ LEFT JOIN bm_unit bui ON bai2.unit_id = bui.unit_id LEFT JOIN bm_project bpi ON bai2.project_id = bpi.pro_id and bpi.del_flag = '0' left join sys_user su on rd.create_by = su.user_id + left join sys_user su2 on su2.user_id = rd.repairer AND (locate(#{keyword}, su.nick_name) > 0 @@ -506,4 +509,20 @@ ORDER BY rid.create_time DESC + + + update + repair_apply_details + set status = IF((ifnull(repaired_num, 0) + ifnull(scrap_num, 0) >= repair_num), 1, 0) + where id = #{id} + + + diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml index a0de1108..d8d7cfa3 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/task/TmTaskMapper.xml @@ -5,6 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -18,7 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select task_id, task_type, task_status, code, create_by, create_time, + select task_id, pre_task_id, task_type, task_status, code, create_by, create_time, update_by, update_time, remark, company_id, month_order from tm_task @@ -43,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into tm_task + pre_task_id, task_type, task_status, `code`, @@ -55,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" company_id, + #{preTaskId}, #{taskType}, #{taskStatus}, #{code},