From 8585f4ade881852aef30769958e71cf96fba34b1 Mon Sep 17 00:00:00 2001 From: mashuai Date: Tue, 30 Dec 2025 17:03:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E5=8F=8A=E4=BF=AE=E8=AF=95?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=AB=8B=E4=BD=93=E4=BB=93=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/domain/purchase/PurchaseDto.java | 15 ++ .../biz/domain/repair/RepairInputDetails.java | 8 + .../biz/enums/PurchaseTaskStatusEnum.java | 4 +- .../biz/enums/RepairInputStatusEnum.java | 4 +- .../purchase/domain/PurchaseCheckDetails.java | 3 + .../purchase/domain/dto/PurchaseQueryDto.java | 3 + .../mapper/PurchaseStorageMapper.java | 29 +++ .../impl/PurchaseCheckInfoServiceImpl.java | 2 + .../impl/PurchaseStorageServiceImpl.java | 88 +++++++++- .../repair/controller/RepairController.java | 13 ++ .../repair/domain/RepairInputInfo.java | 3 + .../domain/vo/RepairDeviceSummaryVo.java | 6 + .../repair/domain/vo/RepairDeviceVO.java | 6 + .../mapper/RepairInputDetailsMapper.java | 14 ++ .../material/repair/mapper/RepairMapper.java | 2 + .../repair/service/RepairService.java | 2 + .../impl/RepairInputDetailsServiceImpl.java | 165 ++++++++++++++---- .../service/impl/RepairServiceImpl.java | 58 ++++++ .../purchase/PurchaseCheckDetailsMapper.xml | 3 +- .../purchase/PurchaseCheckInfoMapper.xml | 3 +- .../purchase/PurchaseStorageMapper.xml | 23 +++ .../repair/RepairInputDetailsMapper.xml | 24 ++- .../mapper/material/repair/RepairMapper.xml | 68 ++++++++ 23 files changed, 499 insertions(+), 47 deletions(-) diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/PurchaseDto.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/PurchaseDto.java index dd236563..4b1a309b 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/PurchaseDto.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/purchase/PurchaseDto.java @@ -125,4 +125,19 @@ public class PurchaseDto { @ApiModelProperty(value = "物资厂家名称") private String supplier; + + @ApiModelProperty(value = "默认0 不是立体库,1 立体库") + private Integer isRs; + + @ApiModelProperty(value = "单号") + private String code; + + @ApiModelProperty("物料名称") + private String maTypeName; + + @ApiModelProperty("计量单位") + private String unitName; + + @ApiModelProperty("设备状态") + private String maStatus; } diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/repair/RepairInputDetails.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/repair/RepairInputDetails.java index d443f701..a4430e66 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/repair/RepairInputDetails.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/repair/RepairInputDetails.java @@ -201,4 +201,12 @@ public class RepairInputDetails extends BaseEntity { private String backCode; + @ApiModelProperty(value = "默认0 不是立体库,1 立体库") + private Integer isRs; + + private String unitName; + + @ApiModelProperty(value = "物资名称") + private String maTypeName; + } diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/PurchaseTaskStatusEnum.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/PurchaseTaskStatusEnum.java index 62a609ab..c3c63a14 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/PurchaseTaskStatusEnum.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/PurchaseTaskStatusEnum.java @@ -21,7 +21,9 @@ public enum PurchaseTaskStatusEnum { IN_STORE(19, "已入库", PurchaseTaskStageEnum.STORE.getCode()), TASK_IN_PROGRESS(21, "入库进行中", PurchaseTaskStageEnum.STORE.getCode()), - TASK_FINISHED(22, "入库已完成", PurchaseTaskStageEnum.STORE.getCode()); + TASK_FINISHED(22, "入库已完成", PurchaseTaskStageEnum.STORE.getCode()), + // 待上架,创建立体仓入库任务后,状态为待上架 + TO_UPLOAD(23, "待上架", PurchaseTaskStageEnum.STORE.getCode()); private final Integer status; private final String statusName; diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/RepairInputStatusEnum.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/RepairInputStatusEnum.java index b0ce9a39..be1172e9 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/RepairInputStatusEnum.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/enums/RepairInputStatusEnum.java @@ -12,7 +12,9 @@ public enum RepairInputStatusEnum { INPUT_TASK_NO_FINISHED(0, "入库进行中"), INPUT_TASK_IN_FINISHED(1, "入库完成"), - INPUT_TASK_TO_REJECT(2, "入库驳回"); + INPUT_TASK_TO_REJECT(2, "入库驳回"), + // 待上架 + TO_UPLOAD(3, "待上架"); private final Integer status; private final String statusName; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java index f56ed542..6d8c403e 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckDetails.java @@ -200,4 +200,7 @@ public class PurchaseCheckDetails extends BaseEntity { @ApiModelProperty(value = "签名类型") private int signTypes; + + @ApiModelProperty(value = "默认0 不是立体库,1 立体库") + private Integer isRs; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/dto/PurchaseQueryDto.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/dto/PurchaseQueryDto.java index 1f57b963..6467c86b 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/dto/PurchaseQueryDto.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/dto/PurchaseQueryDto.java @@ -93,4 +93,7 @@ public class PurchaseQueryDto { */ @ApiModelProperty(value = "子任务状态列表") private List statusList; + + @ApiModelProperty(value = "默认0 不是立体库,1 立体库") + private Integer isRs; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseStorageMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseStorageMapper.java index 377367e3..d6d74f70 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseStorageMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseStorageMapper.java @@ -100,4 +100,33 @@ public interface PurchaseStorageMapper { * @return */ int updatePurchaseBindBy(@Param("status") Integer status, @Param("taskId") String taskId, @Param("typeId") Long typeId); + + /** + * 修改上架数量 + * @param purchaseId + * @param bindNum + */ + void updateUpNum(@Param("id") Long purchaseId, @Param("bindNum") BigDecimal bindNum); + + /** + * 修改机具状态 + * @param dto + */ + void updateMaStatus(PurchaseDto dto); + + /** + * 修改详情任务状态 + * @param updatedStatus + * @param id + */ + int updatePurchaseStatus(@Param("updatedStatus") Integer updatedStatus, @Param("id") int id); + + /** + * 修改上架数量 + * @param status + * @param parseInt + * @param inputNum + * @return + */ + int updateNumById(@Param("updatedStatus") Integer status, @Param("id") String parseInt,@Param("inputNum") BigDecimal inputNum); } 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 2f950018..f4fe4f5d 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 @@ -126,6 +126,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) || + PurchaseTaskStatusEnum.TO_UPLOAD.getStatus().equals(o.getStatus()) || (PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) || (PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ).collect(Collectors.toList()); @@ -297,6 +298,7 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { case PURCHASE_TASK_STAGE_STORE: purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) || + PurchaseTaskStatusEnum.TO_UPLOAD.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) || PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) || (PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) || 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 5c1b947b..1b08198f 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 @@ -1,9 +1,13 @@ package com.bonus.material.purchase.service.impl; +import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.lease.LeaseOutDetails; +import com.bonus.common.biz.domain.purchase.AutomaticInPutDto; import com.bonus.common.biz.enums.HttpCodeEnum; import com.bonus.common.biz.enums.MaTypeManageTypeEnum; import com.bonus.common.biz.enums.PurchaseTaskStatusEnum; +import com.bonus.common.biz.utils.AutomaticHttpHelper; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.lease.mapper.LeaseOutDetailsMapper; @@ -219,18 +223,90 @@ public class PurchaseStorageServiceImpl implements IPurchaseStorageService { private AjaxResult processByPurchaseIds(PurchaseDto purchaseDto) { int result = 0; try { + if (purchaseDto.getIsRs() != null && purchaseDto.getIsRs() == 1) { + Integer manageType = null; + ArrayList list = new ArrayList<>(); + //数量入库 + if (CollectionUtils.isEmpty(purchaseDto.getInPutList())) { + //数量入库 + List details = purchaseBindMapper.getDetails(purchaseDto); + if (CollectionUtils.isNotEmpty(details)) { + if (details.get(0).getCheckNum().compareTo(details.get(0).getInPutNum()) == 0) { + purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.IN_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); + List statusList = purchaseStorageMapper.select(purchaseDto.getTaskId()); + result += updateTaskStatus(statusList); + return AjaxResult.error("该设备已全部入库,请勿重复操作"); + } + } + manageType = 1; + AutomaticInPutDto automaticInPutDto = new AutomaticInPutDto(); + automaticInPutDto.setMaterialName(purchaseDto.getMaTypeName()); + automaticInPutDto.setUnitCode(purchaseDto.getUnitName()); + automaticInPutDto.setInQty(purchaseDto.getInputNum()); + automaticInPutDto.setLineNum(1); + automaticInPutDto.setPurchaseId(purchaseDto.getPurchaseId()); + automaticInPutDto.setTypeId(Long.valueOf(purchaseDto.getTypeId())); + list.add(automaticInPutDto); + } else { + manageType = 0; + for (int i = 0; i < purchaseDto.getInPutList().size(); i++) { + AutomaticInPutDto automaticInPutDto = new AutomaticInPutDto(); + automaticInPutDto.setMaterialName(purchaseDto.getMaTypeName()); + automaticInPutDto.setUnitCode(purchaseDto.getUnitName()); + automaticInPutDto.setInQty(BigDecimal.ONE); + automaticInPutDto.setMaterialCode(purchaseDto.getInPutList().get(i).getMaCode()); + automaticInPutDto.setLineNum(i + 1); + automaticInPutDto.setPurchaseId(purchaseDto.getPurchaseId()); + automaticInPutDto.setTypeId(Long.valueOf(purchaseDto.getTypeId())); + list.add(automaticInPutDto); + } + } + Map map = new HashMap<>(); + map.put("ExternalNo", purchaseDto.getCode()); + map.put("taskId", purchaseDto.getTaskId()); + map.put("manageType", manageType); + map.put("InDes", "采购入库"); + map.put("DtlList", list); + String body = JSONObject.toJSONString(map); + // 立体库本地建立入库单接口路径 + String url = MaterialConstants.TEST_CREATE_IN_URL; + // 立体库生产建立入库单接口路径 + //String url = MaterialConstants.PROD_CREATE_IN_URL; + String data = AutomaticHttpHelper.sendHttpPostPushCost(url, body); + if (StringUtils.isEmpty(data)) { + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "立体仓入库单创建失败"); + } + JSONObject object = JSONObject.parseObject(data); + String code = object.getString("code"); + if ("0".equals(code)) { + // 修改状态为待上架 + if (CollectionUtils.isEmpty(purchaseDto.getInPutList())) { + // 数量设备 + purchaseStorageMapper.updateNumById(PurchaseTaskStatusEnum.TO_UPLOAD.getStatus(), purchaseDto.getPurchaseId(), purchaseDto.getInputNum()); + } else { + // 修改上架数量 + purchaseStorageMapper.updateUpNum(Long.valueOf(purchaseDto.getPurchaseId()), BigDecimal.valueOf(purchaseDto.getInPutList().size())); + // 编码设备 + for (PurchaseDto dto : purchaseDto.getInPutList()) { + dto.setTypeId(purchaseDto.getTypeId()); + // 待上架 + dto.setMaStatus("19"); + purchaseStorageMapper.updateMaStatus(dto); + } + // 修改详情任务状态 + purchaseStorageMapper.updatePurchaseStatus(PurchaseTaskStatusEnum.TO_UPLOAD.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); + } + return AjaxResult.success("立体仓入库单创建成功"); + } else { + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "立体仓入库单创建失败"); + } + } //判断为数量还是编码入库 purchaseDto.setPreStoreNum(getStorageNum(purchaseDto)); if (CollectionUtils.isEmpty(purchaseDto.getInPutList())) { //数量入库 List details = purchaseBindMapper.getDetails(purchaseDto); if (CollectionUtils.isNotEmpty(details)) { - if (details.get(0).getCheckNum().compareTo(details.get(0).getInPutNum()) == 0) { - purchaseStorageMapper.updateStatusById(PurchaseTaskStatusEnum.IN_STORE.getStatus(), Integer.parseInt(purchaseDto.getPurchaseId())); - List statusList = purchaseStorageMapper.select(purchaseDto.getTaskId()); - result += updateTaskStatus(statusList); - return AjaxResult.error("该设备已全部入库,请勿重复操作"); - } purchaseDto.setInputNum(details.get(0).getCheckNum().subtract(details.get(0).getInPutNum())); result += updatePurchaseInfoAndDetails(details.get(0), Integer.parseInt(purchaseDto.getPurchaseId())); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairController.java index 863c70b6..f02a19a3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/controller/RepairController.java @@ -125,6 +125,19 @@ public class RepairController extends BaseController { return AjaxResult.success(list); } + /** + * 获取结算申请列表维修单列表 + * @param bean + * @return + */ + @ApiOperation(value = "获取维修物资设备列表---不分页") + //@RequiresPermissions(value = "repair:manage:list") + @GetMapping("/getRepairDetailsList") + public AjaxResult getRepairDetailsList(RepairTaskDetails bean) { + List list = service.getRepairDetailsList(bean); + return AjaxResult.success(list); + } + /** * 维修已完成--Ⅱ级页面详情列表 */ diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairInputInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairInputInfo.java index bb8eb83d..1bcc9f33 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairInputInfo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairInputInfo.java @@ -86,4 +86,7 @@ public class RepairInputInfo extends BaseEntity { * 在老系统中表示维修任务Id */ private Long repairId; + + @ApiModelProperty(value = "默认0 不是立体库,1 立体库") + private Integer isRs; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceSummaryVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceSummaryVo.java index a57b5091..4e33658c 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceSummaryVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceSummaryVo.java @@ -81,4 +81,10 @@ public class RepairDeviceSummaryVo extends BaseVO { private BigDecimal waitRepairNum; private BigDecimal completeNum; + + @ApiModelProperty(value = "退料单位名称") + private String backUnit; + + @ApiModelProperty(value = "退料工程名称") + private String backPro; } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceVO.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceVO.java index 735dc9b7..b4d91c03 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceVO.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/vo/RepairDeviceVO.java @@ -146,6 +146,12 @@ public class RepairDeviceVO { */ private BigDecimal completeNum; + @ApiModelProperty(value = "退料单位名称") + private String backUnit; + + @ApiModelProperty(value = "退料工程名称") + private String backPro; + // 手动覆盖 getter 方法,确保 List 始终被初始化 public List getCodeInRepairPartList() { if (this.codeInRepairPartList == null) {this.codeInRepairPartList = new ArrayList<>();} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairInputDetailsMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairInputDetailsMapper.java index a273c7c9..2ebc3eee 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairInputDetailsMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/mapper/RepairInputDetailsMapper.java @@ -167,4 +167,18 @@ public interface RepairInputDetailsMapper { * @return */ List selectExportDetails(RepairInputDetails repairInputDetails); + + /** + * 修改修试后入库状态 + * @param inputDetails + * @return + */ + int updateRepairStatus(RepairInputDetails inputDetails); + + /** + * 修改设备状态 + * @param inputDetails + * @return + */ + int updateStatus(RepairInputDetails inputDetails); } 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 896c54b5..e79291ca 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 @@ -464,4 +464,6 @@ public interface RepairMapper { * @return */ List getRepairAuditQueryList(RepairTask bean); + + List getRepairDetailsList(RepairTaskDetails bean); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java index 778de22d..7994fe1f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/RepairService.java @@ -184,4 +184,6 @@ public interface RepairService { * @return */ List getRepairAuditQueryList(RepairTask bean); + + List getRepairDetailsList(RepairTaskDetails bean); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java index e922978a..742ca29d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairInputDetailsServiceImpl.java @@ -2,19 +2,19 @@ package com.bonus.material.repair.service.impl; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.CollectionUtils; import com.bonus.common.biz.constant.GlobalConstants; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.domain.lease.LeaseOutDetails; +import com.bonus.common.biz.domain.purchase.AutomaticInPutDto; import com.bonus.common.biz.domain.repair.RepairInputExportDetails; import com.bonus.common.biz.enums.*; +import com.bonus.common.biz.utils.AutomaticHttpHelper; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; @@ -118,6 +118,11 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService statusList.stream().allMatch(status -> status.equals(RepairInputStatusEnum.INPUT_TASK_IN_FINISHED.getStatus()))) { inputInfo.setStatus(String.valueOf(RepairInputStatusEnum.INPUT_TASK_IN_FINISHED.getStatus())); inputInfo.setStatusName(String.valueOf(RepairInputStatusEnum.INPUT_TASK_IN_FINISHED.getStatusName())); + } else if (!statusList.contains(RepairInputStatusEnum.INPUT_TASK_NO_FINISHED.getStatus()) && + !statusList.contains(RepairInputStatusEnum.INPUT_TASK_TO_REJECT.getStatus()) && + statusList.stream().allMatch(status -> status.equals(RepairInputStatusEnum.TO_UPLOAD.getStatus()))) { + inputInfo.setStatus(String.valueOf(RepairInputStatusEnum.TO_UPLOAD.getStatus())); + inputInfo.setStatusName(String.valueOf(RepairInputStatusEnum.TO_UPLOAD.getStatusName())); } else { inputInfo.setStatus(String.valueOf(RepairInputStatusEnum.INPUT_TASK_NO_FINISHED.getStatus())); inputInfo.setStatusName(String.valueOf(RepairInputStatusEnum.INPUT_TASK_NO_FINISHED.getStatusName())); @@ -285,7 +290,7 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService // 检查条件,确保修试入库条件有效 if (repairInputDetails.getTaskId() != null && repairInputDetails.getTypeId() != null && CollectionUtils.isEmpty(repairInputDetails.getOutTaskList())) { // 内层入库 - result += processInnerStorage(repairInputDetails); + return processInnerStorage(repairInputDetails); } else if (CollectionUtils.isNotEmpty(repairInputDetails.getOutTaskList())) { // 查询外层任务列表,仅供库存日志使用 List taskIdList = repairInputDetails.getOutTaskList().stream() @@ -595,46 +600,134 @@ public class RepairInputDetailsServiceImpl implements IRepairInputDetailsService * @param repairInputDetails * @return */ - private int processInnerStorage(RepairInputDetails repairInputDetails) { + private AjaxResult processInnerStorage(RepairInputDetails repairInputDetails) { int result = 0; - // 获取操作前的库存数量 - repairInputDetails.setPreStoreNum(getStorageNum(repairInputDetails)); - // 入库数量不能大于预入库数量 - if (repairInputDetails.getInputNum() != null && repairInputDetails.getPendingInputNum() != null) { - if (repairInputDetails.getInputNum().compareTo(repairInputDetails.getPendingInputNum()) > 0) { - throw new ServiceException("入库数量不能大于预入库数量"); + try { + // 获取操作前的库存数量 + repairInputDetails.setPreStoreNum(getStorageNum(repairInputDetails)); + // 入库数量不能大于预入库数量 + if (repairInputDetails.getInputNum() != null && repairInputDetails.getPendingInputNum() != null) { + if (repairInputDetails.getInputNum().compareTo(repairInputDetails.getPendingInputNum()) > 0) { + throw new ServiceException("入库数量不能大于预入库数量"); + } } - } - repairInputDetails.setUpdateBy(SecurityUtils.getLoginUser().getUserid().toString()); - repairInputDetails.setUpdateTime(DateUtils.getNowDate()); + // 立体仓修试入库 + if (repairInputDetails.getIsRs() != null && repairInputDetails.getIsRs() == 1) { + Integer manageType = null; + ArrayList list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(repairInputDetails.getMaCodeList())) { + // 编码修试入库 + manageType = 0; + for (int i = 0; i < repairInputDetails.getMaCodeList().size(); i++) { + repairInputDetails.getMaCodeList().get(i).setTaskId(repairInputDetails.getTaskId()); + repairInputDetails.getMaCodeList().get(i).setTypeId(repairInputDetails.getTypeId()); + // 根据taskId以及typeId查询该设备是否已经入库 + RepairInputDetails info = repairInputDetailsMapper.selectInfoNum(repairInputDetails.getMaCodeList().get(i)); + if (info != null) { + if (info.getInputNum().compareTo(info.getRepairNum()) >= 0) { + throw new ServiceException("该设备已经入库,请勿重复入库"); + } + } + AutomaticInPutDto automaticInPutDto = new AutomaticInPutDto(); + automaticInPutDto.setMaterialName(repairInputDetails.getMaTypeName()); + automaticInPutDto.setUnitCode(repairInputDetails.getUnitName()); + automaticInPutDto.setInQty(BigDecimal.ONE); + automaticInPutDto.setMaterialCode(repairInputDetails.getMaCodeList().get(i).getMaCode()); + automaticInPutDto.setLineNum(i + 1); + automaticInPutDto.setTypeId(repairInputDetails.getTypeId()); + automaticInPutDto.setPendingInputNum(BigDecimal.ONE); + automaticInPutDto.setMaId(repairInputDetails.getMaCodeList().get(i).getMaId()); + list.add(automaticInPutDto); + } + } else { + // 数量修试入库 + AutomaticInPutDto automaticInPutDto = new AutomaticInPutDto(); + manageType = 1; + automaticInPutDto.setMaterialName(repairInputDetails.getMaTypeName()); + automaticInPutDto.setUnitCode(repairInputDetails.getUnitName()); + automaticInPutDto.setInQty(repairInputDetails.getInputNum()); + automaticInPutDto.setLineNum(1); + automaticInPutDto.setTypeId(repairInputDetails.getTypeId()); + automaticInPutDto.setPendingInputNum(repairInputDetails.getPendingInputNum()); + list.add(automaticInPutDto); + } + Map map = new HashMap<>(); + map.put("agreementId", repairInputDetails.getAgreementId()); + map.put("ExternalNo", repairInputDetails.getInputCode()); + map.put("taskId", repairInputDetails.getTaskId()); + map.put("manageType", manageType); + map.put("InDes", "修试入库"); + map.put("DtlList", list); + String body = JSONObject.toJSONString(map); + // 立体库本地建立入库单接口路径 + String url = MaterialConstants.TEST_CREATE_IN_URL; + // 立体库生产建立入库单接口路径 + //String url = MaterialConstants.PROD_CREATE_IN_URL; + String data = AutomaticHttpHelper.sendHttpPostPushCost(url, body); + if (StringUtils.isEmpty(data)) { + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "立体仓入库单创建失败"); + } + JSONObject object = JSONObject.parseObject(data); + String code = object.getString("code"); + if ("0".equals(code)) { + if (CollectionUtils.isNotEmpty(repairInputDetails.getMaCodeList())) { + for (RepairInputDetails inputDetails : repairInputDetails.getMaCodeList()) { + inputDetails.setStatus(RepairInputStatusEnum.TO_UPLOAD.getStatus().toString()); + inputDetails.setTaskId(repairInputDetails.getTaskId()); + inputDetails.setTypeId(repairInputDetails.getTypeId()); + inputDetails.setUpdateBy(SecurityUtils.getLoginUser().getUserid().toString()); + inputDetails.setUpdateTime(DateUtils.getNowDate()); + result += repairInputDetailsMapper.updateRepairStatus(inputDetails); + // 待上架 + inputDetails.setStatus(MaMachineStatusEnum.TO_UPLOAD.getStatus().toString()); + repairInputDetailsMapper.updateStatus(inputDetails); + } + } else { + repairInputDetails.setStatus(RepairInputStatusEnum.TO_UPLOAD.getStatus().toString()); + repairInputDetails.setUpdateBy(SecurityUtils.getLoginUser().getUserid().toString()); + repairInputDetails.setUpdateTime(DateUtils.getNowDate()); + result += repairInputDetailsMapper.updateRepairStatus(repairInputDetails); + } + return AjaxResult.success("立体仓入库单创建成功"); + } else { + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "立体仓入库单创建失败"); + } + } + repairInputDetails.setUpdateBy(SecurityUtils.getLoginUser().getUserid().toString()); + repairInputDetails.setUpdateTime(DateUtils.getNowDate()); - // 编码类型入库 - if (CollectionUtils.isNotEmpty(repairInputDetails.getMaCodeList())) { - for (RepairInputDetails inputDetails : repairInputDetails.getMaCodeList()) { - inputDetails.setTaskId(repairInputDetails.getTaskId()); - inputDetails.setTypeId(repairInputDetails.getTypeId()); + // 编码类型入库 + if (CollectionUtils.isNotEmpty(repairInputDetails.getMaCodeList())) { + for (RepairInputDetails inputDetails : repairInputDetails.getMaCodeList()) { + inputDetails.setTaskId(repairInputDetails.getTaskId()); + inputDetails.setTypeId(repairInputDetails.getTypeId()); + // 根据taskId以及typeId查询该设备是否已经入库 + RepairInputDetails info = repairInputDetailsMapper.selectInfoNum(inputDetails); + if (info != null) { + if (info.getInputNum().compareTo(info.getRepairNum()) >= 0) { + throw new ServiceException("该设备已经入库,请勿重复入库"); + } + } + } + result += processCodeTypeStorage(repairInputDetails); + } else { // 根据taskId以及typeId查询该设备是否已经入库 - RepairInputDetails info = repairInputDetailsMapper.selectInfoNum(inputDetails); - if (info != null) { - if (info.getInputNum().compareTo(info.getRepairNum()) >= 0) { + RepairInputDetails inputDetails = repairInputDetailsMapper.selectInfoNum(repairInputDetails); + if (inputDetails != null) { + if (inputDetails.getInputNum().compareTo(inputDetails.getRepairNum()) >= 0) { throw new ServiceException("该设备已经入库,请勿重复入库"); } } + // 数量类型入库 + result += processQuantityTypeStorage(repairInputDetails); } - result += processCodeTypeStorage(repairInputDetails); - } else { - // 根据taskId以及typeId查询该设备是否已经入库 - RepairInputDetails inputDetails = repairInputDetailsMapper.selectInfoNum(repairInputDetails); - if (inputDetails != null) { - if (inputDetails.getInputNum().compareTo(inputDetails.getRepairNum()) >= 0) { - throw new ServiceException("该设备已经入库,请勿重复入库"); - } - } - // 数量类型入库 - result += processQuantityTypeStorage(repairInputDetails); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); } - - return result; + if (result > 0) { + return AjaxResult.success("入库成功"); + } + return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg()); } /** 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 7dca9865..200c3360 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 @@ -2466,4 +2466,62 @@ public class RepairServiceImpl implements RepairService { repairMapper.updateStatusByRepairScrapNum(bean.getId()); } + /** + * 获取修试查询列表 + * @param bean + * @return + */ + @Override + public List getRepairDetailsList(RepairTaskDetails bean) { + List repairDeviceSummaryVoList = new ArrayList<>(); + List repairDeviceList = repairMapper.getRepairDetailsList(bean); + Map> map = repairDeviceList.stream().collect(Collectors.groupingBy(RepairDeviceVO::getTypeId)); + for (Long key : map.keySet()) { + List tempList = map.get(key); + if (CollectionUtil.isNotEmpty(tempList)) { + RepairDeviceSummaryVo vo = new RepairDeviceSummaryVo(); + Long[] ids = tempList.stream().map(RepairDeviceVO::getId).toArray(Long[]::new); + BigDecimal repairNumSum = tempList.stream() + .map(RepairDeviceVO::getRepairNum) + .map(num -> Optional.ofNullable(num).orElse(BigDecimal.ZERO)) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal repairedNumSum = tempList.stream() + .map(RepairDeviceVO::getRepairedNum) + .map(num -> Optional.ofNullable(num).orElse(BigDecimal.ZERO)) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal scrapNumSum = tempList.stream() + .map(RepairDeviceVO::getScrapNum) + .map(num -> Optional.ofNullable(num).orElse(BigDecimal.ZERO)) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal completeNum = tempList.stream() + .map(RepairDeviceVO::getCompleteNum) + .map(num -> Optional.ofNullable(num).orElse(BigDecimal.ZERO)) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + Integer dataStatusSum = tempList.stream() + .map(RepairDeviceVO::getDataStatus) + .filter(Objects::nonNull) + .map(status -> "1".equals(status) ? 1 : 0) // 安全转换 + .reduce(0, Integer::sum); + BigDecimal waitRepairNum = repairNumSum.subtract(repairedNumSum).subtract(scrapNumSum); + BigDecimal typeCostSum = tempList.stream().map(RepairDeviceVO::getTotalCost).reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setRepairDeviceList(tempList) + .setIds(ids).setTypeRepairNum(repairNumSum).setTypeRepairedNum(repairedNumSum) + .setTypeScrapNum(scrapNumSum).setTaskId(tempList.get(0).getTaskId()) + .setCode(tempList.get(0).getCode()).setTypeName(tempList.get(0).getTypeName()) + .setTypeId(tempList.get(0).getTypeId()).setType(tempList.get(0).getType()) + .setUnitName(tempList.get(0).getUnitName()).setManageType(tempList.get(0).getManageType()) + .setDataStatusNum(dataStatusSum) + .setUnitValue(tempList.get(0).getUnitValue()) + .setWaitRepairNum(waitRepairNum) + .setCompleteNum(completeNum) + .setTypeCost(typeCostSum) + .setBackPro(tempList.get(0).getBackPro()) + .setBackUnit(tempList.get(0).getBackUnit()); + repairDeviceSummaryVoList.add(vo); + } + } + return repairDeviceSummaryVoList; + } + } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml index 40b023e7..3df6b2fa 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckDetailsMapper.xml @@ -53,7 +53,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" pcd.file_url, pcd.company_id, pcd.fix_code, mt.type_name, mt.unit_name, mt.unit_value,mtp.type_name as ma_type_name,mtp2.type_name as ma_type_model, mt.manage_type as manage_type, pcd.warn_documents as warnDocuments, pcd.reason as reason, mt.rent_price as rentPrice, su.sign_url as signUrl, su.sign_type as signType,msi.supplier as supplier_name, su2.sign_url as signUrls, - su2.sign_type as signTypes + su2.sign_type as signTypes, + mt.is_rs as isRs from purchase_check_details pcd left join ma_supplier_info msi on msi.supplier_id = pcd.supplier_id left join ma_type mt on pcd.type_id = mt.type_id diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml index 8b9341e7..9c344521 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseCheckInfoMapper.xml @@ -34,10 +34,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select pci.id, pci.task_id, pci.purchase_time, pci.arrival_time, pci.purchaser, pci.supplier_id, pci.tax_rate, pci.create_by, - pci.create_time, pci.update_by, pci.update_time, pci.remark, pci.company_id, pcd.production_time + pci.create_time, pci.update_by, pci.update_time, pci.remark, pci.company_id, pcd.production_time, t.code from purchase_check_info pci left join purchase_check_details pcd ON pci.task_id = pcd.task_id + left join tm_task t on t.task_id = pci.task_id diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml index 390b7f41..4619621e 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/purchase/PurchaseStorageMapper.xml @@ -62,6 +62,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" UPDATE purchase_check_details SET `status` = if(bind_num = input_num, #{status}, `status`) WHERE task_id = #{taskId} and type_id = #{typeId} + + UPDATE purchase_check_details + SET up_num = ifnull(up_num, 0) + ifnull(#{bindNum},0) + WHERE id = #{id} + + + UPDATE ma_machine + SET ma_status = #{maStatus} + WHERE ma_code = #{maCode} + and type_id = #{typeId} + + + + UPDATE purchase_check_details SET `status` = if(check_num = up_num, #{updatedStatus}, `status`) WHERE id = #{id} + + + + UPDATE purchase_check_details + SET `status` = #{updatedStatus}, + up_num = #{inputNum} + WHERE id = #{id} + + + +