|
|
@ -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.dict.DictDataApi; |
|
|
|
import com.win.module.system.api.dict.dto.DictDataRespDTO; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.purchasePlan.vo.*; |
|
|
@ -16,12 +18,16 @@ import com.win.module.wms.convert.purchasePlan.PurchasePlanDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchasePlan.PurchasePlanMainConvert; |
|
|
|
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.purchase.PurchaseDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchase.PurchaseMainDO; |
|
|
|
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.purchase.PurchaseDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchase.PurchaseMainMapper; |
|
|
|
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; |
|
|
@ -29,6 +35,7 @@ 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.purchase.PurchaseMainService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
|
import com.win.module.wms.service.supplier.SupplierService; |
|
|
@ -77,6 +84,16 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { |
|
|
|
private SupplierService supplierService; |
|
|
|
@Resource |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private DictDataApi dictDataApi; |
|
|
|
@Resource |
|
|
|
private PurchaseMainService purchaseMainService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private PurchaseMainMapper purchaseMainMapper; |
|
|
|
@Resource |
|
|
|
private PurchaseDetailMapper purchaseDetailMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createPurchasePlanMain(PurchasePlanMainCreateReqVO createReqVO) { |
|
|
@ -223,7 +240,7 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { |
|
|
|
boolean flag = true; |
|
|
|
for (PurchasePlanDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = validatorPurchasePlanDetailImport(detailDO, mainDo); |
|
|
|
if (!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) { |
|
|
|
PurchasePlanMainImportErrorVO importErrorVO = PurchasePlanDetailConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
@ -235,10 +252,10 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { |
|
|
|
//写入数据
|
|
|
|
if (flag) { |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
// mainDo.setOrderDate(LocalDateTime.now());
|
|
|
|
// mainDo.setTaxRate(BigDecimal.ZERO);
|
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchasePlan"); |
|
|
|
mainDo.setBusinessType(businesstypeDO.getCode()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_PLAN.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setAvailable("TRUE"); |
|
|
|
purchasePlanMainMapper.insert(mainDo); |
|
|
|
for (PurchasePlanDetailDO detailDO : subDOList) { |
|
|
@ -246,6 +263,21 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { |
|
|
|
detailDO.setNumber(mainDo.getNumber()); |
|
|
|
detailDO.setShippedQty(BigDecimal.ZERO); |
|
|
|
detailDO.setAvailable("TRUE"); |
|
|
|
DictDataRespDTO uom = dictDataApi.selectDictTypeAndLabel(DictTypeConstants.UOM,detailDO.getUom()); |
|
|
|
detailDO.setUom(uom.getValue()); |
|
|
|
//选择已发布状态下订单号、订单行、零件号 判断订单类型
|
|
|
|
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper(); |
|
|
|
purchaseDetailDOQueryWrapper.eq("number", detailDO.getPoNumber()); |
|
|
|
purchaseDetailDOQueryWrapper.eq("item_code", detailDO.getItemCode()); |
|
|
|
purchaseDetailDOQueryWrapper.eq("line_number ", detailDO.getPoLine()); |
|
|
|
PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(purchaseDetailDOQueryWrapper); |
|
|
|
if(purchaseDetailDO!=null){ |
|
|
|
PurchaseMainDO purchaseMainDO = purchaseMainService.getPurchaseMain(purchaseDetailDO.getMasterId()); |
|
|
|
//如果是离散单
|
|
|
|
if ("DISCRETE".equals(purchaseMainDO.getType())) { |
|
|
|
detailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty())); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
purchasePlanDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
@ -300,6 +332,19 @@ public class PurchasePlanMainServiceImpl implements PurchasePlanMainService { |
|
|
|
purchasePlanMainMapper.insert(purchasePlanMainDO); |
|
|
|
for (PurchasePlanDetailDO purchasePlanDetailDO : subDOList) { |
|
|
|
validatorDetailMethod(purchasePlanDetailDO, purchasePlanMainDO); |
|
|
|
//选择已发布状态下订单号、订单行、零件号 判断订单类型
|
|
|
|
QueryWrapper<PurchaseDetailDO> purchaseDetailDOQueryWrapper = new QueryWrapper(); |
|
|
|
purchaseDetailDOQueryWrapper.eq("number", purchasePlanDetailDO.getPoNumber()); |
|
|
|
purchaseDetailDOQueryWrapper.eq("item_code", purchasePlanDetailDO.getItemCode()); |
|
|
|
purchaseDetailDOQueryWrapper.eq("line_number ", purchasePlanDetailDO.getPoLine()); |
|
|
|
PurchaseDetailDO purchaseDetailDO = purchaseDetailMapper.selectOne(purchaseDetailDOQueryWrapper); |
|
|
|
if(purchaseDetailDO!=null){ |
|
|
|
PurchaseMainDO purchaseMainDO = purchaseMainService.getPurchaseMain(purchaseDetailDO.getMasterId()); |
|
|
|
//如果是离散单
|
|
|
|
if ("DISCRETE".equals(purchaseMainDO.getType())) { |
|
|
|
purchasePlanDetailDO.setPlanQty(purchaseDetailDO.getOrderQty().subtract(purchaseDetailDO.getPlannedQty())); |
|
|
|
} |
|
|
|
} |
|
|
|
purchasePlanDetailDO.setMasterId(purchasePlanMainDO.getId()); |
|
|
|
purchasePlanDetailDO.setNumber(purchasePlanMainDO.getNumber()); |
|
|
|
purchasePlanDetailDO.setShippedQty(BigDecimal.ZERO); |
|
|
|