|
@ -8,16 +8,22 @@ import com.win.framework.common.pojo.PageResult; |
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
import com.win.framework.common.util.validation.ValidationUtils; |
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
import com.win.module.infra.api.trends.TrendsApi; |
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
import com.win.module.infra.enums.TrendsTypeEnum; |
|
|
|
|
|
import com.win.module.system.api.dept.DeptApi; |
|
|
|
|
|
import com.win.module.system.api.dept.dto.DeptRespDTO; |
|
|
import com.win.module.system.api.dict.DictDataApi; |
|
|
import com.win.module.system.api.dict.DictDataApi; |
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
import com.win.module.wms.controller.deliverPlan.vo.*; |
|
|
import com.win.module.wms.controller.deliverPlan.vo.*; |
|
|
|
|
|
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestDetailCreateReqVO; |
|
|
|
|
|
import com.win.module.wms.controller.deliverRequest.vo.DeliverRequestMainCreateReqVO; |
|
|
import com.win.module.wms.convert.deliverPlan.DeliverPlanDetailConvert; |
|
|
import com.win.module.wms.convert.deliverPlan.DeliverPlanDetailConvert; |
|
|
import com.win.module.wms.convert.deliverPlan.DeliverPlanMainConvert; |
|
|
import com.win.module.wms.convert.deliverPlan.DeliverPlanMainConvert; |
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; |
|
|
import com.win.module.wms.dal.dataobject.customer.CustomerDO; |
|
|
import com.win.module.wms.dal.dataobject.customer.CustomerDO; |
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanDetailDO; |
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; |
|
|
import com.win.module.wms.dal.dataobject.deliverPlan.DeliverPlanMainDO; |
|
|
|
|
|
import com.win.module.wms.dal.dataobject.deliverRequest.DeliverRequestMainDO; |
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; |
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; |
|
|
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; |
|
|
import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanDetailMapper; |
|
@ -25,15 +31,18 @@ import com.win.module.wms.dal.mysql.deliverPlan.DeliverPlanMainMapper; |
|
|
import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestMainMapper; |
|
|
import com.win.module.wms.dal.mysql.deliverRequest.DeliverRequestMainMapper; |
|
|
import com.win.module.wms.enums.plan.PlanStatusEnum; |
|
|
import com.win.module.wms.enums.plan.PlanStatusEnum; |
|
|
import com.win.module.wms.enums.plan.PlanStatusState; |
|
|
import com.win.module.wms.enums.plan.PlanStatusState; |
|
|
|
|
|
import com.win.module.wms.enums.request.RequestStatusState; |
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
import com.win.module.wms.service.businesstype.BusinesstypeService; |
|
|
import com.win.module.wms.service.customer.CustomerService; |
|
|
import com.win.module.wms.service.customer.CustomerService; |
|
|
import com.win.module.wms.service.deliverJob.DeliverJobMainService; |
|
|
import com.win.module.wms.service.deliverRequest.DeliverRequestDetailService; |
|
|
|
|
|
import com.win.module.wms.service.deliverRequest.DeliverRequestMainService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itembasic.ItembasicService; |
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
import com.win.module.wms.service.itempackaging.ItempackagingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.requestsetting.RequestsettingService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.shift.ShiftService; |
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
import com.win.module.wms.service.supplieritem.SupplieritemService; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
import com.win.module.wms.util.JobUtils; |
|
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.validation.annotation.Validated; |
|
|
import org.springframework.validation.annotation.Validated; |
|
@ -79,8 +88,6 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
@Resource |
|
|
@Resource |
|
|
private BusinesstypeService businesstypeService; |
|
|
private BusinesstypeService businesstypeService; |
|
|
@Resource |
|
|
@Resource |
|
|
private DeliverJobMainService deliverJobMainService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
private SerialNumberApi serialNumberApi; |
|
|
@Resource |
|
|
@Resource |
|
|
private TrendsApi trendsApi; |
|
|
private TrendsApi trendsApi; |
|
@ -90,6 +97,16 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
private DictDataApi dictDataApi; |
|
|
private DictDataApi dictDataApi; |
|
|
@Resource |
|
|
@Resource |
|
|
private Validator validator; |
|
|
private Validator validator; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private DeliverRequestMainService deliverRequestMainService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private DeliverRequestDetailService deliverRequestDetailService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private DeliverPlanDetailService deliverPlanDetailService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private DeptApi deptApi; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private AdminUserApi userApi; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
@Transactional |
|
|
@Transactional |
|
@ -129,65 +146,6 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
return deliverPlanMainDO; |
|
|
return deliverPlanMainDO; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 更新发货计划的已发货数量 |
|
|
|
|
|
* @param pnumber |
|
|
|
|
|
* @param pitemCode |
|
|
|
|
|
* @param pshippedQty |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
|
|
|
public void updatePlanDeliveShippedQty(String pnumber, String pitemCode, BigDecimal pshippedQty){ |
|
|
|
|
|
QueryWrapper<DeliverPlanMainDO> mainDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
|
DeliverPlanDetailDO deliverPlanDetailDO = null; |
|
|
|
|
|
mainDOQueryWrapper.eq("number",pnumber); |
|
|
|
|
|
mainDOQueryWrapper.eq("status","6"); |
|
|
|
|
|
DeliverPlanMainDO deliverPlanMainDO = deliverPlanMainMapper.selectOne(mainDOQueryWrapper); |
|
|
|
|
|
if(deliverPlanMainDO != null){ |
|
|
|
|
|
QueryWrapper<DeliverPlanDetailDO> detailDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
|
detailDOQueryWrapper.eq("number",pnumber); |
|
|
|
|
|
detailDOQueryWrapper.eq("itembasic",pitemCode); |
|
|
|
|
|
detailDOQueryWrapper.eq("available","TRUE"); |
|
|
|
|
|
deliverPlanDetailDO = deliverPlanDetailMapper.selectOne(detailDOQueryWrapper); |
|
|
|
|
|
// 如果已发货数量=计划数量,更新计划明细状态为(开放 => 关闭)
|
|
|
|
|
|
deliverPlanDetailDO.setShippedQty(pshippedQty); |
|
|
|
|
|
if(deliverPlanDetailDO.getPlanQty() == deliverPlanDetailDO.getShippedQty()){ |
|
|
|
|
|
deliverPlanDetailDO.setAvailable("FALSE"); |
|
|
|
|
|
} |
|
|
|
|
|
// 如果全部明细状态为(关闭),更新计划状态为(已接受 => 完成)
|
|
|
|
|
|
QueryWrapper<DeliverPlanDetailDO> queryWrapper = new QueryWrapper<>(); |
|
|
|
|
|
queryWrapper.eq("master_id",deliverPlanMainDO.getId()); |
|
|
|
|
|
List<DeliverPlanDetailDO> deliverPlanDetailDOS = deliverPlanDetailMapper.selectList(queryWrapper); |
|
|
|
|
|
int size = deliverPlanDetailDOS.size(); |
|
|
|
|
|
int count = 0 ; |
|
|
|
|
|
for (DeliverPlanDetailDO planDetailDO : deliverPlanDetailDOS) { |
|
|
|
|
|
if("FALSE".equals(planDetailDO.getAvailable())){ |
|
|
|
|
|
count++; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(count == size){ |
|
|
|
|
|
deliverPlanMainDO.setStatus("7"); |
|
|
|
|
|
deliverPlanMainMapper.updateById(deliverPlanMainDO); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
ifDetailAllFinish(deliverPlanMainDO); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//判断如果主表下子表状态全为FALSE 则修改计划状态为完成
|
|
|
|
|
|
private void ifDetailAllFinish(DeliverPlanMainDO deliverPlanMainDO){ |
|
|
|
|
|
QueryWrapper<DeliverPlanDetailDO> detailDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
|
|
detailDOQueryWrapper.eq("master_id",deliverPlanMainDO.getId()); |
|
|
|
|
|
List<DeliverPlanDetailDO> deliverPlanDetailDOS = deliverPlanDetailMapper.selectList(detailDOQueryWrapper); |
|
|
|
|
|
Integer count = 0; |
|
|
|
|
|
for (DeliverPlanDetailDO deliverPlanDetailDO : deliverPlanDetailDOS) { |
|
|
|
|
|
if("TRUE".equals(deliverPlanDetailDO.getAvailable())){ |
|
|
|
|
|
count++; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(count <= 0){ |
|
|
|
|
|
deliverPlanMainDO.setStatus("7"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
@Transactional |
|
|
@Transactional |
|
|
public Integer closeDeliverPlanMain(Long id) { |
|
|
public Integer closeDeliverPlanMain(Long id) { |
|
@ -283,6 +241,38 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
throw new ServiceException(DELIVER_PLAN_CANNOT_PUBLISH); |
|
|
throw new ServiceException(DELIVER_PLAN_CANNOT_PUBLISH); |
|
|
} |
|
|
} |
|
|
mainDO.setStatus(planStatusState.getState().getCode());//增加操作记录
|
|
|
mainDO.setStatus(planStatusState.getState().getCode());//增加操作记录
|
|
|
|
|
|
//发布发货计划同时生成成品发货申请
|
|
|
|
|
|
DeliverRequestMainCreateReqVO requestMainCreateReqVO = new DeliverRequestMainCreateReqVO(); |
|
|
|
|
|
BeanUtils.copyProperties(mainDO, requestMainCreateReqVO); |
|
|
|
|
|
BusinesstypeDO requestBusinesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("DeliverRequest"); |
|
|
|
|
|
requestMainCreateReqVO.setBusinessType(requestBusinesstypeDO.getCode()); |
|
|
|
|
|
RequestsettingDO requestsettingDO = requestsettingService.selectRequestsettingExist("DeliverRequest"); |
|
|
|
|
|
requestMainCreateReqVO.setAutoAgree(requestsettingDO.getAutoAgree()); |
|
|
|
|
|
requestMainCreateReqVO.setAutoCommit(requestsettingDO.getAutoCommit()); |
|
|
|
|
|
requestMainCreateReqVO.setAutoExecute(requestsettingDO.getAutoExecute()); |
|
|
|
|
|
requestMainCreateReqVO.setDirectCreateRecord(requestsettingDO.getDirectCreateRecord()); |
|
|
|
|
|
requestMainCreateReqVO.setDueTime(mainDO.getEndTime()); |
|
|
|
|
|
requestMainCreateReqVO.setDeliverPlanNumber(mainDO.getNumber()); |
|
|
|
|
|
DeptRespDTO dept = deptApi.getDept(userApi.getUser(Long.valueOf(mainDO.getCreator())).getDeptId()); |
|
|
|
|
|
requestMainCreateReqVO.setDepartmentCode(dept.getId().toString()); |
|
|
|
|
|
RequestStatusState requestStatusState = new RequestStatusState(); |
|
|
|
|
|
requestStatusState.newObject(requestMainCreateReqVO.getAutoCommit(), requestMainCreateReqVO.getAutoAgree(), requestMainCreateReqVO.getAutoExecute()); |
|
|
|
|
|
requestMainCreateReqVO.setStatus(requestStatusState.getState().getCode()); |
|
|
|
|
|
List<DeliverPlanDetailDO> deliverPlanDetailDOS = deliverPlanDetailService.selectListByMasterID(mainDO.getId()); |
|
|
|
|
|
DeliverRequestDetailCreateReqVO deliverRequestDetailCreateReqVO = new DeliverRequestDetailCreateReqVO(); |
|
|
|
|
|
List<DeliverRequestDetailCreateReqVO> requestSubList = new ArrayList<>(); |
|
|
|
|
|
for (DeliverPlanDetailDO deliverPlanDetailDO : deliverPlanDetailDOS) { |
|
|
|
|
|
BeanUtils.copyProperties(deliverPlanDetailDO, deliverRequestDetailCreateReqVO); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setId(null); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setCreator(null); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setCreateTime(null); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setUpdater(null); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setUpdateTime(null); |
|
|
|
|
|
deliverRequestDetailCreateReqVO.setQty(deliverPlanDetailDO.getPlanQty()); |
|
|
|
|
|
requestSubList.add(deliverRequestDetailCreateReqVO); |
|
|
|
|
|
} |
|
|
|
|
|
requestMainCreateReqVO.setSubList(requestSubList); |
|
|
|
|
|
deliverRequestMainService.createDeliverRequestMain(requestMainCreateReqVO); |
|
|
trendsApi.createTrends(id, "deliverPlan", "发布了发货计划", TrendsTypeEnum.UPDATE); |
|
|
trendsApi.createTrends(id, "deliverPlan", "发布了发货计划", TrendsTypeEnum.UPDATE); |
|
|
return deliverPlanMainMapper.updateById(mainDO); |
|
|
return deliverPlanMainMapper.updateById(mainDO); |
|
|
} |
|
|
} |
|
@ -520,12 +510,14 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { |
|
|
private void validatorCustomerExist(String customerCode) { |
|
|
private void validatorCustomerExist(String customerCode) { |
|
|
customerService.selectCustomerExist(customerCode); |
|
|
customerService.selectCustomerExist(customerCode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//子表校验物品基础信息
|
|
|
//子表校验物品基础信息
|
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
private ItembasicDO validatorItembasic(String itemCode) { |
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
return itembasicService.selectItembasic(itemCode); |
|
|
} |
|
|
} |
|
|
//子表校验销售订单明细
|
|
|
|
|
|
private void validatorDetailExist(String soNumber, String soLine, String itemCode) { |
|
|
// //子表校验销售订单明细
|
|
|
deliverJobMainService.saleDetailExist(soNumber, soLine, itemCode); |
|
|
// private void validatorDetailExist(String soNumber, String soLine, String itemCode) {
|
|
|
} |
|
|
// deliverJobMainService.saleDetailExist(soNumber, soLine, itemCode);
|
|
|
|
|
|
// }
|
|
|
} |
|
|
} |
|
|