|
|
@ -12,24 +12,37 @@ import com.win.module.infra.api.trends.TrendsApi; |
|
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
|
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.purchasereceiptJob.vo.PurchasereceiptJobMainCreateReqVO; |
|
|
|
import com.win.module.wms.controller.purchasereceiptRequest.vo.*; |
|
|
|
import com.win.module.wms.controller.rule.vo.RuleRespVO; |
|
|
|
import com.win.module.wms.convert.purchasereceiptJob.PurchasereceiptJobDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchasereceiptJob.PurchasereceiptJobMainConvert; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert; |
|
|
|
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; |
|
|
|
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.itempackaging.ItempackagingDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptJob.PurchasereceiptJobMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptJob.PurchasereceiptJobMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.purchasereceiptRequest.PurchasereceiptRequestMainMapper; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusEnum; |
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
|
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 com.win.module.wms.util.JobUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
@ -56,6 +69,8 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
@Resource |
|
|
|
private ItembasicService itembasicService; |
|
|
|
@Resource |
|
|
|
private ItempackagingService itempackagingService; |
|
|
|
@Resource |
|
|
|
private SupplierService supplierService; |
|
|
|
@Resource |
|
|
|
private SupplieritemService supplieritemService; |
|
|
@ -71,15 +86,20 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
private RequestsettingService requestsettingService; |
|
|
|
@Resource |
|
|
|
private PurchasereceiptJobMainMapper purchasereceiptJobMainMapper; |
|
|
|
@Resource |
|
|
|
private PurchasereceiptJobDetailMapper purchasereceiptJobDetailMapper; |
|
|
|
@Resource |
|
|
|
private JobUtils jobUtils; |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Long createPurchasereceiptRequestMain(PurchasereceiptRequestMainCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
PurchasereceiptRequestMainDO mainDO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO); |
|
|
|
this.validatePurchasereceiptRequestMainCreate(mainDO); |
|
|
|
List<PurchasereceiptRequestDetailDO> subDOList = PurchasereceiptRequestDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); |
|
|
|
for (PurchasereceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
this.validatePurchasereceiptRequestDetailCreate(detailDO); |
|
|
|
this.validatePurchasereceiptRequestDetailCreate(mainDO, detailDO); |
|
|
|
} |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDO.setNumber(number); |
|
|
@ -92,7 +112,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
mainDO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
|
|
this.generateJob(mainDO, subDOList); |
|
|
|
} |
|
|
|
purchasereceiptRequestMainMapper.insert(mainDO); |
|
|
|
for (PurchasereceiptRequestDetailDO detailDO : subDOList) { |
|
|
@ -101,20 +121,21 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
purchasereceiptRequestDetailMapper.insertBatch(subDOList); |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "purchasereceiptRequest", "增加了采购收货", TrendsTypeEnum.CREATE); |
|
|
|
trendsApi.createTrends(requestsettingDO.getId(), "purchasereceiptRequestMain", "增加了采购收货", TrendsTypeEnum.CREATE); |
|
|
|
// 返回
|
|
|
|
return mainDO.getId(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer updatePurchasereceiptRequestMain(PurchasereceiptRequestMainUpdateReqVO updateReqVO) { |
|
|
|
// 校验存在
|
|
|
|
PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(updateReqVO.getId()); |
|
|
|
if(existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode())) { |
|
|
|
throw new ServiceException(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); |
|
|
|
throw exception(PURCHASERECEIPT_REQUEST_STATUS_NOT_NEW); |
|
|
|
} |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(updateReqVO.getId(), "purchasereceiptRequest", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.UPDATE); |
|
|
|
trendsApi.createTrends(updateReqVO.getId(), "purchasereceiptRequestMain", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.UPDATE); |
|
|
|
// 更新
|
|
|
|
PurchasereceiptRequestMainDO updateObj = PurchasereceiptRequestMainConvert.INSTANCE.convert(updateReqVO); |
|
|
|
return purchasereceiptRequestMainMapper.updateById(updateObj); |
|
|
@ -126,6 +147,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer deletePurchasereceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
PurchasereceiptRequestMainDO existPurchasereceiptRequestMainDO = validatePurchasereceiptRequestMainExists(id); |
|
|
@ -134,7 +156,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
throw new ServiceException(PURCHASERECEIPT_REQUEST_JOB_EXISTS); |
|
|
|
} |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequest", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.DELETE); |
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequestMain", existPurchasereceiptRequestMainDO.toString(), TrendsTypeEnum.DELETE); |
|
|
|
// 删除子表数据
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
map.put("master_id", id); |
|
|
@ -173,6 +195,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public List<PurchasereceiptRequestMainImportErrorVO> importPurchasereceiptRequestMainList(List<PurchasereceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { |
|
|
|
if (CollUtil.isEmpty(datas)) { |
|
|
|
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); |
|
|
@ -186,7 +209,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
// 是否有错误数据
|
|
|
|
boolean flag = true; |
|
|
|
for (PurchasereceiptRequestDetailDO detailDO : subDOList) { |
|
|
|
String messageDetail = this.validatePurchasereceiptRequestDetailImport(detailDO); |
|
|
|
String messageDetail = this.validatePurchasereceiptRequestDetailImport(mainDO, detailDO); |
|
|
|
if(!messageMain.isEmpty() || messageDetail.isEmpty()) { |
|
|
|
PurchasereceiptRequestMainImportErrorVO importErrorVO = PurchasereceiptRequestMainConvert.INSTANCE.convert(createReqVO, detailDO); |
|
|
|
importErrorVO.setImportStatus("失败"); |
|
|
@ -203,7 +226,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
//if(existPurchasereceiptRequestMainDO == null && mode != 3) {//新增
|
|
|
|
purchasereceiptRequestMainMapper.insert(mainDO); |
|
|
|
//增加操作记录
|
|
|
|
trendsApi.createTrends(mainDO.getId(), "purchasereceiptRequest", "导入了采购收货", TrendsTypeEnum.CREATE); |
|
|
|
trendsApi.createTrends(mainDO.getId(), "purchasereceiptRequestMain", "导入了采购收货", TrendsTypeEnum.CREATE); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); |
|
|
|
mainDO.setNumber(number); |
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("PurchaseReceiptRequest"); |
|
|
@ -219,7 +242,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
|
|
this.generateJob(mainDO, subDOList); |
|
|
|
} |
|
|
|
purchasereceiptRequestDetailMapper.insertBatch(subDOList); |
|
|
|
//} else if(existPurchasereceiptRequestMainDO != null && existPurchasereceiptRequestMainDO.getStatus().equals(RequestStatusEnum.NEW.getCode()) && mode != 2) {//修改
|
|
|
@ -248,6 +271,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer closePurchasereceiptRequestMain(Long id) { |
|
|
|
// 校验存在存在下级单据
|
|
|
|
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id); |
|
|
@ -260,11 +284,13 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
if(!flag) { |
|
|
|
throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode());//增加操作记录
|
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequest", "关闭了采购收货", TrendsTypeEnum.UPDATE); |
|
|
|
return purchasereceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer submitPurchasereceiptRequestMain(Long id) { |
|
|
|
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id); |
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
@ -275,12 +301,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
|
|
this.generateJob(mainDO, purchasereceiptRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequest", "提交了采购收货", TrendsTypeEnum.UPDATE); |
|
|
|
return purchasereceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer agreePurchasereceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id); |
|
|
@ -292,12 +320,14 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
//调用自动执行方法
|
|
|
|
if(RequestStatusEnum.HANDLING.getCode().equals(mainDO.getStatus())) { |
|
|
|
|
|
|
|
this.generateJob(mainDO, purchasereceiptRequestDetailMapper.selectList(mainDO.getId())); |
|
|
|
} |
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequest", "审批同意了采购收货", TrendsTypeEnum.UPDATE); |
|
|
|
return purchasereceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public Integer abortPurchasereceiptRequestMain(Long id) { |
|
|
|
// 校验存在
|
|
|
|
PurchasereceiptRequestMainDO mainDO = validatePurchasereceiptRequestMainExists(id); |
|
|
@ -307,6 +337,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
throw new ServiceException(PURCHASERECEIPT_REQUEST_CANNOT_CLOSE); |
|
|
|
} |
|
|
|
mainDO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
trendsApi.createTrends(id, "purchasereceiptRequest", "审批拒绝了采购收货", TrendsTypeEnum.UPDATE); |
|
|
|
return purchasereceiptRequestMainMapper.updateById(mainDO); |
|
|
|
} |
|
|
|
|
|
|
@ -337,6 +368,82 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 生成采购收货任务 |
|
|
|
* @param mainDO 采购收货主 |
|
|
|
* @param detailDOList 采购收货子 |
|
|
|
*/ |
|
|
|
@Transactional |
|
|
|
private void generateJob(PurchasereceiptRequestMainDO mainDO, List<PurchasereceiptRequestDetailDO> detailDOList) { |
|
|
|
RuleRespVO ruleRespVO = ruleService.deliveryGoods(null, mainDO.getSupplierCode()); |
|
|
|
JSONObject jsonObject = JSONUtil.parseObj(ruleRespVO.getConfiguration()); |
|
|
|
Map<String, List<PurchasereceiptRequestDetailDO>> listMap = new HashMap<>(); |
|
|
|
List<PurchasereceiptJobMainCreateReqVO> purchasereceiptJobMainCreateReqVOList = new ArrayList<>(); |
|
|
|
// 获取拆分类型,如果够为FALSE则不拆分
|
|
|
|
String key = ""; |
|
|
|
if ("TRUE".equals(jsonObject.get("ByItem"))) {//按零件拆分
|
|
|
|
key = "item"; |
|
|
|
} else if ("TRUE".equals(jsonObject.get("ByContainer"))) {//按器具拆分
|
|
|
|
key = "container"; |
|
|
|
} else if ("TRUE".equals(jsonObject.get("ByLocation"))) {//按库位拆分
|
|
|
|
key = "location"; |
|
|
|
} else { |
|
|
|
key = "null"; |
|
|
|
} |
|
|
|
// 每个任务单最多任务数
|
|
|
|
int count = Integer.parseInt(String.valueOf(jsonObject.get("JobDetailCount"))); |
|
|
|
if(count == 0) { |
|
|
|
count = Integer.MAX_VALUE; |
|
|
|
} |
|
|
|
for(PurchasereceiptRequestDetailDO detailDO : detailDOList) { |
|
|
|
List<PurchasereceiptRequestDetailDO> list; |
|
|
|
switch (key) { |
|
|
|
case "item": |
|
|
|
list = listMap.get(detailDO.getItemCode()); |
|
|
|
case "container": |
|
|
|
list = listMap.get(detailDO.getContainerNumber()); |
|
|
|
case "location": |
|
|
|
list = listMap.get(detailDO.getFromLocationCode()); |
|
|
|
default: |
|
|
|
list = listMap.get(key); |
|
|
|
} |
|
|
|
if(list == null) { |
|
|
|
list = new ArrayList<>(); |
|
|
|
} |
|
|
|
list.add(detailDO); |
|
|
|
listMap.put(key, list); |
|
|
|
} |
|
|
|
for(String mapKey : listMap.keySet()) { |
|
|
|
List<PurchasereceiptRequestDetailDO> purchasereceiptRequestDetailDOList = listMap.get(mapKey); |
|
|
|
for(int i = 0; i < purchasereceiptRequestDetailDOList.size(); i++) { |
|
|
|
PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO; |
|
|
|
List<PurchasereceiptJobDetailCreateReqVO> subList = null; |
|
|
|
if(i % count == 0) { |
|
|
|
purchasereceiptJobMainCreateReqVO = PurchasereceiptJobMainConvert.INSTANCE.convert(mainDO); |
|
|
|
subList = new ArrayList<>(); |
|
|
|
purchasereceiptJobMainCreateReqVO.setSubList(subList); |
|
|
|
purchasereceiptJobMainCreateReqVOList.add(purchasereceiptJobMainCreateReqVO); |
|
|
|
} |
|
|
|
PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptRequestDetailDOList.get(i)); |
|
|
|
subList.add(purchasereceiptJobDetailCreateReqVO); |
|
|
|
} |
|
|
|
} |
|
|
|
//插入数据库
|
|
|
|
for(PurchasereceiptJobMainCreateReqVO purchasereceiptJobMainCreateReqVO : purchasereceiptJobMainCreateReqVOList) { |
|
|
|
PurchasereceiptJobMainDO purchasereceiptJobMainDO = PurchasereceiptJobMainConvert.INSTANCE.convert(purchasereceiptJobMainCreateReqVO); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_JOB.getCode()); |
|
|
|
purchasereceiptJobMainDO.setNumber(number); |
|
|
|
purchasereceiptJobMainMapper.insert(purchasereceiptJobMainDO); |
|
|
|
trendsApi.createTrends(purchasereceiptJobMainDO.getId(), "purchasereceiptJob", "采购收货申请生成采购收货任务", TrendsTypeEnum.CREATE); |
|
|
|
for(PurchasereceiptJobDetailCreateReqVO purchasereceiptJobDetailCreateReqVO : purchasereceiptJobMainCreateReqVO.getSubList()) { |
|
|
|
PurchasereceiptJobDetailDO purchasereceiptJobDetailDO = PurchasereceiptJobDetailConvert.INSTANCE.convert(purchasereceiptJobDetailCreateReqVO); |
|
|
|
purchasereceiptJobDetailDO.setNumber(number); |
|
|
|
purchasereceiptJobDetailDO.setMasterId(purchasereceiptJobMainDO.getId()); |
|
|
|
purchasereceiptJobDetailMapper.insert(purchasereceiptJobDetailDO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验导入,并赋值一些参数,未完全实现 |
|
|
|
* @param mainDo |
|
|
@ -348,40 +455,26 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
ValidationUtils.validate(validator, mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
supplierService.selectSupplier(mainDo.getSupplierCode()); |
|
|
|
}try { |
|
|
|
this.validateSupplier(mainDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} |
|
|
|
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null); |
|
|
|
if(ruleRespVO == null) { |
|
|
|
message.append(STDCOSTPRICE_SUPPLIER_CODE_NOT_EXISTS.getMsg()); |
|
|
|
} 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 void validatePurchasereceiptRequestDetailCreate(PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
|
|
|
|
private void validatePurchasereceiptRequestDetailCreate(PurchasereceiptRequestMainDO mainDo, PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
ItembasicDO itembasicDO = this.validateItem(detailDo); |
|
|
|
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) { |
|
|
|
throw exception(ITEMBASIC_UOM_EXCEPTION, itembasicDO.getUom(), itembasicDO.getUom()); |
|
|
|
} |
|
|
|
this.validateItemPacking(detailDo); |
|
|
|
this.validateBusinesstype(itembasicDO.getType(), mainDo); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -389,14 +482,94 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private String validatePurchasereceiptRequestDetailImport(PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
private String validatePurchasereceiptRequestDetailImport(PurchasereceiptRequestMainDO mainDo, PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
StringBuilder message = new StringBuilder(); |
|
|
|
try { |
|
|
|
ValidationUtils.validate(validator, detailDo); |
|
|
|
} catch (Exception ex) { |
|
|
|
message.append(ex.getMessage()).append(","); |
|
|
|
} catch (Exception e) { |
|
|
|
message.append(e.getMessage()).append(","); |
|
|
|
} |
|
|
|
ItembasicDO itembasicDO = null; |
|
|
|
try { |
|
|
|
itembasicDO = this.validateItem(detailDo); |
|
|
|
} catch (Exception e) { |
|
|
|
message.append(e.getMessage()).append(","); |
|
|
|
} |
|
|
|
if(!itembasicDO.getUom().equals(itembasicDO.getUom())) { |
|
|
|
message.append("计量单位【").append(itembasicDO.getUom()).append("】错误,应该是【").append(itembasicDO.getUom()).append("】").append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
this.validateItemPacking(detailDo); |
|
|
|
} catch (Exception e) { |
|
|
|
message.append(e.getMessage()).append(","); |
|
|
|
} |
|
|
|
try { |
|
|
|
this.validateBusinesstype(itembasicDO.getType(), mainDo); |
|
|
|
} catch (Exception e) { |
|
|
|
message.append(e.getMessage()).append(","); |
|
|
|
} |
|
|
|
return message.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验供应商并赋值策略 |
|
|
|
* @param mainDo |
|
|
|
*/ |
|
|
|
private void validateSupplier(PurchasereceiptRequestMainDO mainDo) { |
|
|
|
supplierService.selectSupplier(mainDo.getSupplierCode()); |
|
|
|
RuleRespVO ruleRespVO = ruleService.deliverGoods(null, mainDo.getSupplierCode(), null); |
|
|
|
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"))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验物品信息并赋值 |
|
|
|
* @param detailDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private ItembasicDO validateItem(PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode()); |
|
|
|
detailDo.setItemName(itembasicDO.getName()); |
|
|
|
detailDo.setItemDesc1(itembasicDO.getDesc1()); |
|
|
|
detailDo.setItemDesc2(itembasicDO.getDesc2()); |
|
|
|
detailDo.setProjectCode(itembasicDO.getProject()); |
|
|
|
return itembasicDO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验物品包装信息并赋值 |
|
|
|
* @param detailDo |
|
|
|
*/ |
|
|
|
private void validateItemPacking(PurchasereceiptRequestDetailDO detailDo) { |
|
|
|
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(detailDo.getItemCode()); |
|
|
|
detailDo.setStdPackQty(itempackagingDO.getStdPackQty()); |
|
|
|
detailDo.setStdPackUnit(itempackagingDO.getStdPackUnit()); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 校验业务类型并赋值 |
|
|
|
* @param itemType |
|
|
|
* @param mainDo |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private void validateBusinesstype(String itemType, PurchasereceiptRequestMainDO mainDo) { |
|
|
|
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseReceiptRequest"); |
|
|
|
jobUtils.ifInType(itemType, businesstypeDO); |
|
|
|
mainDo.setFromLocationTypes(businesstypeDO.getOutLocationTypes()); |
|
|
|
mainDo.setToLocationTypes(businesstypeDO.getInLocationTypes()); |
|
|
|
mainDo.setFromAreaCodes(businesstypeDO.getOutAreaCodes()); |
|
|
|
mainDo.setToAreaCodes(businesstypeDO.getInAreaCodes()); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|