Browse Source

Merge remote-tracking branch 'origin/master'

master
陈薪名 2 years ago
parent
commit
141c96aaba
  1. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java
  2. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java
  3. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java
  4. 91
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java
  5. 7
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java
  6. 75
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/ProductrepairRequestMainController.java

@ -10,6 +10,7 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.productrepairRequest.vo.*;
import com.win.module.wms.controller.productscrapRequest.vo.RawscrapRequestDetailUpdateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainCreateReqVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainImportErrorVO;
import com.win.module.wms.controller.transferissueRequest.vo.TransferissueRequestMainImportVO;
@ -240,4 +241,12 @@ public class ProductrepairRequestMainController {
return success(pageResult);
}
@PostMapping("/updateBom")
@Operation(summary = "更新制品返修申请二级子表")
@PreAuthorize("@ss.hasPermission('wms:productrepair-request-main:update')")
public CommonResult<Boolean> updateProductrepairDetailRequestBom(@RequestParam("id") Long id, @RequestBody List<ProductrepairRequestDetailbUpdateReqVO> updateReqVOList) {
productrepairRequestMainService.updateProductrepairDetailRequestBom(id, updateReqVOList);
return success(true);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productrepairRequest/vo/ProductrepairRequestDetailaBaseVO.java

@ -64,7 +64,6 @@ public class ProductrepairRequestDetailaBaseVO {
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "创建时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime;
@ -99,4 +98,7 @@ public class ProductrepairRequestDetailaBaseVO {
@Schema(description = "BOM版本")
private String bomVersion;
@Schema(description = "主键ID")
private Long masterId;
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaService.java

@ -2,11 +2,10 @@ package com.win.module.wms.service.productrepairRequest;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaExportReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaPageReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaUpdateReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.*;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO;
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO;
import javax.validation.Valid;
import java.util.Collection;
@ -80,4 +79,12 @@ public interface ProductrepairRequestDetailaService {
* @return 分页列表
*/
PageResult<ProductrepairRequestDetailaDO> getProductrepairRequestDetailaSenior(CustomConditions conditions);
/**
* 校验数据
* @param mainDO
* @param detailDo
* @param businesstypeDO
*/
void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo, BusinesstypeDO businesstypeDO);
}

91
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestDetailaServiceImpl.java

@ -2,23 +2,34 @@ package com.win.module.wms.service.productrepairRequest;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaCreateReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaExportReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaPageReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.ProductrepairRequestDetailaUpdateReqVO;
import com.win.module.wms.controller.productrepairRequest.vo.*;
import com.win.module.wms.convert.productrepairRequest.ProductrepairRequestDetailaConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
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.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestDetailaDO;
import com.win.module.wms.dal.dataobject.productrepairRequest.ProductrepairRequestMainDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestDetailaMapper;
import com.win.module.wms.dal.mysql.productrepairRequest.ProductrepairRequestMainMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.workstation.WorkstationService;
import com.win.module.wms.util.JobUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTREPAIR_REQUEST_DETAILA_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
import static com.win.module.wms.enums.ErrorCodeConstants.PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR;
/**
* 制品返修申请子 Service 实现类
@ -31,11 +42,27 @@ public class ProductrepairRequestDetailaServiceImpl implements ProductrepairRequ
@Resource
private ProductrepairRequestDetailaMapper productrepairRequestDetailaMapper;
@Resource
private ProductionlineService productionlineService;
@Resource
private ItembasicService itembasicService;
@Resource
private WorkstationService workstationService;
@Resource
private JobUtils jobUtils;
@Resource
private ProductrepairRequestMainMapper productrepairRequestMainMapper;
@Override
public Long createProductrepairRequestDetaila(ProductrepairRequestDetailaCreateReqVO createReqVO) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRequest");
ProductrepairRequestMainDO mainDO = productrepairRequestMainMapper.selectById(createReqVO.getMasterId());
// 校验数据
validateDetailMethod(mainDO, createReqVO,businesstypeDO);
// 插入
ProductrepairRequestDetailaDO productrepairRequestDetaila = ProductrepairRequestDetailaConvert.INSTANCE.convert(createReqVO);
productrepairRequestDetaila.setMasterId(mainDO.getId());
productrepairRequestDetaila.setNumber(mainDO.getNumber());
productrepairRequestDetailaMapper.insert(productrepairRequestDetaila);
// 返回
return productrepairRequestDetaila.getId();
@ -45,11 +72,65 @@ public class ProductrepairRequestDetailaServiceImpl implements ProductrepairRequ
public void updateProductrepairRequestDetaila(ProductrepairRequestDetailaUpdateReqVO updateReqVO) {
// 校验存在
validateProductrepairRequestDetailaExists(updateReqVO.getId());
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("ProductRepairRequest");
ProductrepairRequestMainDO mainDO = productrepairRequestMainMapper.selectById(updateReqVO.getMasterId());
// 校验数据
validateDetailMethod(mainDO, updateReqVO,businesstypeDO);
// 更新
ProductrepairRequestDetailaDO updateObj = ProductrepairRequestDetailaConvert.INSTANCE.convert(updateReqVO);
updateObj.setMasterId(mainDO.getId());
updateObj.setNumber(mainDO.getNumber());
productrepairRequestDetailaMapper.updateById(updateObj);
}
public void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo, BusinesstypeDO businesstypeDO) {
// 校验--生产线基本信息
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode());
detailDo.setFromLocationCode(productionlineDO.getRawLocationCode());
// 校验--物品基本信息
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
// 赋值物品Item相关信息
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
if (!itembasicDO.getUom().equals(detailDo.getUom())) {
// 提示:记量单位【uom】错误,应该是【item.uom】
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_UOM_ERROR,detailDo.getUom(),itembasicDO.getUom());
}
// 校验--工位基础信息
if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode());
detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
}
// 校验--库存余额 TB——>TB1
validateBalance(detailDo,mainDO);
// 校验--物品类型 DBT——>DBT2——>IT
jobUtils.ifInType(itembasicDO.getType(),businesstypeDO);
// 校验--来源库位 DBT——>DBT2——>LO
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
// 校验--库存状态 DBT——>DBT2——>ISO
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO);
}
public void validateBalance(ProductrepairRequestDetailaBaseVO detailDo,ProductrepairRequestMainDO mainDO) {
String inventoryStatus = detailDo.getInventoryStatus();
String[] inventoryArray = inventoryStatus.split(",");
List<String> inventorystatus = Arrays.asList(inventoryArray);
List<BalanceDO> list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus);
if(list != null && list.size() > 0){
BalanceDO balanceDO = list.get(0);
mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode());
if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){
// 返修数量【qty】不能大于库存数量【banlance.qty】
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty());
}
}else {
// 余额校验异常
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR);
}
}
@Override
public void deleteProductrepairRequestDetaila(Long id) {
// 校验存在

7
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainService.java

@ -136,4 +136,11 @@ public interface ProductrepairRequestMainService {
* @return
*/
List<ProductrepairRequestMainImportErrorVO> importProductrepairRequestMainList(List<ProductrepairRequestMainCreateReqVO> createReqVOList, Integer mode, Boolean updatePart);
/**
* 更新BOM二级子表数据
* @param id
* @param updateReqVOList
*/
void updateProductrepairDetailRequestBom(Long id, List<ProductrepairRequestDetailbUpdateReqVO> updateReqVOList);
}

75
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productrepairRequest/ProductrepairRequestMainServiceImpl.java

@ -1,6 +1,7 @@
package com.win.module.wms.service.productrepairRequest;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
@ -92,12 +93,8 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest
@Resource
private ShiftService shiftService;
@Resource
private ProductionlineService productionlineService;
@Resource
private ItembasicService itembasicService;
@Resource
private WorkstationService workstationService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private AdminUserApi userApi;
@ -117,6 +114,8 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest
private TrendsApi trendsApi;
@Resource
private TransactionService transactionService;
@Resource
private ProductrepairRequestDetailaService productrepairRequestDetailaService;
@Transactional
@Override
@ -204,7 +203,7 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest
// 子表处理逻辑 ProductrepairRequestDetailaDO
List<ProductrepairRequestDetailaCreateReqVO> subList = createReqVO.getSubList();
for(ProductrepairRequestDetailaCreateReqVO productrepairRequestDetailaCreateReqVO:subList){
validateDetailMethod(mainBo, productrepairRequestDetailaCreateReqVO,businesstypeDO);
productrepairRequestDetailaService.validateDetailMethod(mainBo, productrepairRequestDetailaCreateReqVO,businesstypeDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.PRODUCT_REPAIR_REQUEST.getCode());
mainBo.setNumber(number);
@ -252,53 +251,6 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest
detailbDO.setCreator(null);
}
private void validateDetailMethod(ProductrepairRequestMainDO mainDO, ProductrepairRequestDetailaBaseVO detailDo,BusinesstypeDO businesstypeDO) {
// 校验--生产线基本信息
ProductionlineDO productionlineDO = productionlineService.productionLineCodeExist(detailDo.getProductionLineCode());
detailDo.setFromLocationCode(productionlineDO.getRawLocationCode());
// 校验--物品基本信息
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
// 赋值物品Item相关信息
detailDo.setItemDesc1(itembasicDO.getDesc1());
detailDo.setItemDesc2(itembasicDO.getDesc2());
detailDo.setItemName(itembasicDO.getName());
detailDo.setProjectCode(itembasicDO.getProject());
if (!itembasicDO.getUom().equals(detailDo.getUom())) {
// 提示:记量单位【uom】错误,应该是【item.uom】
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_UOM_ERROR,detailDo.getUom(),itembasicDO.getUom());
}
// 校验--工位基础信息
if(StringUtils.isNotEmpty(detailDo.getWorkStationCode())){
WorkstationDO workstationDO = workstationService.selectWorkstationExist(detailDo.getWorkStationCode(), mainDO.getWorkshopCode(), detailDo.getProductionLineCode());
detailDo.setFromLocationCode(workstationDO.getRawLocationCode());
}
// 校验--库存余额 TB——>TB1
validateBalance(detailDo,mainDO);
// 校验--物品类型 DBT——>DBT2——>IT
jobUtils.ifInType(itembasicDO.getType(),businesstypeDO);
// 校验--来源库位 DBT——>DBT2——>LO
jobUtils.ifInToLocationType(detailDo.getFromLocationCode(), businesstypeDO);
// 校验--库存状态 DBT——>DBT2——>ISO
jobUtils.ifOutInventoryStatuses(detailDo.getInventoryStatus(),businesstypeDO);
}
private void validateBalance(ProductrepairRequestDetailaBaseVO detailDo,ProductrepairRequestMainDO mainDO) {
String inventoryStatus = detailDo.getInventoryStatus();
String[] inventoryArray = inventoryStatus.split(",");
List<String> inventorystatus = Arrays.asList(inventoryArray);
List<BalanceDO> list = jobUtils.selectlocationReturnManagementAccuracy(detailDo.getItemCode(), detailDo.getPackingNumber(), detailDo.getBatch(), detailDo.getFromLocationCode(),inventorystatus);
if(list != null && list.size() > 0){
BalanceDO balanceDO = list.get(0);
mainDO.setFromWarehouseCode(balanceDO.getWarehouseCode());
if(balanceDO.getQty().compareTo(detailDo.getQty()) < 0){
// 返修数量【qty】不能大于库存数量【banlance.qty】
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_QTY_ERROR,detailDo.getQty(),balanceDO.getQty());
}
}else {
// 余额校验异常
throw exception(PRODUCTREPAIR_REQUEST_DETAILA_BALANCE_ERROR);
}
}
private ProductrepairRequestMainDO validateMainMethod(ProductrepairRequestMainBaseVO baseVO, BusinesstypeDO businesstypeDO, RequestsettingDO requestsettingDO) {
ProductrepairRequestMainDO productrepairRequestMainDO = ProductrepairRequestMainConvert.INSTANCE.convert(baseVO);
@ -554,5 +506,24 @@ public class ProductrepairRequestMainServiceImpl implements ProductrepairRequest
return errorList;
}
@Transactional
@Override
public void updateProductrepairDetailRequestBom(Long id, List<ProductrepairRequestDetailbUpdateReqVO> updateReqVOList) {
LambdaQueryWrapper<ProductrepairRequestDetailbDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProductrepairRequestDetailbDO::getMasterId,id);
productrepairRequestDetailbMapper.delete(lambdaQueryWrapper);
ProductrepairRequestDetailaDO detailaDO = productrepairRequestDetailaMapper.selectById(id);
ProductrepairRequestMainDO mainBo = productrepairRequestMainMapper.selectById(detailaDO.getMasterId());
List<ProductrepairRequestDetailbDO> childList = new ArrayList<>();
for(ProductrepairRequestDetailbUpdateReqVO productrepairRequestDetailbUpdateReqVO:updateReqVOList){
ProductrepairRequestDetailbDO detailbDO = ProductrepairRequestDetailbConvert.INSTANCE.convert(productrepairRequestDetailbUpdateReqVO);
detailbDO.setMasterId(detailaDO.getId());
detailbDO.setNumber(detailaDO.getNumber());
validateDetailbBom(detailbDO,detailaDO,mainBo); // 创建二级子表数据
detailbDO.setId(null);
childList.add(detailbDO);
}
productrepairRequestDetailbMapper.insertBatch(childList);
}
}

Loading…
Cancel
Save