Browse Source

Merge remote-tracking branch 'origin/master'

master
廉洪喜 2 years ago
parent
commit
a971aa0fef
  1. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java
  2. 6
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java
  3. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainUpdateReqVO.java
  4. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java
  5. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanMainConvert.java
  6. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseDetailMapper.java
  7. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainService.java
  8. 247
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/PurchasePlanMainController.java

@ -55,8 +55,8 @@ public class PurchasePlanMainController {
@Operation(summary = "更新要货计划主")
@PreAuthorize("@ss.hasPermission('wms:purchase-plan-main:update')")
public CommonResult<Boolean> updatePurchasePlanMain(@Valid @RequestBody PurchasePlanMainUpdateReqVO updateReqVO) {
purchasePlanMainService.updatePurchasePlanMain(updateReqVO);
return success(true);
Long result = purchasePlanMainService.updatePurchasePlanMain(updateReqVO);
return success(result > 0);
}
@DeleteMapping("/delete")

6
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainBaseVO.java

@ -33,18 +33,17 @@ public class PurchasePlanMainBaseVO {
private String dockCode;
@Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "单据号不能为空")
private String number;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "业务类型不能为空")
private String businessType;
@Schema(description = "备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "创建时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime;
@ -68,7 +67,6 @@ public class PurchasePlanMainBaseVO {
private String updater;
@Schema(description = "是否可用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否可用不能为空")
private String available;
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchasePlan/vo/PurchasePlanMainUpdateReqVO.java

@ -1,12 +1,17 @@
package com.win.module.wms.controller.purchasePlan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.util.List;
@Schema(description = "管理后台 - 要货计划主更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PurchasePlanMainUpdateReqVO extends PurchasePlanMainBaseVO {
@Schema(description = "子表数据")
private List<PurchasePlanDetailUpdateReqVO> subList;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanDetailConvert.java

@ -35,6 +35,8 @@ public interface PurchasePlanDetailConvert {
List<PurchasePlanDetailDO> convertList03(List<PurchasePlanDetailCreateReqVO> list);
List<PurchasePlanDetailDO> convertList05(List<PurchasePlanDetailUpdateReqVO> list);
PurchasePlanDetailCreateReqVO convert1(PurchasePlanDetailDO bean);
@Mappings({
@ -50,4 +52,6 @@ public interface PurchasePlanDetailConvert {
PurchasePlanMainImportErrorVO convert(PurchasePlanMainCreateReqVO mainVo,PurchasePlanDetailCreateReqVO detailVo);
PurchasePlanMainImportErrorVO convert(PurchasePlanMainCreateReqVO mainVo, PurchasePlanDetailDO detailDo);
}

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchasePlan/PurchasePlanMainConvert.java

@ -1,16 +1,12 @@
package com.win.module.wms.convert.purchasePlan;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainCreateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainExcelVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainRespVO;
import com.win.module.wms.controller.purchasePlan.vo.PurchasePlanMainUpdateReqVO;
import com.win.module.wms.controller.purchasePlan.vo.*;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import java.util.List;
/**
* 要货计划主 Convert
@ -26,6 +22,8 @@ public interface PurchasePlanMainConvert {
PurchasePlanMainDO convert(PurchasePlanMainUpdateReqVO bean);
PurchasePlanMainDO convert(PurchasePlanMainBaseVO baseVO);
PurchasePlanMainRespVO convert(PurchasePlanMainDO bean);
List<PurchasePlanMainRespVO> convertList(List<PurchasePlanMainDO> list);

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseDetailMapper.java

@ -22,7 +22,7 @@ public interface PurchaseDetailMapper extends BaseMapperX<PurchaseDetailDO> {
default PageResult<PurchaseDetailDO> selectPage(PurchaseDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PurchaseDetailDO>()
.eq(PurchaseDetailDO::getMasterId,reqVO.getMasterId())
.eqIfPresent(PurchaseDetailDO::getMasterId,reqVO.getMasterId())
.eqIfPresent(PurchaseDetailDO::getLineNumber, reqVO.getLineNumber())
.eqIfPresent(PurchaseDetailDO::getErpLocationCode, reqVO.getErpLocationCode())
.eqIfPresent(PurchaseDetailDO::getProjectCode, reqVO.getProjectCode())

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainService.java

@ -37,7 +37,7 @@ public interface PurchasePlanMainService {
*
* @param updateReqVO 更新信息
*/
void updatePurchasePlanMain(@Valid PurchasePlanMainUpdateReqVO updateReqVO);
Long updatePurchasePlanMain(@Valid PurchasePlanMainUpdateReqVO updateReqVO);
/**
* 删除要货计划主

247
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasePlan/PurchasePlanMainServiceImpl.java

@ -9,6 +9,8 @@ import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.purchasePlan.vo.*;
import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert;
import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert;
@ -16,21 +18,24 @@ import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanDetailDO;
import com.win.module.wms.dal.dataobject.purchasePlan.PurchasePlanMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.shift.ShiftDO;
import com.win.module.wms.dal.dataobject.supplier.SupplierDO;
import com.win.module.wms.dal.dataobject.supplieritem.SupplieritemDO;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanDetailMapper;
import com.win.module.wms.dal.mysql.purchasePlan.PurchasePlanMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PurchasePlanStatusEnum;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.requestsetting.RequestsettingService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.supplier.SupplierService;
import com.win.module.wms.service.supplieritem.SupplieritemService;
import com.win.module.wms.util.JobUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -66,24 +71,42 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
private JobUtils jobUtils;
@Resource
private TrendsApi trendsApi;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private SupplierService supplierService;
@Resource
private RequestsettingService requestsettingService;
@Override
public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) {
// 插入
PurchasePlanMainDO purchasePlanMain = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMain.setCreateTime(LocalDateTime.now());
purchasePlanMainMapper.insert(purchasePlanMain);
// 返回
return purchasePlanMain.getId();
// 插入主表
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan");
createReqVO.setBusinessType(businesstypeDO.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PLAN.getCode());
createReqVO.setNumber(number);
createReqVO.setCreateTime(LocalDateTime.now());
PurchasePlanMainDO purchasePlanMainDO = validatorToCreate(createReqVO);
//调用自动执行方法
if (RequestStatusEnum.HANDLING.getCode().equals(purchasePlanMainDO.getStatus())) {
}
trendsApi.createTrends(purchasePlanMainDO.getId(), "PurchaseOrder", "增加了采购订单", TrendsTypeEnum.CREATE);
return purchasePlanMainDO.getId();
}
@Override
public void updatePurchasePlanMain(PurchasePlanMainUpdateReqVO updateReqVO) {
// 校验存在
public Long updatePurchasePlanMain(PurchasePlanMainUpdateReqVO updateReqVO) {
RequestsettingDO requestsettingDO = requestsettingDO = requestsettingService.selectRequestsettingExist("PurchasePlan");
// 校验存在,如子表需要也再此校验
validatePurchasePlanMainExists(updateReqVO.getId());
// 更新
PurchasePlanMainDO updateObj = PurchasePlanMainConvert.INSTANCE.convert(updateReqVO);
purchasePlanMainMapper.updateById(updateObj);
// 更新主表
PurchasePlanMainDO purchasePlanMainDO = validatorToUpdate(updateReqVO);
if (RequestStatusEnum.HANDLING.getCode().equals(purchasePlanMainDO.getStatus())) {
}
trendsApi.createTrends(requestsettingDO.getId(), "PurchaseclaimRequest", "增加了采购索赔申请", TrendsTypeEnum.CREATE);
return purchasePlanMainDO.getId();
}
@Override
@ -154,89 +177,153 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService {
}
}
//主表校验 校验供应商基础信息
private SupplierDO validatorShiftExist(String supplierCode) {
return supplierService.selectSupplier(supplierCode);
}
//子表校验 校验供应商基础信息
private void validatorItembasic(String itemCode) {
itembasicService.selectItembasic(itemCode);
}
//子表校验 校验供应商物品
private SupplieritemDO validatorSupplierItemExist(String supplierCode, String itemCode) {
return supplieritemService.selectSupplierItemExist(supplierCode, itemCode);
}
//校验主表公共方法(适用于新增/修改)
private PurchasePlanMainDO validatorMainMethod(PurchasePlanMainBaseVO baseVO) {
PurchasePlanMainDO mainDo = PurchasePlanMainConvert.INSTANCE.convert(baseVO);
SupplierDO supplierDO = this.validatorShiftExist(mainDo.getSupplierCode());
if (supplierDO == null) {
throw exception(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS);
}
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
return mainDo;
}
//校验子表公共方法(适用于新增/修改)
private void validatorDetailMethod(PurchasePlanDetailDO detailDo, PurchasePlanMainDO mainDo) {
this.validatorItembasic(detailDo.getItemCode());
this.validatorSupplierItemExist(mainDo.getSupplierCode(),detailDo.getItemCode());
}
@Override
@Transactional
public List<PurchasePlanMainImportErrorVO> importPurchasePlanMainList(List<PurchasePlanMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<PurchasePlanMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(createReqVO.getSupplierCode());
BeanUtils.copyProperties(createReqVO, shiftDO);
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
//子表的验证
for (PurchasePlanMainCreateReqVO createReqVO : datas) {
PurchasePlanMainDO mainDo = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
String messageMain = validatorPurchasePlanMainImport(mainDo);
List<PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList);
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchasePlanDetailDO.getItemCode());
if (itembasicDO.getUom() != purchasePlanDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchasePlanDetailDO.getUom() + ",";
}
// purchasePlanDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(createReqVO.getSupplierCode(), purchasePlanDetailDO.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
PurchasePlanDetailCreateReqVO purchasePlanDetailCreateReqVO = PurchasePlanDetailConvert.INSTANCE.convert1(purchasePlanDetailDO);
PurchasePlanMainImportErrorVO importVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, purchasePlanDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
// 是否有错误数据
boolean flag = true;
for (PurchasePlanDetailDO detailDO : subDOList) {
String messageDetail = validatorPurchasePlanDetailImport(detailDO, mainDo);
if (!messageMain.isEmpty() || messageDetail.isEmpty()) {
PurchasePlanMainImportErrorVO importErrorVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchasePlanDetailDO.setNumber(createReqVO.getNumber());
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
PurchasePlanMainDO existPurchaseclaimRequestMainDO = purchasePlanMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMainMapper.insert(createObj);
purchasePlanDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
}
PurchasePlanMainDO createObj = PurchasePlanMainConvert.INSTANCE.convert(createReqVO);
purchasePlanMainMapper.updateById(createObj);
purchasePlanDetailMapper.updateBatch(subDOList);
//写入数据
if (flag) {
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增"));
// mainDo.setOrderDate(LocalDateTime.now());
// mainDo.setTaxRate(BigDecimal.ZERO);
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder");
mainDo.setBusinessType(businesstypeDO.getCode());
mainDo.setAvailable("TRUE");
purchasePlanMainMapper.insert(mainDo);
for (PurchasePlanDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDo.getId());
detailDO.setNumber(mainDo.getNumber());
detailDO.setShippedQty(BigDecimal.ZERO);
detailDO.setAvailable("TRUE");
}
purchasePlanDetailMapper.insertBatch(subDOList);
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}
/**
* 校验主表导入并赋值一些参数
*
* @param mainDo
* @return
*/
private String validatorPurchasePlanMainImport(PurchasePlanMainDO mainDo) {
String messageMain = "";
//主表的验证
//校验供应商基础信息
try {
ShiftDO shiftDO = shiftService.selectShiftExist(mainDo.getSupplierCode());
} catch (ServiceException ex) {
messageMain += ex.getMessage() + ",";
}
return messageMain;
}
private String validatorPurchasePlanDetailImport(PurchasePlanDetailDO detailDo, PurchasePlanMainDO mainDo) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (itembasicDO.getUom() != detailDo.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + detailDo.getUom() + ",";
}
// purchasePlanDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验供应商物品
try {
SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
return messageDetail;
}
//新增校验
private PurchasePlanMainDO validatorToCreate(PurchasePlanMainCreateReqVO createReqVO) {
PurchasePlanMainDO purchasePlanMainDO = validatorMainMethod(createReqVO);
//子表校验
List<PurchasePlanDetailCreateReqVO> subList = createReqVO.getSubList();
List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList03(subList);
purchasePlanMainMapper.insert(purchasePlanMainDO);
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) {
validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO);
purchasePlanDetailDO.setMasterId(purchasePlanMainDO.getId());
purchasePlanDetailDO.setNumber(purchasePlanMainDO.getNumber());
purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO);
purchasePlanDetailDO.setAvailable("TRUE");
}
purchasePlanDetailMapper.insertBatch(subDOList);
return purchasePlanMainDO;
}
//修改校验
private PurchasePlanMainDO validatorToUpdate(PurchasePlanMainUpdateReqVO updateReqVO) {
PurchasePlanMainDO purchasePlanMainDO = validatorMainMethod(updateReqVO);
//子表校验
List<PurchasePlanDetailUpdateReqVO> subList = updateReqVO.getSubList();
List<PurchasePlanDetailDO> subDOList = PurchasePlanDetailConvert.INSTANCE.convertList05(subList);
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) {
validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO);
}
purchasePlanMainMapper.updateById(purchasePlanMainDO);
purchasePlanDetailMapper.updateBatch(subDOList);
return purchasePlanMainDO;
}
@Override
@Transactional
public Integer closePurchasePlanMain(Long id) {

Loading…
Cancel
Save