|
|
@ -1,10 +1,17 @@ |
|
|
|
package com.win.module.wms.service.purchasereceiptRequest; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.json.JSONArray; |
|
|
|
import cn.hutool.json.JSONObject; |
|
|
|
import cn.hutool.json.JSONUtil; |
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
|
import com.win.framework.dict.core.util.DictFrameworkUtils; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.purchasereceiptRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; |
|
|
@ -12,10 +19,15 @@ import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptR |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.DictTypeConstants; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.rule.RuleService; |
|
|
|
import com.win.module.wms.service.supplier.SupplierService; |
|
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import javax.validation.Validator; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
@ -35,9 +47,20 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
|
|
|
|
@Resource |
|
|
|
private PurchasereceiptRequestMainMapper purchasereceiptRequestMainMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private PurchasereceiptRequestDetailMapper purchasereceiptRequestDetailMapper; |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private SupplierService supplierService; |
|
|
|
@Resource |
|
|
|
private SupplieritemService supplieritemService; |
|
|
|
@Resource |
|
|
|
private RuleService ruleService; |
|
|
|
@Resource |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private Validator validator; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Long createPurchasereceiptRequestMain(PurchasereceiptRequestMainCreateReqVO createReqVO) { |
|
|
@ -101,30 +124,90 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
List<PurchasereceiptRequestMainImportErrorVO> errorList = new ArrayList<>(); |
|
|
|
datas.forEach(createReqVO -> { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
|
|
|
|
boolean isError = false; |
|
|
|
// try {
|
|
|
|
// if(mode != null){
|
|
|
|
// validatePurchaseclaimRequestMainExists(null);
|
|
|
|
// }
|
|
|
|
// } catch (ServiceException ex) {
|
|
|
|
// isError = true;
|
|
|
|
// importRemark += ex.getMessage() + ",";
|
|
|
|
// }
|
|
|
|
|
|
|
|
createReqVO.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
PurchasereceiptRequestMainDO createObj = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
purchasereceiptRequestMainMapper.insert(createObj); |
|
|
|
PurchasereceiptRequestMainDO mainDo = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
String messageMain = this.validatePurchasereceiptRequestMainImport(mainDo); |
|
|
|
List<PurchasereceiptRequestDetailCreateReqVO> subList = createReqVO.getSubList(); |
|
|
|
List<PurchasereceiptRequestDetailDO> subDOList = PurchasereceiptRequestDetailConvert.INSTANCE.convertList03(subList); |
|
|
|
// 新增子表数据
|
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (PurchasereceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
// 校验,判断是否有不符合的原因,并加入errorList,同主表,只把有错误的子表加入errorList
|
|
|
|
detailDO.setNumber(createReqVO.getNumber()); |
|
|
|
String messageDetail = this.validatePurchasereceiptRequestDetailImport(detailDO); |
|
|
|
if(!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
PurchasereceiptRequestMainImportErrorVO importErrorVO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
|
messageMain = messageMain + messageDetail; |
|
|
|
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1)); |
|
|
|
errorList.add(importErrorVO); |
|
|
|
flag = false; |
|
|
|
} |
|
|
|
} |
|
|
|
//写入数据
|
|
|
|
if(flag) { |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDo.setNumber(number); |
|
|
|
mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); |
|
|
|
purchasereceiptRequestMainMapper.insert(mainDo); |
|
|
|
for (PurchasereceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
detailDO.setMasterId(mainDo.getId()); |
|
|
|
detailDO.setNumber(number); |
|
|
|
} |
|
|
|
purchasereceiptRequestDetailMapper.insertBatch(subDOList); |
|
|
|
} |
|
|
|
}); |
|
|
|
return errorList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验导入,并赋值一些参数,未完全实现 |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatePurchasereceiptRequestMainImport(PurchasereceiptRequestMainDO mainDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
supplierService.selectSupplier(mainDo.getSupplierCode()); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null); |
|
|
|
if(ruleRespVO == null) { |
|
|
|
message.append("未查找到供应商【").append(mainDo.getSupplierCode()).append("】送货策略"); |
|
|
|
} else { |
|
|
|
JSONArray conditionArray = JSONUtil.parseArray(ruleRespVO.getConfiguration()); |
|
|
|
for (int i = 0; i < conditionArray.size(); i++) { |
|
|
|
JSONObject conditionObject = conditionArray.getJSONObject(i); |
|
|
|
if ("WarehouseCode".equals(conditionObject.get("ParamCode"))) { |
|
|
|
mainDo.setFromWarehouseCode(String.valueOf(conditionObject.get("Value"))); |
|
|
|
} |
|
|
|
if ("DockCode".equals(conditionObject.get("ParamCode"))) { |
|
|
|
mainDo.setToDockCode(String.valueOf(conditionObject.get("Value"))); |
|
|
|
} |
|
|
|
if ("OnTheWayLocationCode".equals(conditionObject.get("ParamCode"))) { |
|
|
|
mainDo.setToWarehouseCode(String.valueOf(conditionObject.get("Value"))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验导入,并赋值一些参数,未完全实现 |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatePurchasereceiptRequestDetailImport(PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, detailDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|