diff --git a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java index 2b9af940..8fbf488e 100644 --- a/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java +++ b/win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java @@ -404,24 +404,20 @@ public interface ErrorCodeConstants { ErrorCode PURCHASE_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_000_069_001, "要货计划子不存在"); //供应商发货申请主ErrorCode ErrorCode SUPPLIERDELIVER_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_070_000, "供应商发货申请主不存在"); - //供应商发货申请子ErrorCode ErrorCode SUPPLIERDELIVER_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_070_001, "供应商发货申请子不存在"); - //供应商发货记录主ErrorCode ErrorCode SUPPLIERDELIVER_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_071_000, "供应商发货记录主不存在"); - //供应商发货记录子ErrorCode ErrorCode SUPPLIERDELIVER_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_071_001, "供应商发货记录不存在"); - //采购收货申请主ErrorCode ErrorCode PURCHASERECEIPT_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_072_000, "采购收货申请主不存在"); - //采购收货申请子ErrorCode ErrorCode PURCHASERECEIPT_REQUEST_DETAIL_NOT_EXISTS = new ErrorCode(1_000_072_001, "采购收货申请子不存在"); //采购收货任务主ErrorCode ErrorCode PURCHASERECEIPT_JOB_MAIN_NOT_EXISTS = new ErrorCode(1_000_073_000, "采购收货任务主不存在"); //采购收货任务子ErrorCode ErrorCode PURCHASERECEIPT_JOB_DETAIL_NOT_EXISTS = new ErrorCode(1_000_073_001, "采购收货任务子不存在"); ErrorCode PURCHASERECEIPT_JOB_MAIN_STATUS_ERROR = new ErrorCode(1_000_073_002, "采购收货任务状态错误"); - //采购收货记录主ErrorCode + ErrorCode PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW = new ErrorCode(1_000_073_003, "采购收货不是新增状态,不能修改"); + ErrorCode PURCHASERECEIPT_REQUEST_JOB_EXISTS = new ErrorCode(1_000_073_004, "采购收货存在采购收货任务单,不能删除"); + //采购收货任务子ErrorCode ErrorCode PURCHASERECEIPT_RECORD_MAIN_NOT_EXISTS = new ErrorCode(1_000_074_000, "采购收货记录主不存在"); - //采购收货记录子ErrorCode ErrorCode PURCHASERECEIPT_RECORD_DETAIL_NOT_EXISTS = new ErrorCode(1_000_074_001, "采购收货记录子不存在"); //采购退货申请主ErrorCode ErrorCode PURCHASERETURN_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_075_000, "采购退货申请主不存在"); diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java index ef4118ab..2ba7151b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptJob/PurchasereceiptJobMainMapper.java @@ -1,15 +1,18 @@ package com.win.module.wms.dal.mysql.purchasereceiptJob; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainExportReqVO; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainPageReqVO; +import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainRespVO; import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; +import com.win.module.wms.enums.order.OrderStatusEnum; import org.apache.ibatis.annotations.Mapper; -import com.win.module.wms.controller.purchasereceiptJob.vo.*; + +import java.util.List; /** * 采购收货任务主 Mapper @@ -71,6 +74,13 @@ public interface PurchasereceiptJobMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default Long selectByRequestNumber(String requestNumbere) { + return selectCount(new LambdaQueryWrapperX() + .eq(PurchasereceiptJobMainDO::getRequestNumber, requestNumbere) + .eq(PurchasereceiptJobMainDO::getStatus, OrderStatusEnum.CLOSED.getCode())); + } + default List selectList(PurchasereceiptJobMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasereceiptJobMainDO::getRequestNumber, reqVO.getRequestNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java index 8391f231..85378b4c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchasereceiptRequest/PurchasereceiptRequestMainMapper.java @@ -1,17 +1,17 @@ package com.win.module.wms.dal.mysql.purchasereceiptRequest; -import java.util.*; - import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; -import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExportReqVO; import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainPageReqVO; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 采购收货申请主 Mapper * @@ -55,6 +55,11 @@ public interface PurchasereceiptRequestMainMapper extends BaseMapperX selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } + + default PurchasereceiptRequestMainDO selectBySupplierCode(String supplierCode) { + return selectOne(PurchasereceiptRequestMainDO::getSupplierCode,supplierCode); + } + default List selectList(PurchasereceiptRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(PurchasereceiptRequestMainDO::getAsnNumber, reqVO.getAsnNumber()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusEnum.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusEnum.java index 526fefed..8643caf1 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusEnum.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusEnum.java @@ -1,19 +1,19 @@ package com.win.module.wms.enums.job; public enum JobStatusEnum { - PENDING(1), // 待处理 - PROCESSING(2), // 进行中 - COMPLETED(3), // 完成 - CLOSED(4), // 关闭 + PENDING("1"), // 待处理 + PROCESSING("2"), // 进行中 + COMPLETED("3"), // 完成 + CLOSED("4"), // 关闭 ; - private final Integer code; + private final String code; - JobStatusEnum(int code) { + JobStatusEnum(String code) { this.code = code; } - public int getCode() { + public String getCode() { return code; } @@ -22,9 +22,9 @@ public enum JobStatusEnum { * @param status * @return */ - static JobStatusEnum getJobStatusEnum(int status) { + static JobStatusEnum getJobStatusEnum(String status) { for (JobStatusEnum jobStatusEnum : values()) { - if (jobStatusEnum.getCode() == status) { + if (jobStatusEnum.getCode().equals(status)) { return jobStatusEnum; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusState.java index 67ce9957..083d2395 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/job/JobStatusState.java @@ -21,7 +21,7 @@ public class JobStatusState { * 构造函数,当前状态 * @param status */ - public JobStatusState(int status) { + public JobStatusState(String status) { this.jobStatusEnum = JobStatusEnum.getJobStatusEnum(status); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusEnum.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusEnum.java index 2075345c..8460e6cd 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusEnum.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusEnum.java @@ -2,18 +2,18 @@ package com.win.module.wms.enums.order; public enum OrderStatusEnum { - READY(1), // 准备 - PUBLISHED(2), // 发布 - CLOSED(3), // 关闭 - COMPLETED(4), // 已完成 + READY("1"), // 准备 + PUBLISHED("2"), // 发布 + CLOSED("3"), // 关闭 + COMPLETED("4"), // 已完成 ; - private final Integer code; + private String code; - OrderStatusEnum(int code) { + OrderStatusEnum(String code) { this.code = code; } - public int getCode() { + public String getCode() { return code; } @@ -22,9 +22,9 @@ public enum OrderStatusEnum { * @param status * @return */ - static OrderStatusEnum getJobStatusEnum(int status) { + static OrderStatusEnum getJobStatusEnum(String status) { for (OrderStatusEnum jobStatusEnum : values()) { - if (jobStatusEnum.getCode() == status) { + if (jobStatusEnum.getCode().equals(status)) { return jobStatusEnum; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusState.java index 129062c5..e4f1ca88 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/order/OrderStatusState.java @@ -21,7 +21,7 @@ public class OrderStatusState { * 构造函数,当前状态 * @param status */ - public OrderStatusState(int status) { + public OrderStatusState(String status) { this.orderStatusEnum = OrderStatusEnum.getJobStatusEnum(status); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusEnum.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusEnum.java index 2ee174a1..5d758576 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusEnum.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusEnum.java @@ -2,21 +2,21 @@ package com.win.module.wms.enums.plan; public enum PlanStatusEnum { - NEW(1), // 新增 - REVIEWING(2), // 审批中 - AGREED(3), // 审批通过 - REFUSED(4), // 审批驳回 - CLOSED(5), // 关闭 - PUBLISHED(6), // 发布 - COMPLETED(7), // 已完成 + NEW("1"), // 新增 + REVIEWING("2"), // 审批中 + AGREED("3"), // 审批通过 + REFUSED("4"), // 审批驳回 + CLOSED("5"), // 关闭 + PUBLISHED("6"), // 发布 + COMPLETED("7"), // 已完成 ; - private final Integer code; + private final String code; - PlanStatusEnum(int code) { + PlanStatusEnum(String code) { this.code = code; } - public int getCode() { + public String getCode() { return code; } @@ -25,9 +25,9 @@ public enum PlanStatusEnum { * @param status * @return */ - static PlanStatusEnum getJobStatusEnum(int status) { + static PlanStatusEnum getJobStatusEnum(String status) { for (PlanStatusEnum jobStatusEnum : values()) { - if (jobStatusEnum.getCode() == status) { + if (jobStatusEnum.getCode().equals(status)) { return jobStatusEnum; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java index f24926b6..b5fd1118 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java @@ -21,7 +21,7 @@ public class PlanStatusState { * 构造函数,当前状态 * @param status */ - public PlanStatusState(int status) { + public PlanStatusState(String status) { this.orderStatusEnum = PlanStatusEnum.getJobStatusEnum(status); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusEnum.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusEnum.java index ea5947b0..09b0493b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusEnum.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusEnum.java @@ -2,23 +2,23 @@ package com.win.module.wms.enums.request; public enum RequestStatusEnum { - NEW(1), // 新增 - REVIEWING(2), // 审批中 - AGREED(3), // 审批通过 - REFUSED(4), // 审批驳回 - CLOSED(5), // 关闭 - HANDLING(6), // 处理中 - PARTIAL(7), // 部分完成 - COMPLETED(8), // 已完成 - ABORT(9), // 中止 + NEW("1"), // 新增 + REVIEWING("2"), // 审批中 + AGREED("3"), // 审批通过 + REFUSED("4"), // 审批驳回 + CLOSED("5"), // 关闭 + HANDLING("6"), // 处理中 + PARTIAL("7"), // 部分完成 + COMPLETED("8"), // 已完成 + ABORT("9"), // 中止 ; - private final Integer code; + private final String code; - RequestStatusEnum(int code) { + RequestStatusEnum(String code) { this.code = code; } - public int getCode() { + public String getCode() { return code; } @@ -27,9 +27,9 @@ public enum RequestStatusEnum { * @param status * @return */ - static RequestStatusEnum getRequestStatusEnum(int status) { + static RequestStatusEnum getRequestStatusEnum(String status) { for (RequestStatusEnum jobStatusEnum : values()) { - if (jobStatusEnum.getCode() == status) { + if (jobStatusEnum.getCode().equals(status)) { return jobStatusEnum; } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java index 9c1180c4..097019eb 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/request/RequestStatusState.java @@ -23,7 +23,7 @@ public class RequestStatusState { * 构造函数,当前状态 * @param status */ - public RequestStatusState(int status) { + public RequestStatusState(String status) { this.requestStatusEnum = RequestStatusEnum.getRequestStatusEnum(status); } @@ -40,6 +40,7 @@ public class RequestStatusState { * @return */ public boolean newObject(RequestsettingDO requestsettingDO) { + this.requestStatusEnum = RequestStatusEnum.NEW; if("TRUE".equals(requestsettingDO.getAutoCommit())) { this.requestStatusEnum = RequestStatusEnum.REVIEWING; if("TRUE".equals(requestsettingDO.getAutoAgree())) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java index 2b0b7fd9..034686a7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java @@ -8,7 +8,6 @@ import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.common.util.validation.ValidationUtils; -import com.win.framework.dict.core.util.DictFrameworkUtils; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; import com.win.module.wms.controller.purchasereceiptRequest.vo.*; @@ -17,14 +16,20 @@ import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestD import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; +import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; +import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper; import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestDetailMapper; import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestMainMapper; -import com.win.module.wms.enums.DictTypeConstants; +import com.win.module.wms.enums.request.RequestStatusEnum; +import com.win.module.wms.enums.request.RequestStatusState; import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.rule.RuleService; import com.win.module.wms.service.supplier.SupplierService; import com.win.module.wms.service.supplieritem.SupplieritemService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -59,6 +64,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq private SerialNumberApi serialNumberApi; @Resource private Validator validator; + @Resource + private RequestsettingService requestsettingService; + @Resource + private PurchasereceiptJobMainMapper purchasereceiptJobMainMapper; @Override public Long createPurchasereceiptRequestMain(PurchasereceiptRequestMainCreateReqVO createReqVO) { @@ -71,7 +80,17 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq } String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO); + mainDo.setStatus(requestStatusState.getState().getCode()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + //调用自动执行方法 + if(requestsettingDO.getAutoCommit().equals("TRUE") && requestsettingDO.getAutoAgree().equals("TRUE") && requestsettingDO.getAutoExecute().equals("TREU")) { + + } purchasereceiptRequestMainMapper.insert(mainDo); for (PurchasereceiptRequestDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); @@ -85,7 +104,10 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Override public Integer updatePurchasereceiptRequestMain(PurchasereceiptRequestMainUpdateReqVO updateReqVO) { // 校验存在 - validatePurchasereceiptRequestMainExists(updateReqVO.getId()); + PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(updateReqVO.getId()); + if(existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { + throw new ServiceException(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); + } // 更新 PurchasereceiptRequestMainDO updateObj = PurchasereceiptRequestMainConvert.INSTANCE.convert(updateReqVO); return purchasereceiptRequestMainMapper.updateById(updateObj); @@ -97,7 +119,11 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq @Override public Integer deletePurchasereceiptRequestMain(Long id) { // 校验存在 - validatePurchasereceiptRequestMainExists(id); + PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(id); + Long count = purchasereceiptJobMainMapper.selectByRequestNumber(existPurchasereceiptRequestMainDO.getNumber()); + if(count > 0) { + throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS); + } // 删除子表数据 Map map = new HashMap<>(); map.put("master_id", id); @@ -107,10 +133,12 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq return purchasereceiptRequestMainMapper.deleteById(id); } - private void validatePurchasereceiptRequestMainExists(Long id) { - if (purchasereceiptRequestMainMapper.selectById(id) == null) { + private PurchasereceiptRequestMainDO validatePurchasereceiptRequestMainExists(Long id) { + PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = purchasereceiptRequestMainMapper.selectById(id); + if (existPurchasereceiptRequestMainDO == null) { throw exception(PURCHASERECEIPT_REQUEST_MAIN_NOT_EXISTS); } + return existPurchasereceiptRequestMainDO; } @Override @@ -159,17 +187,42 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq } //写入数据 if(flag) { - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); - mainDo.setNumber(number); - mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - purchasereceiptRequestMainMapper.insert(mainDo); - for (PurchasereceiptRequestDetailDO detailDO : subDOList) { - detailDO.setMasterId(mainDo.getId()); - detailDO.setNumber(number); + PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = purchasereceiptRequestMainMapper.selectBySupplierCode(mainDo.getSupplierCode()); + if(existPurchasereceiptRequestMainDO == null && mode != 3) {//新增 + purchasereceiptRequestMainMapper.insert(mainDo); + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + mainDo.setNumber(number); + RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); + RequestStatusState requestStatusState = new RequestStatusState(); + requestStatusState.newObject(requestsettingDO); + mainDo.setStatus(requestStatusState.getState().getCode()); + mainDo.setAutoCommit(requestsettingDO.getAutoCommit()); + mainDo.setAutoAgree(requestsettingDO.getAutoAgree()); + mainDo.setAutoExecute(requestsettingDO.getAutoExecute()); + for (PurchasereceiptRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(number); + } + //调用自动执行方法 + if(requestsettingDO.getAutoCommit().equals("TRUE") && requestsettingDO.getAutoAgree().equals("TRUE") && requestsettingDO.getAutoExecute().equals("TREU")) { + + } + purchasereceiptRequestDetailMapper.insertBatch(subDOList); + } else if(existPurchasereceiptRequestMainDO != null && existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode()) && mode != 2) {//修改 + BeanUtils.copyProperties(existPurchasereceiptRequestMainDO, mainDo); + purchasereceiptRequestMainMapper.updateById(mainDo); + for (PurchasereceiptRequestDetailDO detailDO : subDOList) { + detailDO.setMasterId(mainDo.getId()); + detailDO.setNumber(mainDo.getNumber()); + purchasereceiptRequestDetailMapper.insertBatch(subDOList); + } } - purchasereceiptRequestDetailMapper.insertBatch(subDOList); } }); + //错误不为空并非部分更新,手工回滚 + if(!errorList.isEmpty() && !updatePart) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } return errorList; }