|
|
@ -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()); |
|
|
|