Browse Source

成品发货申请后端代码修改

master
chenfang 2 years ago
parent
commit
feb735d337
  1. 79
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java
  2. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java
  3. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java
  4. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java
  5. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java
  6. 43
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java
  7. 288
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java

79
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/DeliverRequestMainController.java

@ -137,7 +137,7 @@ public class DeliverRequestMainController {
}
@PostMapping("/export-excel-senior")
@Operation(summary = "导出发货计划主 Excel")
@Operation(summary = "导出发货申请主 Excel")
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:export')")
@OperateLog(type = EXPORT)
public void exportPurchasereceiptRequestMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
@ -185,7 +185,7 @@ public class DeliverRequestMainController {
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:inspect-request-main:import')")
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:import')")
public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@ -205,16 +205,16 @@ public class DeliverRequestMainController {
private List<DeliverRequestMainExcelVO> getExcelVo(List<DeliverRequestMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] transferMode = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRANSFER_MODE);
mapDropDown.put(5, transferMode);
mapDropDown.put(6, transferMode);
String[] locationType = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.LOCATION_TYPE);
mapDropDown.put(9, locationType);
mapDropDown.put(22, locationType);
mapDropDown.put(10, locationType);
mapDropDown.put(23, locationType);
String[] requestStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.REQUEST_STATUS);
mapDropDown.put(19, requestStatus);
mapDropDown.put(20, requestStatus);
String[] inventoryStatus = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.INVENTORY_STATUS);
mapDropDown.put(32, inventoryStatus);
mapDropDown.put(33, inventoryStatus);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(43, uom);
mapDropDown.put(44, uom);
List<DeliverRequestMainExcelVO> resultList = new ArrayList<>();
// 导出
for(DeliverRequestMainDO mainDO : list) {
@ -229,16 +229,57 @@ public class DeliverRequestMainController {
return resultList;
}
@GetMapping("/page111")
public HashMap<String, String> demo(){
String batch = "BatchType\":\"1\", \"BatchFormat\":\"yyyyMMdd\", \"BatchDirection\":\"0\"";
HashMap<String, String> batchRuleMap = new HashMap<>();
String result = batch.replace("\"", "");
String[] split = result.split(",");
for (String s : split) {
String[] split1 = s.split(":");
batchRuleMap.put(split1[0],split1[1]);
}
return batchRuleMap;
@PutMapping("/close")
@Operation(summary = "关闭发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:close')")
public CommonResult<Boolean> closeDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.closeDeliverRequestMain(id);
return success(count > 0);
}
@PutMapping("/reAdd")
@Operation(summary = "重新添加发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:reAdd')")
public CommonResult<Boolean> reAddDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.reAddDeliverRequestMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:submit')")
public CommonResult<Boolean> submitDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.submitDeliverRequestMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:agree')")
public CommonResult<Boolean> agreeDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.agreeDeliverRequestMain(id);
return success(count > 0);
}
@PutMapping("/handle")
@Operation(summary = "处理发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:handle')")
public CommonResult<Boolean> handleDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.handleDeliverRequestMain(id);
return success(count > 0);
}
@PutMapping("/refused")
@Operation(summary = "审批拒绝发货申请申请主")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:deliver-request-main:refused')")
public CommonResult<Boolean> abortDeliverRequestMain(@RequestParam("id") Long id) {
Integer count = deliverRequestMainService.abortDeliverRequestMain(id);
return success(count > 0);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/deliverRequest/vo/DeliverRequestMainExcelVO.java

@ -23,6 +23,9 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class DeliverRequestMainExcelVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("发货计划单号")
private String deliverPlanNumber;
@ -42,8 +45,7 @@ public class DeliverRequestMainExcelVO {
@DictFormat("transfer_mode") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String transferMode;
@ExcelProperty(value = "车牌号", converter = DictConvert.class)
@DictFormat("vehicle_plate_number") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
@ExcelProperty("车牌号")
private String vehiclePlateNumber;
@ExcelProperty("从仓库代码")
@ -59,9 +61,6 @@ public class DeliverRequestMainExcelVO {
@ExcelProperty("从库区代码范围")
private String fromAreaCodes;
@ExcelProperty("单据号")
private String number;
@ExcelProperty("业务类型")
private String businessType;

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestDetailDO.java

@ -43,7 +43,6 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 包装号
*/
@NotBlank
private String packingNumber;
/**
* 器具号
@ -52,14 +51,12 @@ public class DeliverRequestDetailDO extends BaseDO {
/**
* 批次
*/
@NotBlank
private String batch;
/**
* 库存状态
*
* 枚举 {@link TODO inventory_status 对应的类}
*/
@NotBlank
private String inventoryStatus;
/**
* 到货主代码

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/deliverRequest/DeliverRequestMainDO.java

@ -64,7 +64,6 @@ public class DeliverRequestMainDO extends BaseDO {
/**
* 从仓库代码
*/
@NotBlank
private String fromWarehouseCode;
/**
* 到仓库代码

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/deliverRequest/DeliverRequestDetailMapper.java

@ -22,7 +22,7 @@ public interface DeliverRequestDetailMapper extends BaseMapperX<DeliverRequestDe
default PageResult<DeliverRequestDetailDO> selectPage(DeliverRequestDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DeliverRequestDetailDO>()
.eq(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(DeliverRequestDetailDO::getSoNumber, reqVO.getSoNumber())
.eqIfPresent(DeliverRequestDetailDO::getSoLine, reqVO.getSoLine())
.eqIfPresent(DeliverRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())
@ -54,7 +54,7 @@ public interface DeliverRequestDetailMapper extends BaseMapperX<DeliverRequestDe
default List<DeliverRequestDetailDO> selectList(DeliverRequestDetailExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<DeliverRequestDetailDO>()
.eq(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(DeliverRequestDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(DeliverRequestDetailDO::getSoNumber, reqVO.getSoNumber())
.eqIfPresent(DeliverRequestDetailDO::getSoLine, reqVO.getSoLine())
.eqIfPresent(DeliverRequestDetailDO::getPackingNumber, reqVO.getPackingNumber())

43
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainService.java

@ -90,13 +90,54 @@ public interface DeliverRequestMainService {
*/
List<DeliverRequestMainDO> getDeliverPlanMainList(CustomConditions conditions);
/**
* 导入
* @param datas
* @param mode
* @param updatePart
* @return
*/
public List<DeliverRequestImportErrorVO> importDeliverRequestList(List<DeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart);
/**
* 关闭
* @param id
* @return
*/
public Integer closeDeliverRequestMain(Long id);
/**
* 重新添加
* @param id
* @return
*/
public Integer reAddDeliverRequestMain(Long id);
/**
* 提交
* @param id
* @return
*/
public Integer submitDeliverRequestMain(Long id);
/**
* 审批通过
* @param id
* @return
*/
public Integer agreeDeliverRequestMain(Long id);
/**
* 执行
* @param id
* @return
*/
public Integer handleDeliverRequestMain(Long id);
/**
* 审批驳回
* @param id
* @return
*/
public Integer abortDeliverRequestMain(Long id);
}

288
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverRequest/DeliverRequestMainServiceImpl.java

@ -1,6 +1,7 @@
package com.win.module.wms.service.deliverRequest;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.UtilException;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.util.validation.ValidationUtils;
@ -20,6 +21,8 @@ import com.win.module.wms.convert.deliverJob.DeliverJobMainConvert;
import com.win.module.wms.dal.dataobject.balance.BalanceDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customerdock.CustomerdockDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO;
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestDetailDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO;
@ -40,6 +43,8 @@ import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.customer.*;
import com.win.module.wms.service.customerdock.*;
import com.win.module.wms.service.deliverPlan.DeliverPlanDetailService;
import com.win.module.wms.service.deliverPlan.DeliverPlanMainService;
import com.win.module.wms.service.expectout.ExpectoutService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.jobsetting.JobsettingService;
@ -53,6 +58,7 @@ import javax.validation.Validator;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
@ -97,9 +103,16 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
@Resource
private DictDataApi dictDataApi;
@Resource
private CustomerService customerService;
@Resource
private DeliverPlanMainService deliverPlanMainService;
@Resource
private DeliverPlanDetailService deliverPlanDetailService;
@Resource
private CustomerdockService customerdockService;
@ -197,7 +210,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
public PageResult<DeliverRequestMainDO> getDeliverRequestMainSenior(CustomConditions conditions) {
return deliverRequestMainMapper.selectSenior(conditions);
}
@Override
public List<DeliverRequestMainDO> getDeliverRequestMainList(DeliverRequestMainExportReqVO exportReqVO) {
return deliverRequestMainMapper.selectList(exportReqVO);
@ -208,7 +221,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.selectSeniorList(conditions);
}
// @Override
//关闭
@Override
public Integer closeDeliverRequestMain(Long id) {
// 校验存在存在下级单据
@ -227,6 +240,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
//打开
@Override
@Transactional
public Integer reAddDeliverRequestMain(Long id) {
@ -246,7 +260,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
// @Override
//提交
@Transactional
@Override
public Integer submitDeliverRequestMain(Long id) {
@ -265,7 +279,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
// @Override
//审批同意
@Transactional
@Override
public Integer agreeDeliverRequestMain(Long id) {
@ -285,7 +299,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
// @Override
//执行
@Transactional
@Override
public Integer handleDeliverRequestMain(Long id) {
@ -303,7 +317,7 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
// @Override
//审批拒绝
@Transactional
@Override
public Integer abortDeliverRequestMain(Long id) {
@ -319,100 +333,21 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainMapper.updateById(mainDO);
}
/**
* 生成采购收货任务不要改动事务传播方式否则会有事务问题
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
*/
private void generateJob(DeliverRequestMainDO mainDO, List<DeliverRequestDetailDO> detailDOList) {
DeliverJobMainDO deliverJobMainDO = DeliverJobMainConvert.INSTANCE.convert(mainDO);
BeanUtils.copyProperties(mainDO, deliverJobMainDO);
deliverJobMainDO.setRequestNumber(mainDO.getNumber());
deliverJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode());
deliverJobMainDO.setNumber(number);
deliverJobMainDO.setId(null);
deliverJobMainDO.setRequestTime(mainDO.getRequestTime());
deliverJobMainDO.setRequestDueTime(mainDO.getDueTime());
deliverJobMainDO.setCreator(null);
deliverJobMainDO.setCreateTime(null);
deliverJobMainDO.setUpdater(null);
deliverJobMainDO.setUpdateTime(null);
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("DeliverJob");
deliverJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
deliverJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
deliverJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
deliverJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
deliverJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
deliverJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
deliverJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
deliverJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
deliverJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
deliverJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverJob");
deliverJobMainDO.setBusinessType(businesstypeDO.getCode());
deliverJobMainMapper.insert(deliverJobMainDO);
List<ExpectoutCreateReqVO> expectpoutCreateReqVOList = new ArrayList<>();
List<DeliverJobDetailDO> deliverJobDetailDOList = new ArrayList<>();
detailDOList.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty(),mainDO.getFromLocationTypes());
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
DeliverJobDetailDO deliverJobDetailDo = new DeliverJobDetailDO();
BeanUtils.copyProperties(item, deliverJobDetailDo);
deliverJobDetailDo.setId(null);
deliverJobDetailDo.setCreateTime(null);
deliverJobDetailDo.setCreator(null);
deliverJobDetailDo.setUpdateTime(null);
deliverJobDetailDo.setUpdater(null);
deliverJobDetailDo.setProjectCode(item.getProjectCode());
deliverJobDetailDo.setPackingNumber(balanceDOItem.getPackingNumber());
deliverJobDetailDo.setContainerNumber(balanceDOItem.getContainerNumber());
deliverJobDetailDo.setBatch(balanceDOItem.getBatch());
deliverJobDetailDo.setFromLocationCode(balanceDOItem.getLocationCode());
deliverJobDetailDo.setToLocationCode(item.getToLocationCode());
deliverJobDetailDo.setItemCode(item.getItemCode());
deliverJobDetailDo.setItemName(item.getItemName());
deliverJobDetailDo.setItemDesc1(item.getItemDesc1());
deliverJobDetailDo.setItemDesc2(item.getItemDesc2());
deliverJobDetailDo.setProjectCode(item.getProjectCode());
deliverJobDetailDo.setQty(item.getQty());
deliverJobDetailDo.setUom(item.getUom());
deliverJobDetailDo.setNumber(deliverJobMainDO.getNumber());
deliverJobDetailDo.setMasterId(deliverJobMainDO.getId());
deliverJobDetailDo.setInventoryStatus(item.getInventoryStatus());
deliverJobDetailDOList.add(deliverJobDetailDo);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(deliverJobDetailDo, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(deliverJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(deliverJobDetailDo.getFromLocationCode());
expectoutCreateReqVO.setBatch(deliverJobDetailDo.getBatch());
expectoutCreateReqVO.setOwnerCode(deliverJobDetailDo.getOwnerCode());
expectoutCreateReqVO.setQty(deliverJobDetailDo.getQty());
expectoutCreateReqVO.setInventoryStatus("OK");
expectpoutCreateReqVOList.add(expectoutCreateReqVO);
});
});
deliverJobDetailMapper.insertBatch(deliverJobDetailDOList);
//增加预计入
expectoutService.createExpectout(expectpoutCreateReqVOList);
trendsApi.createTrends(deliverJobMainDO.getId(), "DeliverJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE);
}
//导入校验主表方法集合
private String validateDeliverRequestMainImport(DeliverRequestMainDO mainDo, BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
try{
validatorcustomercode(mainDo.getCustomerCode());
validatorDeliverPlanExist(mainDo.getDeliverPlanNumber());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
validatorCustomercode(mainDo.getCustomerCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try{
CustomerdockDO customerdockDO = validatorcustomerDockCode(mainDo.getCustomerCode(),mainDo.getCustomerDockCode());
CustomerdockDO customerdockDO = validatorCustomerDockCode(mainDo.getCustomerCode(),mainDo.getCustomerDockCode());
if(customerdockDO == null){
message.append("未查找到客户" + mainDo.getCustomerCode() + "与" + "客户月台" + mainDo.getCustomerDockCode() + "相关的数据");
}else {
@ -449,15 +384,20 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
}
return message.toString();
}
private String validateIssueRequestDetailImport(DeliverRequestDetailDO detailDo) {
//导入校验子表方法集合
private String validateIssueRequestDetailImport(DeliverRequestMainDO mainDo, DeliverRequestDetailDO detailDo,BusinesstypeDO businesstypeDO) {
StringBuilder message = new StringBuilder();
try {
ItembasicDO itembasicDO = validatoritemcode(detailDo.getItemCode());
ItembasicDO itembasicDO = validatorItemcode(detailDo.getItemCode());
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
if("TRUE".equals(businesstypeDO.getUseOnTheWay())){
detailDo.setToLocationCode("CUST");
}else {
detailDo.setToLocationCode(null);
}
try{
Isuom(itembasicDO.getUom(),detailDo.getUom());
}catch (Exception ex) {
@ -479,6 +419,11 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
// }catch (Exception ex) {
// message.append(ex.getMessage()).append(",");
// }
try {
validatorIfPlanQtyBigThanShipedQty(mainDo.getDeliverPlanNumber(),detailDo.getItemCode());
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
try {
ValidationUtils.validate(validator, detailDo);
} catch (Exception ex) {
@ -487,6 +432,8 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return message.toString();
}
//导入
@Override
@Transactional
public List<DeliverRequestImportErrorVO> importDeliverRequestList(List<DeliverRequestMainCreateReqVO> datas, Integer mode, boolean updatePart){
@ -503,13 +450,14 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
// 是否有错误数据
boolean flag = true;
for (DeliverRequestDetailDO detailDO : subDOList) {
String messageDetail = validateIssueRequestDetailImport(detailDO);
String messageDetail = validateIssueRequestDetailImport(mainDo,detailDO,businesstypeDO);
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) {
DeliverRequestImportErrorVO importErrorVO = DeliverRequestMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
messageMain = "";
flag = false;
}
}
@ -529,12 +477,14 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return errorList;
}
//新增时校验主子表方法
private DeliverRequestMainDO validatorToCreate(DeliverRequestMainCreateReqVO createReqVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) {
DeliverRequestMainDO deliverRequestMainDO = validateMainMethod(createReqVO,businesstypeDO,requestsettingDO);
List<DeliverRequestDetailCreateReqVO> subList = createReqVO.getSubList();
List<DeliverRequestDetailDO> subDOList = DeliverRequestDetailConvert.INSTANCE.convertList03(subList);
for (DeliverRequestDetailDO deliverRequestDetailDO : subDOList) {
validateDetailMethod(deliverRequestDetailDO);
validatorIfPlanQtyBigThanShipedQty(deliverRequestMainDO.getDeliverPlanNumber(),deliverRequestDetailDO.getItemCode());
validateDetailMethod(deliverRequestDetailDO,businesstypeDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_REQUEST.getCode());
deliverRequestMainDO.setNumber(number);
@ -548,10 +498,11 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
return deliverRequestMainDO;
}
//主表校验方法
private DeliverRequestMainDO validateMainMethod(DeliverRequestMainBaseVO baseVO ,BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO){
DeliverRequestMainDO deliverRequestMainDO = DeliverRequestMainConvert.INSTANCE.convert(baseVO);
validatorcustomercode(deliverRequestMainDO.getCustomerCode());
CustomerdockDO customerdockDO = validatorcustomerDockCode(deliverRequestMainDO.getCustomerCode(),deliverRequestMainDO.getCustomerDockCode());
validatorCustomercode(deliverRequestMainDO.getCustomerCode());
CustomerdockDO customerdockDO = validatorCustomerDockCode(deliverRequestMainDO.getCustomerCode(),deliverRequestMainDO.getCustomerDockCode());
if(customerdockDO == null){
deliverRequestMainDO.setToWarehouseCode(null);
}else {
@ -569,42 +520,161 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
deliverRequestMainDO.setToLocationTypes(businesstypeDO.getInLocationTypes());
deliverRequestMainDO.setFromAreaCodes(businesstypeDO.getOutAreaCodes());
deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
deliverRequestMainDO.setToAreaCodes(businesstypeDO.getInAreaCodes());
return deliverRequestMainDO;
}
private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO) {
ItembasicDO itembasicDO = validatoritemcode(deliverRequestDetailDO.getItemCode());
//子表校验方法
private DeliverRequestDetailDO validateDetailMethod(DeliverRequestDetailDO deliverRequestDetailDO,BusinesstypeDO businesstypeDO) {
ItembasicDO itembasicDO = validatorItemcode(deliverRequestDetailDO.getItemCode());
deliverRequestDetailDO.setItemDesc1(itembasicDO.getDesc1());
deliverRequestDetailDO.setItemDesc2(itembasicDO.getDesc2());
deliverRequestDetailDO.setItemName(itembasicDO.getName());
deliverRequestDetailDO.setProjectCode(itembasicDO.getProject());
Isuom(itembasicDO.getUom(),deliverRequestDetailDO.getUom());
SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode());
if ("TRUE".equals(businesstypeDO.getUseOnTheWay())) {
deliverRequestDetailDO.setToLocationCode("CUST");
} else {
deliverRequestDetailDO.setToLocationCode(null);
}
Isuom(itembasicDO.getUom(), deliverRequestDetailDO.getUom());
//TODO 后续销售订单开发后再解除注释
// SaleDetailDO saleDetailDO =validatorSale(deliverRequestDetailDO.getSoNumber(),deliverRequestDetailDO.getSoLine(),deliverRequestDetailDO.getItemCode());
// if(saleDetailDO!=null) {
// Isqty(saleDetailDO.getShippedQty(), deliverRequestDetailDO.getQty(), saleDetailDO.getOrderQty(), deliverRequestDetailDO.getSoNumber(), deliverRequestDetailDO.getSoLine(), deliverRequestDetailDO.getItemCode());
// }
return deliverRequestDetailDO;
}
private void validatorcustomercode(String code){
/**
* 生成采购收货任务不要改动事务传播方式否则会有事务问题
* @param mainDO 采购收货主
* @param detailDOList 采购收货子
*/
private void generateJob(DeliverRequestMainDO mainDO, List<DeliverRequestDetailDO> detailDOList) {
DeliverJobMainDO deliverJobMainDO = DeliverJobMainConvert.INSTANCE.convert(mainDO);
BeanUtils.copyProperties(mainDO, deliverJobMainDO);
deliverJobMainDO.setRequestNumber(mainDO.getNumber());
deliverJobMainDO.setStatus(JobStatusEnum.PENDING.getCode());
String number = serialNumberApi.generateCode(RuleCodeEnum.DELIVER_JOB.getCode());
deliverJobMainDO.setNumber(number);
deliverJobMainDO.setId(null);
deliverJobMainDO.setRequestTime(mainDO.getRequestTime());
deliverJobMainDO.setRequestDueTime(mainDO.getDueTime());
deliverJobMainDO.setCreator(null);
deliverJobMainDO.setCreateTime(null);
deliverJobMainDO.setUpdater(null);
deliverJobMainDO.setUpdateTime(null);
deliverJobMainDO.setStatus("1");
// 获取任务单据设置
JobsettingDO jobsettingDO = jobsettingService.selectJobsettingExist("DeliverJob");
deliverJobMainDO.setAutoComplete(jobsettingDO.getAutoComplete());
deliverJobMainDO.setAllowModifyLocation(jobsettingDO.getAllowModifyLocation());
deliverJobMainDO.setAllowModifyQty(jobsettingDO.getAllowModifyQty());
deliverJobMainDO.setAllowBiggerQty(jobsettingDO.getAllowBiggerQty());
deliverJobMainDO.setAllowSmallerQty(jobsettingDO.getAllowSmallerQty());
deliverJobMainDO.setAllowModifyInventoryStatus(jobsettingDO.getAllowModifyInventoryStatus());
deliverJobMainDO.setAllowContinuousScanning(jobsettingDO.getAllowContinuousScanning());
deliverJobMainDO.setAllowPartialComplete(jobsettingDO.getAllowPartialComplete());
deliverJobMainDO.setAllowModifyPackingNumber(jobsettingDO.getAllowModifyPackingNumber());
deliverJobMainDO.setAllowModifyBatch(jobsettingDO.getAllowModifyBach());
//增加业务类型
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverJob");
deliverJobMainDO.setBusinessType(businesstypeDO.getCode());
deliverJobMainDO.setInInventoryStatuses(businesstypeDO.getInInventoryStatuses());
deliverJobMainDO.setOutInventoryStatuses(businesstypeDO.getOutInventoryStatuses());
deliverJobMainMapper.insert(deliverJobMainDO);
List<ExpectoutCreateReqVO> expectpoutCreateReqVOList = new ArrayList<>();
List<DeliverJobDetailDO> deliverJobDetailDOList = new ArrayList<>();
detailDOList.forEach(item -> {
// 根据批次策略/下架策略 返回 库存余额DO
List<BalanceDO> balanceDOListJob = jobUtils.getBalanceByBatchOffShelf(item.getItemCode(),"OK",item.getProjectCode(),item.getQty(),null);
// 根据 查询出所需数据 解析成 任务子表数据
balanceDOListJob.forEach(balanceDOItem -> {
DeliverJobDetailDO deliverJobDetailDo = new DeliverJobDetailDO();
BeanUtils.copyProperties(item, deliverJobDetailDo);
deliverJobDetailDo.setId(null);
deliverJobDetailDo.setCreateTime(null);
deliverJobDetailDo.setCreator(null);
deliverJobDetailDo.setUpdateTime(null);
deliverJobDetailDo.setUpdater(null);
if("TRUE".equals(businesstypeDO.getUseOnTheWay())){
deliverJobDetailDo.setToLocationCode("FAC_INTRANS");
}else {
deliverJobDetailDo.setToLocationCode(null);
}
deliverJobDetailDo.setPackingNumber(balanceDOItem.getPackingNumber());
deliverJobDetailDo.setContainerNumber(balanceDOItem.getContainerNumber());
deliverJobDetailDo.setBatch(balanceDOItem.getBatch());
deliverJobDetailDo.setFromLocationCode(balanceDOItem.getLocationCode());
deliverJobDetailDo.setToLocationCode(item.getToLocationCode());
deliverJobDetailDo.setItemCode(item.getItemCode());
deliverJobDetailDo.setItemName(item.getItemName());
deliverJobDetailDo.setItemDesc1(item.getItemDesc1());
deliverJobDetailDo.setItemDesc2(item.getItemDesc2());
deliverJobDetailDo.setProjectCode(item.getProjectCode());
deliverJobDetailDo.setQty(item.getQty());
deliverJobDetailDo.setUom(item.getUom());
deliverJobDetailDo.setNumber(deliverJobMainDO.getNumber());
deliverJobDetailDo.setMasterId(deliverJobMainDO.getId());
deliverJobDetailDo.setInventoryStatus(balanceDOItem.getInventoryStatus());
deliverJobDetailDOList.add(deliverJobDetailDo);
//预计出
ExpectoutCreateReqVO expectoutCreateReqVO = new ExpectoutCreateReqVO();
BeanUtils.copyProperties(deliverJobDetailDo, expectoutCreateReqVO);
expectoutCreateReqVO.setJobNumber(number);
expectoutCreateReqVO.setBusinessType(deliverJobMainDO.getBusinessType());
expectoutCreateReqVO.setLocationCode(deliverJobDetailDo.getFromLocationCode());
expectoutCreateReqVO.setBatch(deliverJobDetailDo.getBatch());
expectoutCreateReqVO.setOwnerCode(deliverJobDetailDo.getOwnerCode());
expectoutCreateReqVO.setQty(deliverJobDetailDo.getQty());
expectoutCreateReqVO.setInventoryStatus(balanceDOItem.getInventoryStatus());
expectpoutCreateReqVOList.add(expectoutCreateReqVO);
});
});
deliverJobDetailMapper.insertBatch(deliverJobDetailDOList);
//增加预计入
expectoutService.createExpectout(expectpoutCreateReqVOList);
trendsApi.createTrends(deliverJobMainDO.getId(), "DeliverJob", "成品发货申请生成成品发货任务", TrendsTypeEnum.CREATE);
}
//校验发货计划是否存在
private DeliverPlanMainDO validatorDeliverPlanExist(String code){
return deliverPlanMainService.selectDeliverPlanExist(code);
}
//校验客户是否存在
private void validatorCustomercode(String code){
customerService.selectCustomerExist(code);
}
private CustomerdockDO validatorcustomerDockCode(String customerCode,String customerDockCode){
//校验客户月台是否存在
private CustomerdockDO validatorCustomerDockCode(String customerCode,String customerDockCode){
return customerdockService.getCustomerdockByCustomerCode(customerCode,customerDockCode);
}
private ItembasicDO validatoritemcode(String code){
//校验物品代码是否存在
private ItembasicDO validatorItemcode(String code){
ItembasicDO itembasicDO = itembasicService.selectItembasic(code);
return itembasicDO;
}
//校验发货计划数量是否大于已发货数量
private void validatorIfPlanQtyBigThanShipedQty(String number,String itemCode){
DeliverPlanDetailDO deliverPlanDetailDO = deliverPlanDetailService.selectDeliverPlanDetail(number, itemCode);
BigDecimal planQty = deliverPlanDetailDO.getPlanQty();
BigDecimal shippedQty = deliverPlanDetailDO.getShippedQty();
if(shippedQty.compareTo(planQty) == 1){
throw new UtilException("发货计划" + deliverPlanDetailDO.getNumber() + "的已发货数量" + shippedQty + "大于" + "计划数量" + planQty + ",超出了" + shippedQty.subtract(planQty));
}
}
//校验销售订单明细
private SaleDetailDO validatorSale(String SoNumber,String SoLine,String ItemCode ){
SaleDetailDO saleDetailDO =deliverJobMainService.saleDetailExist(SoNumber,SoLine,ItemCode );
return saleDetailDO;
}
//校验单位是否正确
private String Isuom(String uom1, String uom2) {
DictDataRespDTO dictDataRespDTO = dictDataApi.selectDictValue(uom1);
String value = dictDataRespDTO.getLabel();
@ -613,10 +683,12 @@ public class DeliverRequestMainServiceImpl implements DeliverRequestMainService
if(value2.equals(value)){
return "ture";
}else {
throw exception(UOM_ERROR, value2);
throw exception(UOM_ERROR, value);
}
}
//TODO 后续销售订单开发后再解除注释
//校验发货数量与未发货数量
// private String Isqty(BigDecimal shippedqty, BigDecimal detailqty, BigDecimal orderqty, String sonumber, String soline, String itemcode) {
// BigDecimal resultqty = orderqty.subtract(shippedqty);
// if(resultqty.compareTo(detailqty) > 0)

Loading…
Cancel
Save