From 3870cf443bf0dfd9394bc545c8e90ac0d6dacaeb Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期一, 08 九月 2025 17:55:05 +0800
Subject: [PATCH] 上料实体类调整、物料消耗明细基础代码、报工接口适配调整(适配上料表结构调整、并记录物料消耗明细)

---
 src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java             |   73 ++++++----
 src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java |   19 ++
 src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml         |    5 
 src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java    |  177 +++++++++++++++++++++++++
 src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java                  |   74 ++++++++++
 src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java            |   17 ++
 src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java                            |   29 +--
 src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java         |   14 ++
 8 files changed, 361 insertions(+), 47 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java
new file mode 100644
index 0000000..0d00a74
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialConsumptionDetailController.java
@@ -0,0 +1,177 @@
+package org.jeecg.modules.mes.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail;
+import org.jeecg.modules.mes.service.IMesMaterialConsumptionDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 鐗╂枡娑堣�楁槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-09-08
+ * @Version: V1.0
+ */
+@Api(tags="鐗╂枡娑堣�楁槑缁�")
+@RestController
+@RequestMapping("/mes/mesMaterialConsumptionDetail")
+@Slf4j
+public class MesMaterialConsumptionDetailController extends JeecgController<MesMaterialConsumptionDetail, IMesMaterialConsumptionDetailService> {
+	@Autowired
+	private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService;
+	
+	/**
+	 * 鍒嗛〉鍒楄〃鏌ヨ
+	 *
+	 * @param mesMaterialConsumptionDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-鍒嗛〉鍒楄〃鏌ヨ", notes="鐗╂枡娑堣�楁槑缁�-鍒嗛〉鍒楄〃鏌ヨ")
+	@GetMapping(value = "/list")
+	public Result<IPage<MesMaterialConsumptionDetail>> queryPageList(MesMaterialConsumptionDetail mesMaterialConsumptionDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<MesMaterialConsumptionDetail> queryWrapper = QueryGenerator.initQueryWrapper(mesMaterialConsumptionDetail, req.getParameterMap());
+		Page<MesMaterialConsumptionDetail> page = new Page<MesMaterialConsumptionDetail>(pageNo, pageSize);
+		IPage<MesMaterialConsumptionDetail> pageList = mesMaterialConsumptionDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   娣诲姞
+	 *
+	 * @param mesMaterialConsumptionDetail
+	 * @return
+	 */
+	@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-娣诲姞")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-娣诲姞", notes="鐗╂枡娑堣�楁槑缁�-娣诲姞")
+	//@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody MesMaterialConsumptionDetail mesMaterialConsumptionDetail) {
+		mesMaterialConsumptionDetailService.save(mesMaterialConsumptionDetail);
+		return Result.OK("娣诲姞鎴愬姛锛�");
+	}
+	
+	/**
+	 *  缂栬緫
+	 *
+	 * @param mesMaterialConsumptionDetail
+	 * @return
+	 */
+	@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-缂栬緫")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-缂栬緫", notes="鐗╂枡娑堣�楁槑缁�-缂栬緫")
+	//@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody MesMaterialConsumptionDetail mesMaterialConsumptionDetail) {
+		mesMaterialConsumptionDetailService.updateById(mesMaterialConsumptionDetail);
+		return Result.OK("缂栬緫鎴愬姛!");
+	}
+	
+	/**
+	 *   閫氳繃id鍒犻櫎
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-閫氳繃id鍒犻櫎")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-閫氳繃id鍒犻櫎", notes="鐗╂枡娑堣�楁槑缁�-閫氳繃id鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		mesMaterialConsumptionDetailService.removeById(id);
+		return Result.OK("鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 *  鎵归噺鍒犻櫎
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-鎵归噺鍒犻櫎", notes="鐗╂枡娑堣�楁槑缁�-鎵归噺鍒犻櫎")
+	//@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.mesMaterialConsumptionDetailService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+	}
+	
+	/**
+	 * 閫氳繃id鏌ヨ
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "鐗╂枡娑堣�楁槑缁�-閫氳繃id鏌ヨ")
+	@ApiOperation(value="鐗╂枡娑堣�楁槑缁�-閫氳繃id鏌ヨ", notes="鐗╂枡娑堣�楁槑缁�-閫氳繃id鏌ヨ")
+	@GetMapping(value = "/queryById")
+	public Result<MesMaterialConsumptionDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		MesMaterialConsumptionDetail mesMaterialConsumptionDetail = mesMaterialConsumptionDetailService.getById(id);
+		if(mesMaterialConsumptionDetail==null) {
+			return Result.error("鏈壘鍒板搴旀暟鎹�");
+		}
+		return Result.OK(mesMaterialConsumptionDetail);
+	}
+
+    /**
+    * 瀵煎嚭excel
+    *
+    * @param request
+    * @param mesMaterialConsumptionDetail
+    */
+    //@RequiresPermissions("org.jeecg.modules:mes_material_consumption_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, MesMaterialConsumptionDetail mesMaterialConsumptionDetail) {
+        return super.exportXls(request, mesMaterialConsumptionDetail, MesMaterialConsumptionDetail.class, "鐗╂枡娑堣�楁槑缁�");
+    }
+
+    /**
+      * 閫氳繃excel瀵煎叆鏁版嵁
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("mes_material_consumption_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, MesMaterialConsumptionDetail.class);
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java
new file mode 100644
index 0000000..3ee6685
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialConsumptionDetail.java
@@ -0,0 +1,74 @@
+package org.jeecg.modules.mes.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 鐗╂枡娑堣�楁槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-09-08
+ * @Version: V1.0
+ */
+@Data
+@TableName("mes_material_consumption_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="mes_material_consumption_detail瀵硅薄", description="鐗╂枡娑堣�楁槑缁�")
+public class MesMaterialConsumptionDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**涓婚敭*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+	/**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+	/**鍒涘缓鏃堕棿*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+	/**璁㈠崟ID;鍗婃垚鍝佹姤宸ワ紝鏃犻渶缁戝畾鍒扮敓浜ц鍗�*/
+	@Excel(name = "璁㈠崟ID;鍗婃垚鍝佹姤宸ワ紝鏃犻渶缁戝畾鍒扮敓浜ц鍗�", width = 15)
+    @ApiModelProperty(value = "璁㈠崟ID;鍗婃垚鍝佹姤宸ワ紝鏃犻渶缁戝畾鍒扮敓浜ц鍗�")
+    @Dict(dictTable = "mes_production_order", dicCode = "id", dicText = "order_code")
+    private String orderId;
+	/**宸ュ崟ID*/
+	@Excel(name = "宸ュ崟ID", width = 15)
+    @ApiModelProperty(value = "宸ュ崟ID")
+    @Dict(dictTable = "mes_production_work_order", dicCode = "id", dicText = "work_order_code")
+    private String workOrderId;
+	/**浜х嚎ID*/
+	@Excel(name = "浜х嚎ID", width = 15)
+    @ApiModelProperty(value = "浜х嚎ID")
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
+    private String factoryId;
+	/**鎶ュ伐ID*/
+	@Excel(name = "鎶ュ伐ID", width = 15)
+    @ApiModelProperty(value = "鎶ュ伐ID")
+    private String reportingId;
+	/**涓婃枡ID*/
+	@Excel(name = "涓婃枡ID", width = 15)
+    @ApiModelProperty(value = "涓婃枡ID")
+    private String loadingId;
+	/**娑堣�楁暟閲�*/
+	@Excel(name = "娑堣�楁暟閲�", width = 15)
+    @ApiModelProperty(value = "娑堣�楁暟閲�")
+    private BigDecimal quantity;
+}
diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java
index ab81cc0..fdb6ba0 100644
--- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java
+++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialLoading.java
@@ -54,23 +54,14 @@
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
     @TableLogic
     private Integer delFlag;
