From 2fb28b36f15de26249ae34160e1accf118c011c7 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期五, 17 十一月 2023 16:47:17 +0800
Subject: [PATCH] Changes16

---
 mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java                              |    3 +
 mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java                         |   12 ++++
 mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java                               |   31 ++++++++++
 mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java                               |    5 +
 mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java            |   15 +++-
 mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java                             |    2 
 mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java                           |   36 ++++++++++++
 mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java    |    5 -
 mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java                     |   11 +++
 mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java |   44 ++++++++++++--
 mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml                                         |    4 +
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java                   |    5 +
 12 files changed, 155 insertions(+), 18 deletions(-)

diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
index 1a1c2c9..50ec42c 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
+++ b/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());
 		//涓�绾у垎绫�
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java
index 80fb285..b9dd444 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/controller/MasterProductionScheduleController.java
+++ b/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 = "閫氳繃涓昏鍒掓煡璇fs搴撳瓨鐢熶骇閲囪喘璁″垝", notes = "閫氳繃涓昏鍒掓煡璇fs搴撳瓨鐢熶骇閲囪喘璁″垝")
 	@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));
 	}
 
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
index bb82473..f07ff54 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/CustomerOrder.java
+++ b/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;
 	/**
 	 * 鏁伴噺
 	 */
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/ProcurementPlan.java
new file mode 100644
index 0000000..c75a5ed
--- /dev/null
+++ b/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;
+
+}
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/entity/RawMaterial.java
new file mode 100644
index 0000000..9248261
--- /dev/null
+++ b/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;
+}
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/ProcurementPlanMapper.java
new file mode 100644
index 0000000..2c221a2
--- /dev/null
+++ b/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> {
+}
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/mapper/RawMaterialMapper.java
new file mode 100644
index 0000000..403984f
--- /dev/null
+++ b/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> {
+
+}
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
index 01b4adc..f76773e 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/CustomerOrderServiceImpl.java
+++ b/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() + "銆慚ES鏈湴鏌ユ棤鍖归厤闆朵欢瀵硅薄");
 			}
-			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("閿�鍞鍗�");
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
index 510d7b7..9ce7fc6 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/service/impl/MasterProductionScheduleServiceImpl.java
+++ b/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);
+				
+			});
 
+		});
+	}
 
 }
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java
index 61a4bfa..b7eca06 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO.java
+++ b/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 = "闆朵欢鍙凤細鐢ㄤ簬鐢熶骇鐨勯浂浠跺彿")
diff --git a/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java b/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java
index b3a6ba9..271d3f2 100644
--- a/mes-plan/src/main/java/com/chinaztt/mes/plan/vo/CustomerOrderVO2.java
+++ b/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;
 
diff --git a/mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml b/mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml
index 928ac0b..9d6f977 100644
--- a/mes-plan/src/main/resources/mapper/CustomerOrderMapper.xml
+++ b/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

--
Gitblit v1.9.3