|
|
@ -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) { |
|
|
|
// 校验存在
|
|
|
|