-	/**宸ュ崟ID*/
-	@Excel(name = "宸ュ崟ID", width = 15)
-    @Dict(dictTable = "mes_production_work_order", dicCode = "id", dicText = "work_order_code")
-    @ApiModelProperty(value = "宸ュ崟ID")
-    private String workOrderId;
-	/**璁惧ID*/
-	@Excel(name = "璁惧ID", width = 15)
-    @ApiModelProperty(value = "璁惧ID")
-    private String equipmentId;
-	/**宸ュ簭缂栫爜*/
-	@Excel(name = "宸ュ簭缂栫爜", width = 15)
-    @ApiModelProperty(value = "宸ュ簭缂栫爜")
-    private String processCode;
-	/**宸ュ簭鍚嶇О*/
-	@Excel(name = "宸ュ簭鍚嶇О", width = 15)
-    @ApiModelProperty(value = "宸ュ簭鍚嶇О")
-    private String processName;
+    /**浜х嚎ID*/
+    @Excel(name = "浜х嚎ID", width = 15)
+    @ApiModelProperty(value = "浜х嚎ID")
+    private String factoryId;
+    /**搴撳瓨鍦癐D*/
+    @Excel(name = "搴撳瓨鍦癐D", width = 15)
+    @ApiModelProperty(value = "搴撳瓨鍦癐D")
+    private String warehouseId;
 	/**鐗╂枡缂栫爜*/
 	@Excel(name = "鐗╂枡缂栫爜", width = 15)
     @ApiModelProperty(value = "鐗╂枡缂栫爜")
