mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
@@ -480,6 +480,7 @@ //触åé¶ä»¶ @Override public String triggerAdd(PartVo partVo) { log.info("æ¥æ¶ä¸»æ°æ®å¹³å°æ°æ®ä¸º===================ã"+JSONObject.toJSONString(partVo)); Part part = new Part(); BeanUtils.copyProperties(partVo,part); //å建è @@ -489,9 +490,9 @@ //é¶ä»¶å· part.setPartNo(partVo.getMaterial_number()); //åç§° part.setPartName(partVo.getMaterial_name()); part.setPartName(partVo.getMaterial_description()); //é¶ä»¶æè¿° part.setDescription(partVo.getMaterial_description()); part.setDescription(partVo.getMaterial_name()); //åä½ part.setUnit(partVo.getUnit()); //ä¸çº§åç±» mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java
@@ -15,7 +15,6 @@ import com.chinaztt.mes.technology.service.StructureService; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.log.annotation.SysLog; import com.chinaztt.ztt.common.security.annotation.Inner; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -356,8 +355,8 @@ @ApiOperation(value = "éè¿ä¸»è®¡åæ¥è¯¢ifsåºåç产éè´è®¡å", notes = "éè¿ä¸»è®¡åæ¥è¯¢ifsåºåç产éè´è®¡å") @PostMapping("/addPlanPurchasing") @Inner(value = false) public R addPlanPurchasing(@RequestParam(required = false) List<MasterProductionSchedule>masterProductionSchedules){ //@Inner(value = false) public R addPlanPurchasing(@RequestBody List<MasterProductionSchedule>masterProductionSchedules){ return R.ok(masterProductionScheduleService.addPlanPurchasing(masterProductionSchedules)); } mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
@@ -110,7 +110,7 @@ private String partNo; @ApiModelProperty(value = "é¶ä»¶ç¼å·ï¼ç¨äºç产çé¶ä»¶å·") private String partId; private Long partId; /** * æ°é */ mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package com.chinaztt.mes.plan.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; /** * @Author å¼ å®¾ * @Date 2023/11/17 */ @Data @TableName("plan_procurement") @ApiModel("éè´è®¡å") @EqualsAndHashCode(callSuper = true) public class ProcurementPlan extends Model<ProcurementPlan> { @TableId(type = IdType.ASSIGN_ID) private Long id; private Long pLanPartId; private String partName; private BigDecimal requiresNum; private Long planId; private Integer state; } mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.chinaztt.mes.plan.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; /** * @Author å¼ å®¾ * @Date 2023/11/17 */ @Data @TableName("plan_raw_material") @ApiModel("éè´è®¡å") @EqualsAndHashCode(callSuper = true) public class RawMaterial extends Model<RawMaterial> { @TableId(type = IdType.ASSIGN_ID) private Long id; private Long planId; private Long partId; private BigDecimal reservationNum; } mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.chinaztt.mes.plan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.chinaztt.mes.plan.entity.ProcurementPlan; /** * @Author å¼ å®¾ * @Date 2023/11/17 */ public interface ProcurementPlanMapper extends BaseMapper<ProcurementPlan> { } mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.chinaztt.mes.plan.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.chinaztt.mes.plan.entity.RawMaterial; /** * @Author å¼ å®¾ * @Date 2023/11/17 */ public interface RawMaterialMapper extends BaseMapper<RawMaterial> { } mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
@@ -259,11 +259,14 @@ if (isAudit.equals(AuditStateStringValues.ACCEPTED)) { //TODO: è¦å é¶ä»¶idåæ° Document document = documentMapper.selectById(customerOrder.getTechnologyDocumentId()); Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getId,customerOrder.getPartId() )); if( null == document){ throw new RuntimeException("缺å°å·¥èºæä»¶"); } Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getEngChgLevel, "1").eq(Part::getId,document.getPartId() )); if (null == part) { throw new RuntimeException("æ ¹æ®é¶ä»¶ç¼å· = ã" + customerOrder.getPartNo() + "ãMESæ¬å°æ¥æ å¹é é¶ä»¶å¯¹è±¡"); } if (!part.getMaterialType().equals("3") && null == document) { if (!"3".equals(part.getMaterialType())) { throw new RuntimeException("缺å°å·¥èºæä»¶"); } customerOrder.setCoState(CustomerOrderStateStringValues.PLAN); @@ -347,6 +350,9 @@ @Override public boolean createMasterProductionSchedule(List<CustomerOrderDTO> customerOrderDTOList) { customerOrderDTOList.forEach(c->{ log.info("主ç产计å------------>"+JSONObject.toJSONString(c)); }); List<Long> ids = customerOrderDTOList.stream().map(CustomerOrderDTO::getId).collect(Collectors.toList()); Integer count = getBaseMapper().selectCount(Wrappers.<CustomerOrder>lambdaQuery() .ne(CustomerOrder::getIsAudit, AuditStateStringValues.ACCEPTED) @@ -384,11 +390,12 @@ masterProductionSchedule.setDocNumber(customerOrderDTO.getDocNumber()); //éæ±æ°é masterProductionSchedule.setQtyRequired(qta); //éæ±æ¥æ masterProductionSchedule.setRequiredDate(customerOrderDTO.getDeliveryDate()); //æ¿è¯ºæ¥æ masterProductionSchedule.setPromisedDeliveryDate(customerOrderDTO.getDeliveryDate()); //夿³¨ masterProductionSchedule.setRemark(customerOrderDTO.getRemark()); masterProductionSchedule.setQtyRequired(qta); //客æ·éæ±æ¥æ masterProductionSchedule.setRequiredDate(customerOrderDTO.getWantedDeliveryDate()); masterProductionSchedule.setRemark(customerOrderDTO.getRemark()); masterProductionSchedule.setSource("éå®è®¢å"); mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
@@ -3,6 +3,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -28,12 +29,14 @@ import com.chinaztt.mes.plan.state.masterproductionschedule.MasterProductionScheduleStateMachineConfig; import com.chinaztt.mes.plan.state.masterproductionschedule.constant.MasterProductionScheduleEvents; import com.chinaztt.mes.plan.state.masterproductionschedule.constant.MasterProductionScheduleStates; import com.chinaztt.mes.technology.dto.BomDTO; import com.chinaztt.mes.technology.dto.StructureTree; import com.chinaztt.mes.technology.entity.Document; import com.chinaztt.mes.technology.entity.JoinDocumentBomRouting; import com.chinaztt.mes.technology.entity.Routing; import com.chinaztt.mes.technology.entity.Structure; import com.chinaztt.mes.technology.mapper.DocumentMapper; import com.chinaztt.mes.technology.mapper.RoutingMapper; import com.chinaztt.mes.technology.mapper.StructureMapper; import com.chinaztt.mes.technology.mapper.*; import com.chinaztt.mes.technology.service.BomService; import com.chinaztt.mes.technology.service.DocumentService; import com.chinaztt.mes.technology.state.document.constant.DocumentStates; import com.chinaztt.ztt.admin.api.vo.TreeUtil; @@ -88,6 +91,12 @@ private StateMachineFactory<MasterProductionScheduleStates, MasterProductionScheduleEvents> masterproductionscheduleStateMachineFactory; private StateMachinePersister<MasterProductionScheduleStates, MasterProductionScheduleEvents, MasterProductionSchedule> persister; private MoStructureComponentMapper moStructureComponentMapper; private JoinDocumentBomRoutingMapper joinDocumentBomRoutingMapper; private BomComponentMapper bomComponentMapper; private BomService bomService; private ProcurementPlanMapper procurementPlanMapper; private RawMaterialMapper rawMaterialMapper; @Override public IPage<List<MasterProductionScheduleDTO>> getMasterProductionSchedulePage(Page page, QueryWrapper<MasterProductionScheduleDTO> masterProductionScheduleDTO) { @@ -468,16 +477,19 @@ @Override public boolean addPlanPurchasing(List<MasterProductionSchedule>masterProductionSchedules) { masterProductionSchedules.forEach(p->{ System.out.println("----------------->"+p); Long technologyDocumentId = p.getTechnologyDocumentId(); Document document = documentMapper.selectById(technologyDocumentId); Long firstPart = document.getPartId(); JoinDocumentBomRouting joinDocumentBomRouting = joinDocumentBomRoutingMapper.selectOne(new QueryWrapper<JoinDocumentBomRouting>().lambda() .eq(JoinDocumentBomRouting::getDocumentId, document.getId()).eq(JoinDocumentBomRouting::getPartId, firstPart)); BomDTO bomDtoById = bomService.getBomDtoById(joinDocumentBomRouting.getBomId()); StructureTree tree = bomDtoById.getTree(); BigDecimal total=p.getQtyRequired().multiply(tree.getOriginalQpa()); List<MoStructureComponent> moStructureComponents = moStructureComponentMapper.selectList(new QueryWrapper<MoStructureComponent>().lambda().eq(MoStructureComponent::getPlanManufacturingOrderId, p.getId())); moStructureComponents.forEach(m->{ Part part = partMapper.selectById(m.getPartId()); String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+part.getPartNo()+"}"; String body = HttpRequest.get(url).execute().body(); JSONObject partInfo = JSONObject.parseObject(body); log.info("åºåé¶ä»¶==================================>"+partInfo); }); }); return false; @@ -485,6 +497,24 @@ public void getPlanPurchase(List<StructureTree> children,List<ProcurementPlan> planList,BigDecimal originalQpa,long planId){ children.forEach(l->{ String url="http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_INFO_STD&userId=7632&inAttr={\"LOCATION_NO\": \"1019\",\"PART_NO\":"+l.getPartNo()+"}"; String body = HttpRequest.get(url).execute().body(); JSONObject result = JSONObject.parseObject(body); log.info("åºåé¶ä»¶==================================>"+result); JSONArray listInfo = result.getJSONArray("LIST_INFO"); listInfo.forEach(i->{ JSONObject data = JSONObject.parseObject(i.toString()); //Ifså½åé¶ä»¶åºåæ°é BigDecimal qtyOnhand = data.getBigDecimal("QTY_ONHAND"); //éè¦ç产å¤å°æ°é BigDecimal multiply = l.getOriginalQpa().multiply(originalQpa); BigDecimal subtract = qtyOnhand.subtract(multiply); }); }); } } mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java
@@ -10,6 +10,11 @@ public class CustomerOrderVO { /** * é¶ä»¶Id */ private Long partId; /** * é¶ä»¶å·ï¼ç¨äºç产çé¶ä»¶å· */ @ApiModelProperty(value = "é¶ä»¶å·ï¼ç¨äºç产çé¶ä»¶å·") mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java
@@ -28,6 +28,9 @@ //ä¸åæ¥æ private LocalDateTime placeOrderDate; //客æ·éæ±æ¶é´ private LocalDateTime wantedDeliveryDate; //交货æ¶é´ private LocalDateTime deliveryDate; mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml
@@ -267,6 +267,7 @@ <result property="deliveryDate" column="delivery_date"/> <result property="manufactureAttr" column="manufacture_attr"/> <result property="remark" column="remark"/> <result property="wantedDeliveryDate" column="wanted_delivery_date"/> </resultMap> <!-- éè¦å¤ç --> @@ -295,7 +296,8 @@ sales_man , delivery_date, manufacture_attr, pco.remark pco.remark, wanted_delivery_date FROM plan_customer_order pco LEFT JOIN plan_customer pc ON pc."id" = pco.customer_id