Browse Source

备料计划发布后自动创建发料申请

master
陈薪名 2 years ago
parent
commit
2b6c4f42ea
  1. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/production/vo/ProductionDetailBaseVO.java
  2. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/production/vo/ProductionDetailBaseVO.java

@ -64,4 +64,7 @@ public class ProductionDetailBaseVO {
@Schema(description = "是否可用")
private String available;
@Schema(description = "主表ID")
private Long masterId;
}

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java

@ -7,8 +7,11 @@ 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.serialnumber.SerialNumberApi;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.bom.vo.BomExportReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestDetailCreateReqVO;
import com.win.module.wms.controller.issueRequest.vo.IssueRequestMainCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.convert.preparetoissue.PreparetoissueDetailConvert;
import com.win.module.wms.convert.preparetoissue.PreparetoissueMainConvert;
@ -22,8 +25,11 @@ import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueDetailMapper;
import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueMainMapper;
import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PlanStatusState;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.service.bom.BomService;
import com.win.module.wms.service.issueRequest.IssueRequestMainService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
@ -40,6 +46,7 @@ import java.math.BigDecimal;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
@ -50,6 +57,10 @@ import static com.win.module.wms.enums.ErrorCodeConstants.*;
@Service
@Validated
public class PreparetoissueMainServiceImpl implements PreparetoissueMainService {
@Resource
private AdminUserApi userApi;
@Resource
private IssueRequestMainService issueRequestMainService;
@Resource
private BomService bomService;
@Resource
@ -246,8 +257,8 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_PUBLISH);
}
mainDO.setStatus(planStatusState.getState().getCode());
// 生成申请单据
// this.generateRequest(mainDO, productionDetailMapper.selectList(mainDO.getId()));
// 生成 发料申请 单据
this.generateRequest(mainDO, preparetoissueDetailMapper.selectList(mainDO.getId()));
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "发布了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
@ -310,6 +321,33 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
shiftService.selectShiftExist(mainDo.getShift());
}
/**
* 创建 发料申请
* @param mainDO
* @param detailDO
*/
private void generateRequest (PreparetoissueMainDO mainDO, List<PreparetoissueDetailDO> detailDO) {
IssueRequestMainCreateReqVO issueRequestMainCreateReqVO = new IssueRequestMainCreateReqVO();
issueRequestMainCreateReqVO.setWorkshopCode(mainDO.getWorkshop());
issueRequestMainCreateReqVO.setUseOnTheWayLocation("TRUE");
issueRequestMainCreateReqVO.setStatus(RequestStatusEnum.NEW.getCode());
issueRequestMainCreateReqVO.setDepartmentCode(String.valueOf(userApi.getUser(getLoginUserId()).getDeptId()));
List<IssueRequestDetailCreateReqVO> subList = new ArrayList<>();
detailDO.forEach(itemDetailDO -> {
IssueRequestDetailCreateReqVO issueRequestDetailCreateReqVO = new IssueRequestDetailCreateReqVO();
issueRequestDetailCreateReqVO.setProductionLineCode(mainDO.getProdLine());
issueRequestDetailCreateReqVO.setWorkStationCode(itemDetailDO.getWorkStation());
issueRequestDetailCreateReqVO.setInventoryStatus("OK"); // 库存状态默认都是合格
issueRequestDetailCreateReqVO.setToLocationCode(itemDetailDO.getToLocationCode());
issueRequestDetailCreateReqVO.setItemCode(itemDetailDO.getItemCode());
issueRequestDetailCreateReqVO.setQty(itemDetailDO.getPlanQty());
issueRequestDetailCreateReqVO.setUom(itemDetailDO.getUom());
subList.add(issueRequestDetailCreateReqVO);
});
issueRequestMainCreateReqVO.setSubList(subList);
issueRequestMainService.createIssueRequestMain(issueRequestMainCreateReqVO);
}
/**
* bom拆解
@ -322,7 +360,7 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
List<PreparetoissueDetailCreateReqVO> subList = new ArrayList<>();
detailDOList.forEach(item -> {
List<Map<String,Object>> list = new ArrayList<>();
this.BomRecursion(item.getItemCode(), list);
this.BomRecursion(item.getItemCode(), item.getBomVersion(), list);
list.forEach(itemBom -> {
PreparetoissueDetailCreateReqVO preparetoissueDetailCreateReqVO = new PreparetoissueDetailCreateReqVO();
preparetoissueDetailCreateReqVO.setAvailable(item.getAvailable());
@ -342,15 +380,16 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
* @param itemCode
* @param list
*/
private void BomRecursion (String itemCode,List<Map<String,Object>> list) {
private void BomRecursion (String itemCode,String bomVersion ,List<Map<String,Object>> list) {
BomExportReqVO bomExportReqVO = new BomExportReqVO();
bomExportReqVO.setProductItemCode(itemCode);
bomExportReqVO.setVersion(bomVersion);
bomExportReqVO.setAvailable("TRUE");
List<BomDO> bomDOList = bomService.getBomList(bomExportReqVO);
bomDOList.forEach(item -> {
// 判断物品是否是虚零件
if (itembasicService.selectItembasic(item.getComponentItemCode()).getIsPhantom().equals("TRUE")) {
this.BomRecursion(item.getComponentItemCode(),list);
this.BomRecursion(item.getComponentItemCode(), item.getVersion(), list);
} else {
Map<String,Object> map = new HashMap<>();
map.put("itemCode",item.getComponentItemCode());

Loading…
Cancel
Save