@@ -83,6 +74,10 @@
 	@Excel(name = "鎵规鍙�", width = 15)
     @ApiModelProperty(value = "鎵规鍙�")
     private String batchNumber;
+    /**閽㈢悆灏哄*/
+    @Excel(name = "閽㈢悆灏哄", width = 15)
+    @ApiModelProperty(value = "閽㈢悆灏哄")
+    private String steelBallSize;
 	/**鏁伴噺*/
 	@Excel(name = "鏁伴噺", width = 15)
     @ApiModelProperty(value = "鏁伴噺")
diff --git a/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java b/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java
new file mode 100644
index 0000000..1ed426c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/mapper/MesMaterialConsumptionDetailMapper.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.mes.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 鐗╂枡娑堣�楁槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-09-08
+ * @Version: V1.0
+ */
+public interface MesMaterialConsumptionDetailMapper extends BaseMapper<MesMaterialConsumptionDetail> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml b/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml
new file mode 100644
index 0000000..095ff36
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/mapper/xml/MesMaterialConsumptionDetailMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.mes.mapper.MesMaterialConsumptionDetailMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java
new file mode 100644
index 0000000..72e9c86
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialConsumptionDetailService.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.mes.service;
+
+import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 鐗╂枡娑堣�楁槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-09-08
+ * @Version: V1.0
+ */
+public interface IMesMaterialConsumptionDetailService extends IService<MesMaterialConsumptionDetail> {
+
+}
diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java
new file mode 100644
index 0000000..79dbba0
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialConsumptionDetailServiceImpl.java
@@ -0,0 +1,19 @@
+package org.jeecg.modules.mes.service.impl;
+
+import org.jeecg.modules.mes.entity.MesMaterialConsumptionDetail;
+import org.jeecg.modules.mes.mapper.MesMaterialConsumptionDetailMapper;
+import org.jeecg.modules.mes.service.IMesMaterialConsumptionDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 鐗╂枡娑堣�楁槑缁�
+ * @Author: jeecg-boot
+ * @Date:   2025-09-08
+ * @Version: V1.0
+ */
+@Service
+public class MesMaterialConsumptionDetailServiceImpl extends ServiceImpl<MesMaterialConsumptionDetailMapper, MesMaterialConsumptionDetail> implements IMesMaterialConsumptionDetailService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
index d5f8a99..5a7af5a 100644
--- a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java
@@ -18,17 +18,12 @@
 import org.jeecg.modules.lsw.entity.LswMaterial;
 import org.jeecg.modules.lsw.entity.LswMaterialInbound;
 import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
+import org.jeecg.modules.lsw.enums.MaterialInboundCategory;
 import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
 import org.jeecg.modules.lsw.service.ILswMaterialService;
-import org.jeecg.modules.mes.entity.MesMaterialLoading;
-import org.jeecg.modules.mes.entity.MesProductionOrder;
-import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
-import org.jeecg.modules.mes.entity.MesWorkReporting;
+import org.jeecg.modules.mes.entity.*;
 import org.jeecg.modules.mes.mapper.MesWorkReportingMapper;
-import org.jeecg.modules.mes.service.IMesMaterialLoadingService;
-import org.jeecg.modules.mes.service.IMesProductionOrderService;
-import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
-import org.jeecg.modules.mes.service.IMesWorkReportingService;
+import org.jeecg.modules.mes.service.*;
 import org.jeecg.modules.mes.utils.CommonUtils;
 import org.jeecg.modules.pms.entity.PmsMaterialProcess;
 import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
@@ -97,6 +92,8 @@
     private IInspectionPlanService inspectionPlanService;
     @Autowired
     private IInspectionPlanItemService inspectionPlanItemService;
+    @Autowired
+    private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService;
 
     @Override
     public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) {
@@ -151,12 +148,13 @@
         String date = today.format(DateTimeFormatter.ofPattern("yyMMdd"));
         Factory factory = factoryService.getById(mesWorkReporting.getFactoryId());
         workOrder.setFactoryCode(factory.getFactoryCode());
+        List<MesMaterialConsumptionDetail> consumptionDetailList = CollectionUtil.newArrayList();
         switch (materialCategory) {
             case FINISHED_PRODUCT:
                 //鎴愬搧鎶ュ伐
-                productReport(mesWorkReporting, workOrder, lineSideWarehouse);
+                consumptionDetailList = productReport(mesWorkReporting, workOrder, lineSideWarehouse);
                 //鐢熸垚妫�楠屽伐鍗�
-                generateInspectionOrder(mesWorkReporting, workOrder);
+                //generateInspectionOrder(mesWorkReporting, workOrder);
                 //鎷兼帴鎴愬搧鎶ュ伐鎵樺彿
                 String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4");
                 String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4;
@@ -165,7 +163,7 @@
             case INNER_FLANGE:
             case OUTER_FLANGE:
                 //鍗婃垚鍝�(鍐呮硶鍏般�佸娉曞叞)鎶ュ伐
-                productReport(mesWorkReporting, workOrder, lineSideWarehouse);
+                consumptionDetailList = productReport(mesWorkReporting, workOrder, lineSideWarehouse);
                 //鎷兼帴鍗婃垚鍝佹姤宸ユ墭鍙�
                 Shift shift = shiftService.getById(workOrder.getShiftId());
                 String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6");
@@ -175,6 +173,9 @@
         }
         //鏂板鎶ュ伐璁板綍
         save(mesWorkReporting);
+        consumptionDetailList.forEach(i -> i.setReportingId(mesWorkReporting.getId()));
+        //淇濆瓨鐗╂枡娑堣�楁槑缁�
+        mesMaterialConsumptionDetailService.saveBatch(consumptionDetailList);
         //鏇存柊鎺掍骇宸ュ崟
         MesProductionWorkOrder productionWorkUpdateOrder = new MesProductionWorkOrder()
                 .setId(workOrder.getId())
@@ -186,7 +187,7 @@
     }
 
     //鍗婃垚鍝�(鍐呮硶鍏般�佸娉曞叞)銆佹垚鍝佹姤宸�
-    private void productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) {
+    private List<MesMaterialConsumptionDetail> productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) {
         //1銆佸叆搴� 鍗婃垚鍝�/鎴愬搧 鍒板搴旂嚎杈瑰簱
         LswMaterialInbound materialInbound = new LswMaterialInbound()
                 .setFactoryId(workOrder.getFactoryId())
@@ -194,21 +195,26 @@
                 .setMaterialNumber(workOrder.getMaterialNumber())
                 .setMaterialName(workOrder.getMaterialName())
                 .setBatchNumber(mesWorkReporting.getBatchNumber())
-                .setQuantity(mesWorkReporting.getQuantity());
-        lswMaterialInboundService.save(materialInbound);
-        //2銆佹墸鍑忎娇鐢ㄦ瘺鍧簱瀛橈紙鏇存柊涓婃枡璁板綍锛夋垨鍗婃垚鍝佺墿鏂欏簱瀛橈紙鍐呮硶鍏般�佸娉曞叞銆佸皬鍐呭湀銆侀厤浠剁瓑锛夛紝鎸夌収 鎺掍骇宸ュ崟id銆佺墿鏂欑紪鐮� 鏌ヨ涓婃枡璁板綍锛屾寜鐓ф椂闂翠粠鏃╁埌鏅氭帓搴忥紝浼樺厛鎵e噺鏃╃殑涓婃枡璁板綍锛堝厛杩涘厛鍑猴級
+                .setQuantity(mesWorkReporting.getQuantity())
+                .setInboundCategory(MaterialInboundCategory.PRODUCTION_INBOUND.name())//鐢熶骇涓嬬嚎
+                .setOriginalCode(lineSideWarehouse.getWarehouseCode())
+                .setOriginalName(lineSideWarehouse.getWarehouseName());
+        lswMaterialInboundService.inboundMaterial(materialInbound);
+        //2銆佹墸鍑忎娇鐢ㄦ瘺鍧簱瀛橈紙鏇存柊涓婃枡璁板綍锛夋垨鍗婃垚鍝佺墿鏂欏簱瀛橈紙鍐呮硶鍏般�佸娉曞叞銆佸皬鍐呭湀銆侀厤浠剁瓑锛夛紝鎸夌収 浜х嚎id銆佸簱瀛樺湴id銆佺墿鏂欑紪鐮� 鏌ヨ涓婃枡璁板綍锛屾寜鐓ф椂闂翠粠鏃╁埌鏅氭帓搴忥紝浼樺厛鎵e噺鏃╃殑涓婃枡璁板綍锛堝厛杩涘厛鍑猴級
         //鍏堟煡璇㈢墿鏂� BOM
         Map<String, ProcessBillMaterialsDetailVo> processBillMaterialsDetailMap = pmsProcessBillMaterialsService
                 .queryMaterialsDetailByOrderIdAndMaterialNumber(mesWorkReporting.getOrderId(), workOrder.getMaterialNumber()).stream()
                 .collect(Collectors.toMap(ProcessBillMaterialsDetailVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1));
         //鏌ヨ涓婃枡璁板綍
         Map<String, List<MesMaterialLoading>> materialLoadingRecordMap = mesMaterialLoadingService.list(new LambdaQueryWrapper<MesMaterialLoading>()
-                        .eq(MesMaterialLoading::getWorkOrderId, workOrder.getId())
+                        .eq(MesMaterialLoading::getFactoryId, workOrder.getFactoryId())
+                        .eq(MesMaterialLoading::getWarehouseId, lineSideWarehouse.getId())
                         .in(MesMaterialLoading::getMaterialNumber, processBillMaterialsDetailMap.keySet())
                         .gt(MesMaterialLoading::getRemainingQuantity, BigDecimal.ZERO)).stream()
                 .sorted(Comparator.comparing(MesMaterialLoading::getCreateTime))
                 .collect(Collectors.groupingBy(MesMaterialLoading::getMaterialNumber));
         List<MesMaterialLoading> materialLoadingRecordUpdateList = CollectionUtil.newArrayList();
+        List<MesMaterialConsumptionDetail> consumptionDetailAddList = CollectionUtil.newArrayList();
         for (String materialNumber : processBillMaterialsDetailMap.keySet()) {
             List<MesMaterialLoading> materialLoadingRecordList = materialLoadingRecordMap.get(materialNumber);
             if (materialLoadingRecordList.isEmpty()) {
@@ -217,8 +223,26 @@
             //璁$畻鐗╂枡鎵e噺鏁伴噺
             ProcessBillMaterialsDetailVo processBillMaterialsDetailVo = processBillMaterialsDetailMap.get(materialNumber);
             BigDecimal quantity = processBillMaterialsDetailVo.getPerQuantity().multiply(mesWorkReporting.getQuantity());
-            List<MesMaterialLoading> updateList = deductQuantity(materialLoadingRecordList, quantity);
-            materialLoadingRecordUpdateList.addAll(updateList);
+            //鎵e噺涓婃枡鏁伴噺骞惰褰曠墿鏂欐秷鑰楁槑缁�
+            for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) {
+                //璁板綍鐗╂枡娑堣�楁槑缁�
+                MesMaterialConsumptionDetail materialConsumptionDetail = new MesMaterialConsumptionDetail()
+                        .setOrderId(mesWorkReporting.getOrderId())
+                        .setWorkOrderId(workOrder.getId())
+                        .setFactoryId(workOrder.getFactoryId())
+                        .setLoadingId(mesMaterialLoading.getId());
+                if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) {
+                    mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getRemainingQuantity().subtract(quantity));
+                    materialConsumptionDetail.setQuantity(quantity);
+                    break;
+                } else {
+                    quantity = quantity.subtract(mesMaterialLoading.getRemainingQuantity());
+                    materialConsumptionDetail.setQuantity(mesMaterialLoading.getRemainingQuantity());
+                    mesMaterialLoading.setRemainingQuantity(BigDecimal.ZERO);
+                }
+                consumptionDetailAddList.add(materialConsumptionDetail);
+            }
+            materialLoadingRecordUpdateList.addAll(materialLoadingRecordList);
         }
         //鏇存柊涓婃枡璁板綍
         mesMaterialLoadingService.updateBatchById(materialLoadingRecordUpdateList);
@@ -258,6 +282,7 @@
                 log.error("SAP宸ュ簭鎶ュ伐寮傚父锛�", e);
             }
         }
+        return consumptionDetailAddList;
     }
 
     //鏍规嵁妫�楠屾柟妗堢敓鎴愭楠屽伐鍗�
@@ -281,16 +306,4 @@
         //todo 妫�楠屽伐鍗曠洰鍓嶈繕娌℃湁鐢熸垚浠g爜锛屾病鏈夊姛鑳�
     }
 
-    private List<MesMaterialLoading> deductQuantity(List<MesMaterialLoading> materialLoadingRecordList, BigDecimal quantity) {
-        for (MesMaterialLoading mesMaterialLoading : materialLoadingRecordList) {
-            if (mesMaterialLoading.getRemainingQuantity().compareTo(quantity) >= 0) {
-                mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getRemainingQuantity().subtract(quantity));
-                break;
-            } else {
-                quantity = quantity.subtract(mesMaterialLoading.getRemainingQuantity());
-                mesMaterialLoading.setRemainingQuantity(BigDecimal.ZERO);
-            }
-        }
-        return materialLoadingRecordList;
-    }
 }

--
Gitblit v1.9.3