diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquRepairOrderDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquRepairOrderDTO.java
index 434d1060..fd56d71b 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquRepairOrderDTO.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquRepairOrderDTO.java
@@ -12,6 +12,8 @@ public class EquRepairOrderDTO {
     private String userNickName;
     // 联系方式
     private String phoneNumber;
+    // 故障描述
+    private String orderDesc;
 
     public String getUserNickName() {
         return userNickName;
@@ -52,4 +54,12 @@ public class EquRepairOrderDTO {
     public void setEquipmentCode(String equipmentCode) {
         this.equipmentCode = equipmentCode;
     }
+
+    public String getOrderDesc() {
+        return orderDesc;
+    }
+
+    public void setOrderDesc(String orderDesc) {
+        this.orderDesc = orderDesc;
+    }
 }
diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java
index 7e8f4eef..19ad7422 100644
--- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java
+++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/HRInfo.java
@@ -1,15 +1,11 @@
 package com.op.system.api.domain.quality;
 
 import com.op.common.core.web.domain.BaseEntity;
-import com.op.common.core.xss.Xss;
 import com.op.system.api.domain.SysDept;
 import com.op.system.api.domain.SysRole;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
 import java.util.Date;
 import java.util.List;
 
@@ -72,6 +68,25 @@ public class HRInfo extends BaseEntity {
 	private String poscd;//岗位编码
 	private String ounam;//部门名称
 	private String oucod;//部门编码
+	private String wxId;
+	private String section;
+	private String peSnr;
+
+	public String getSection() {
+		return section;
+	}
+
+	public void setSection(String section) {
+		this.section = section;
+	}
+
+	public String getPeSnr() {
+		return peSnr;
+	}
+
+	public void setPeSnr(String peSnr) {
+		this.peSnr = peSnr;
+	}
 
 	public String getPeWorkID() {
 		return peWorkID;
@@ -161,8 +176,6 @@ public class HRInfo extends BaseEntity {
 		this.datasourceId = datasourceId;
 	}
 
-	//新增 微信账号
-	private String wxId;
 
 	public String getWxId() {
 		return wxId;
diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java
index a94ac60f..f58dfdbc 100644
--- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java
+++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/poi/ExcelMapUtil.java
@@ -43,9 +43,11 @@ public class ExcelMapUtil {
 				Cell titleCell = sheetTitleRow.createCell(i*rangeVal+1);//创建第一行第一个单元格
 				titleCell.setCellValue(title1s[i]);//传值
 				titleCell.setCellStyle(getHeaderFont(sheet.getWorkbook()));//设置样式
-				//主标题行合并单元格
-				CellRangeAddress cellAddresses = new CellRangeAddress(0, 0, i*rangeVal+1, (i+1)*rangeVal);
-				sheet.addMergedRegion(cellAddresses);
+				if((i*rangeVal+1)!=(i+1)*rangeVal){
+					//主标题行合并单元格
+					CellRangeAddress cellAddresses = new CellRangeAddress(0, 0, i*rangeVal+1, (i+1)*rangeVal);
+					sheet.addMergedRegion(cellAddresses);
+				}
 			}
 
 			//创建表头行(第二行)
diff --git a/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml b/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml
index 1305bcbc..12c38729 100644
--- a/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml
+++ b/op-modules/op-energy/src/main/resources/mapper/record/RecordDnbInstantMapper.xml
@@ -44,7 +44,7 @@
             </if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (record_dnb_instant.monitor_id = #{monitorSubset} OR record_dnb_instant.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
             <if test="vA != null ">and vA = #{vA}</if>
             <if test="vB != null ">and vB = #{vB}</if>
@@ -82,7 +82,7 @@
             <if test="monitorId != null  and monitorId != ''">and rdi.monitor_id = #{monitorId}</if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (rdi.monitor_id = #{monitorSubset} OR rdi.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
             <if test="params.monitorIdList != null  and params.monitorIdList.size > 0">
                 and rdi.monitor_id IN
@@ -93,7 +93,7 @@
         </where>
         group by rdi.monitor_id) md on md.monitor_id = d.monitor_id and md.collect_time = d.collect_time
         left join base_monitor_info m on m.monitor_id = d.monitor_id
-        left join (select rpd.monitor_id, ifnull(sum(rpd.expend), 0) consumption
+        left join (select rpd.monitor_id, isnull(sum(rpd.expend), 0) consumption
         from report_point_dnb rpd
         <if test="params.beginCollectTime != null and params.beginCollectTime != '' and params.endCollectTime != null and params.endCollectTime != ''">
             where rpd.begin_time between #{params.beginCollectTime} and #{params.endCollectTime}
@@ -116,7 +116,7 @@
             <if test="monitorId != null  and monitorId != ''">and bmi.monitor_id = #{monitorId}</if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (bmi.monitor_id = #{monitorSubset} OR bmi.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
         </where>
     </select>
diff --git a/op-modules/op-energy/src/main/resources/mapper/record/RecordWaterInstantMapper.xml b/op-modules/op-energy/src/main/resources/mapper/record/RecordWaterInstantMapper.xml
index b0538665..8d0f070b 100644
--- a/op-modules/op-energy/src/main/resources/mapper/record/RecordWaterInstantMapper.xml
+++ b/op-modules/op-energy/src/main/resources/mapper/record/RecordWaterInstantMapper.xml
@@ -35,7 +35,7 @@
             </if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (record_water_instant.monitor_id = #{monitorSubset} OR record_water_instant.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
             <if test="fluxFlow != null ">and flux_flow = #{fluxFlow}</if>
             <if test="waterFlow != null ">and water_flow = #{waterFlow}</if>
@@ -63,7 +63,7 @@
             <if test="monitorId != null  and monitorId != ''">and rdi.monitor_id = #{monitorId}</if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (rdi.monitor_id = #{monitorSubset} OR rdi.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
             <if test="params.monitorIdList != null  and params.monitorIdList.size > 0">
                 and rdi.monitor_id IN
@@ -74,7 +74,7 @@
         </where>
         group by rdi.monitor_id) md on md.monitor_id = d.monitor_id and md.collect_time = d.collect_time
         left join base_monitor_info m on m.monitor_id = d.monitor_id
-        left join (select rpd.monitor_id, ifnull(sum(rpd.expend), 0) consumption
+        left join (select rpd.monitor_id, isnull(sum(rpd.expend), 0) consumption
         from report_point_dnb rpd
         <if test="params.beginCollectTime != null and params.beginCollectTime != '' and params.endCollectTime != null and params.endCollectTime != ''">
             where rpd.begin_time between #{params.beginCollectTime} and #{params.endCollectTime}
@@ -94,7 +94,7 @@
             <if test="monitorId != null  and monitorId != ''">and bmi.monitor_id = #{monitorId}</if>
             <if test="monitorSubset != null  and monitorSubset != ''">
                 and (bmi.monitor_id = #{monitorSubset} OR bmi.monitor_id IN
-                (SELECT t.monitor_id FROM base_monitor_info t WHERE FIND_IN_SET(#{monitorSubset}, ancestors)))
+                (SELECT t.monitor_id FROM base_monitor_info t WHERE dbo.FIND_IN_SET(#{monitorSubset}, ancestors) > 0))
             </if>
         </where>
     </select>
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareDetailController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareDetailController.java
index 22968024..b82b0b24 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareDetailController.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesPrepareDetailController.java
@@ -40,12 +40,18 @@ public class MesPrepareDetailController extends BaseController {
      * @return
      */
     @RequiresPermissions("mes:prepareDetail:export")
-    @Log(title = "mes备料打印", businessType = BusinessType.EXPORT)
-    @GetMapping("/printPrepareByCode/{workorderCode}")
-    public AjaxResult printPrepareByCode(@PathVariable("workorderCode") String workorderCode) {
-        return mesPrepareDetailService.printPrepareByCode(workorderCode);
+    @Log(title = "mes备料打印生产物料", businessType = BusinessType.EXPORT)
+    @GetMapping("/printPrepareByCode/{workorderCode}/{recoil}")
+    public AjaxResult printPrepareByCode(@PathVariable("workorderCode") String workorderCode,@PathVariable("recoil") String recoil) {
+        return mesPrepareDetailService.printPrepareByCode(workorderCode,recoil);
     }
 
+    @RequiresPermissions("mes:prepareDetail:export")
+    @Log(title = "mes备料打印某天的反冲物料", businessType = BusinessType.EXPORT)
+    @GetMapping("/printPrepareXByCode/{productDate}")
+    public AjaxResult printPrepareXByCode(@PathVariable("productDate") String productDate) {
+        return mesPrepareDetailService.printPrepareXByCode(productDate);
+    }
     /**
      * 查询mes备料单明细列表
      */
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
index 03531d04..8803c218 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java
@@ -533,6 +533,13 @@ public class MesReportWorkController extends BaseController {
 		public AjaxResult deleteBomRowNow(@PathVariable String id) {
 			return toAjax(mesReportWorkService.deleteBomRowNow(id));
 		}
+
+	/**删除报工数据**/
+	@DeleteMapping("/deleteReportNow/{reportCode}")
+	public AjaxResult deleteReportNow(@PathVariable String reportCode) {
+		return toAjax(mesReportWorkService.deleteReportNow(reportCode));
+	}
+
     //获取仓库下拉列表
 		@GetMapping("/getWarehouseList")
 		public List<MesReportWorkConsume> getWarehouseList(MesReportWorkConsume workConsume) {
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java
index c2e9db33..d64aaf86 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepare.java
@@ -173,9 +173,17 @@ public class MesPrepare extends BaseEntity {
      */
     @Excel(name = "工厂编码")
     private String factoryCode;
-
+    private String prodLineCode;
     private String dayStr;
 
+    public String getProdLineCode() {
+        return prodLineCode;
+    }
+
+    public void setProdLineCode(String prodLineCode) {
+        this.prodLineCode = prodLineCode;
+    }
+
     public String getWorkorderCodeSap() {
         return workorderCodeSap;
     }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java
index 932242f7..d1754627 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesPrepareDetail.java
@@ -66,7 +66,7 @@ public class MesPrepareDetail extends BaseEntity {
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "工单生产日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date productDate;
-
+    private String productDateStr;
     /**
      * 班次
      */
@@ -118,6 +118,23 @@ public class MesPrepareDetail extends BaseEntity {
     private String buyFlag;
     private String workorderCode;
     private String parentOrder;
+    private String prodLineCode;
+
+    public String getProductDateStr() {
+        return productDateStr;
+    }
+
+    public void setProductDateStr(String productDateStr) {
+        this.productDateStr = productDateStr;
+    }
+
+    public String getProdLineCode() {
+        return prodLineCode;
+    }
+
+    public void setProdLineCode(String prodLineCode) {
+        this.prodLineCode = prodLineCode;
+    }
 
     public String getParentOrder() {
         return parentOrder;
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java
index c1bf16f4..22a64a4f 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesPrepareDetailMapper.java
@@ -68,8 +68,10 @@ public interface MesPrepareDetailMapper {
     /**
      * 通过主领料单id查询领料详情list
      *
-     * @param workorderCode
+     * @param dto
      * @return
      */
-    List<MesPrepareDetail> selectPrintPrepareDetailList(String workorderCode);
+    List<MesPrepareDetail> selectPrintPrepareDetailList(MesPrepareDetail dto);
+
+    List<MesPrepareDetail> selectPreDetailHzList(MesPrepareDetail qodetail);
 }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java
index 2e9ea33c..09e9bdcc 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java
@@ -157,4 +157,9 @@ public interface MesReportWorkMapper {
     List<MesReportWork> getProductProData(MesReportWork dto);
 
     List<MesMachineReport> getMachineProductionList(MesMachineReport mesMachineReport);
+
+    String getUploadStatusByReportCode(String reportCode);
+
+    int deleteReport(String reportCode);
+    int deleteReportConsume(String reportCode);
 }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareDetailService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareDetailService.java
index f732b88b..09807e52 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareDetailService.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesPrepareDetailService.java
@@ -65,5 +65,7 @@ public interface IMesPrepareDetailService {
      *
      * @return
      */
-    AjaxResult printPrepareByCode(String workorderCode);
+    AjaxResult printPrepareByCode(String workorderCode,String recoil);
+
+    AjaxResult printPrepareXByCode(String productDate);
 }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java
index d7ec54e8..c8a52065 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java
@@ -127,4 +127,6 @@ public interface IMesReportWorkService {
     LineChartDto getMonthProData(MesReportProduction mesReportProduction);
 
     List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport);
+
+    int deleteReportNow(String reportCode);
 }
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java
index 0a316968..99828f87 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesPrepareDetailServiceImpl.java
@@ -102,9 +102,35 @@ public class MesPrepareDetailServiceImpl implements IMesPrepareDetailService {
      */
     @Override
     @DS("#header.poolName")
-    public AjaxResult printPrepareByCode(String workorderCode) {
+    public AjaxResult printPrepareByCode(String workorderCode,String recoil) {
         MesPrepare mesPrepare = mesPrepareMapper.selectMesPrepareByCode(workorderCode);
-        List<MesPrepareDetail> mesPrepareDetailList = mesPrepareDetailMapper.selectPrintPrepareDetailList(workorderCode);
+        MesPrepareDetail qodetail = new MesPrepareDetail();
+        qodetail.setWorkorderCode(workorderCode);
+        qodetail.setRecoil("0".equals(recoil)?"":recoil);
+        List<MesPrepareDetail> mesPrepareDetailList = mesPrepareDetailMapper.selectPrintPrepareDetailList(qodetail);
+        mesPrepare.setProdLineCode(mesPrepareDetailList.get(0).getProdLineCode().split(",")[1]
+                .replace("\"","")
+                .replace("\"","")
+                .replace("]]",""));
+        PrintPrepareVo printPrepareVo = new PrintPrepareVo();
+        printPrepareVo.setMesPrepare(mesPrepare);
+        printPrepareVo.setMesPrepareDetailList(mesPrepareDetailList);
+        return AjaxResult.success(printPrepareVo);
+    }
+
+    /**
+     * 通过日期打印反冲物料的备料单
+     *
+     * @return
+     */
+    @Override
+    @DS("#header.poolName")
+    public AjaxResult printPrepareXByCode(String productDate) {
+        MesPrepare mesPrepare = new MesPrepare();
+        MesPrepareDetail qodetail = new MesPrepareDetail();
+        qodetail.setProductDateStr(productDate);
+        qodetail.setRecoil("X");
+        List<MesPrepareDetail> mesPrepareDetailList = mesPrepareDetailMapper.selectPreDetailHzList(qodetail);
         PrintPrepareVo printPrepareVo = new PrintPrepareVo();
         printPrepareVo.setMesPrepare(mesPrepare);
         printPrepareVo.setMesPrepareDetailList(mesPrepareDetailList);
diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java
index eb893d50..b0279ef1 100644
--- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java
+++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java
@@ -576,6 +576,18 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
 		return dynamicColumn;
 	}
 
+	@Override
+	@DS("#header.poolName")
+	public int deleteReportNow(String reportCode) {
+		String uploadStatus = mesReportWorkMapper.getUploadStatusByReportCode(reportCode);
+		if("1".equals(uploadStatus)){
+			return 0;
+		}
+		int reportNum = mesReportWorkMapper.deleteReport(reportCode);
+		int consumeNum = mesReportWorkMapper.deleteReportConsume(reportCode);
+		return reportNum;
+	}
+
 	@Override
 	@DS("#header.poolName")
 	public List<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport) {
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml
index b451787b..ae78454a 100644
--- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml
@@ -65,7 +65,8 @@
         where record_id = #{recordId}
     </select>
 
-    <select id="selectPrintPrepareDetailList" parameterType="String" resultType="com.op.mes.domain.MesPrepareDetail">
+    <select id="selectPrintPrepareDetailList" parameterType="com.op.mes.domain.MesPrepareDetail"
+            resultType="com.op.mes.domain.MesPrepareDetail">
 		select
 			mp.workorder_name workorderCode,
 		    mpd.material_code materialCode,
@@ -76,13 +77,34 @@
 		    mpd.fund_quanlity fundQuanlity,
 		    mpd.factory_code factoryCode,
 		    mpd.recoil,
-		    ow.product_date productDate
+		    ow.product_date productDate,
+            ow.prod_line_code prodLineCode
 		from pro_order_workorder ow
-				 left join mes_prepare mp on ow.workorder_code = mp.workorder_code
-				 left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id
+     left join mes_prepare mp on ow.workorder_code = mp.workorder_code
+     left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id
 		where ow.belong_work_order = #{workorderCode}
+        and mpd.recoil = #{recoil} and mp.del_flag = '0' and mpd.del_flag = '0'
 		order by mpd.recoil
 	</select>
+    <select id="selectPreDetailHzList" resultType="com.op.mes.domain.MesPrepareDetail">
+        select
+            mpd.material_code materialCode,
+            mpd.material_name materialName,
+            sum(mpd.quantity) quantity,
+            mpd.unit,
+            sum(CONVERT(DECIMAL(10, 3), mpd.fund_quanlity)) fundQuanlity,
+            mpd.factory_code factoryCode,mpd.recoil
+        from pro_order_workorder ow
+         left join mes_prepare mp on ow.workorder_code = mp.workorder_code
+         left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id
+        where ow.product_date = #{productDateStr}
+          and mpd.recoil = #{recoil} and mp.del_flag = '0' and mpd.del_flag = '0'
+        GROUP BY mpd.material_code,
+                 mpd.material_name,
+                 mpd.unit,
+                 mpd.factory_code,mpd.recoil
+        order by mpd.material_code
+    </select>
 
     <insert id="insertMesPrepareDetail" parameterType="MesPrepareDetail">
         insert into mes_prepare_detail
diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml
index b06517c6..f16ff3f4 100644
--- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml
+++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml
@@ -563,7 +563,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			mrw.use_man useMan,
 			mrw.create_time createTime,
 			pow.workorder_code_sap workorderCodeSap,
-		    mrw.remark,mrw.report_code reportCode
+		    mrw.remark,mrw.report_code reportCode,
+		    mrw.machine_code machineCode
 		from mes_report_work mrw
 		left join pro_order_workorder pow on mrw.workorder_code = pow.workorder_code
 		where mrw.del_flag='0' and pow.del_flag = '0'
@@ -782,9 +783,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			pow.product_code,
 			pow.product_name
 	</select>
+    <select id="getUploadStatusByReportCode" resultType="java.lang.String">
+		select top 1 upload_status from mes_report_work where report_code = #{reportCode}
+	</select>
 
-
-	<insert id="insertMesReportWork" parameterType="MesReportWork">
+    <insert id="insertMesReportWork" parameterType="MesReportWork">
 		insert into mes_report_work
 		<trim prefix="(" suffix=")" suffixOverrides=",">
 			<if test="id != null">id,</if>
@@ -999,4 +1002,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		set del_flag = '1'
 		where record_id = #{id}
 	</delete>
+	<delete id="deleteReport">
+		update mes_report_work set del_flag = '1' where report_code = #{reportCode}
+	</delete>
+	<delete id="deleteReportConsume">
+		update mes_report_work_consume set del_flag = '1' where report_code = #{reportCode}
+	</delete>
 </mapper>
diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
index 29811b5b..ea98a3c8 100644
--- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
+++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java
@@ -282,6 +282,7 @@ public class OpenServiceImpl implements OpenService {
         equRepairOrder.setOrderId(IdUtils.fastSimpleUUID());// id
         equRepairOrder.setEquipmentCode(equRepairOrderDTO.getEquipmentCode());
         equRepairOrder.setOrderSource("上位机");// 故障来源
+        equRepairOrder.setOrderDesc(equRepairOrderDTO.getOrderDesc());//故障描述 新增加的
         equRepairOrder.setOrderTime(DateUtils.getNowDate());// 报修时间
         equRepairOrder.setOrderBreakdownTime(DateUtils.getNowDate());// 故障时间
         if (equRepairOrderDTO.getUserName() != null) {
@@ -392,7 +393,7 @@ public class OpenServiceImpl implements OpenService {
         qcCheckTaskProduce.setFactoryCode(factoryCode);
         qcCheckTaskProduce.setCreateTime(nowDate);
         qcCheckTaskProduce.setTypeCode("produce");//大检验节点
-        qcCheckTaskProduce.setIncomeTime(qcCheckTaskProduce.getProduceDate());
+        qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
         qcCheckTaskProduce.setSupplierCode(qcCheckTaskProduce.getCarCode());
         qcCheckTaskProduce.setSupplierName(qcCheckTaskProduce.getCarName());
         qcCheckTaskProduce.setCheckManName(null);
diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java
index bf3f8750..5eb59c91 100644
--- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java
+++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java
@@ -826,13 +826,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
                         BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity())
                                 .subtract(new BigDecimal(proOrder.getAtrr1()));
                         sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量
-                        logger.info("母订单" + proOrder.getOrderCode() +
-                                "订单数量变更:修改前" + proOrder.getQuantity() + "," +
-                                "已拆数量" + proOrder.getAtrr1() + "," +
-                                "给sap汇报数量" + newSapQuantityNum.toString());
-                        R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
-                        logger.info("母订单" + proOrder.getOrderCode() +
-                                "订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
+//                        logger.info("母订单" + proOrder.getOrderCode() +
+//                                "订单数量变更:修改前" + proOrder.getQuantity() + "," +
+//                                "已拆数量" + proOrder.getAtrr1() + "," +
+//                                "给sap汇报数量" + newSapQuantityNum.toString());
+//                        R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
+//                        logger.info("母订单" + proOrder.getOrderCode() +
+//                                "订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
                     }
 
                     // 获得对应工单----------------------------------------------------------------------------?
@@ -1015,13 +1015,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
                     BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity())
                             .subtract(new BigDecimal(proOrder.getAtrr1()));
                     sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量
-                    logger.info("母订单" + proOrder.getOrderCode() +
-                            "订单数量变更:修改前" + proOrder.getQuantity() + "," +
-                            "已拆数量" + proOrder.getAtrr1() + "," +
-                            "给sap汇报数量" + newSapQuantityNum.toString());
-                    R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
-                    logger.info("母订单" + proOrder.getOrderCode() +
-                            "订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
+//                    logger.info("母订单" + proOrder.getOrderCode() +
+//                            "订单数量变更:修改前" + proOrder.getQuantity() + "," +
+//                            "已拆数量" + proOrder.getAtrr1() + "," +
+//                            "给sap汇报数量" + newSapQuantityNum.toString());
+//                    R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
+//                    logger.info("母订单" + proOrder.getOrderCode() +
+//                            "订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
                 }
 
                 // 获得对应工单----------------------------------------------------------------------------?
@@ -1144,7 +1144,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
     public AjaxResult checkWorkOrder(String id) {
         ProOrderWorkorder proOrderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(id);
         if (!(proOrderWorkorder.getStatus().equals("w0") || proOrderWorkorder.getStatus().equals("w1"))) {
-            return error("工单已生产,不可变更!");
+            return error("工单只有未派发和已派发才可变更!");
         }
         return success();
     }
diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml
index 679f9847..37b06efd 100644
--- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml
+++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderMapper.xml
@@ -126,6 +126,7 @@
 		    LEFT JOIN pro_order_workorder pow
 		ON powb.workorder_id = pow.workorder_id
 		WHERE pow.workorder_id = #{workorderId} and powb.del_flag = '0'
+        order by powb.batch_code
 	</select>
 
     <select id="selectPackageLine" resultType="com.op.plan.domain.ProLine">
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
index ca699691..9e318ff9 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java
@@ -471,5 +471,9 @@ public class QcCheckTaskIncomeController extends BaseController {
         dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
         return R.ok();
     }
+    @GetMapping("/getWeightValue/{id}")
+    public AjaxResult getWeightValue(@PathVariable String id) {
+        return success(qcCheckTaskIncomeService.getWeightValue(id));
+    }
 
 }
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java
index 1ef4918f..b0c97b03 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java
@@ -100,4 +100,6 @@ public interface IQcCheckTaskIncomeService {
     List<QcDefectType> getCheckLocList(QcDefectType qcDefectType);
 
     List<String> getTodayIncomeLists();
+
+    public String getWeightValue(String id);
 }
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportIncomeServiceImpl.java
index 6f6b40bf..9cd273c5 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportIncomeServiceImpl.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportIncomeServiceImpl.java
@@ -1,8 +1,6 @@
 package com.op.quality.service.impl;
 
-import com.alibaba.fastjson2.JSONArray;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.op.common.core.utils.DateUtils;
 import com.op.common.core.utils.StringUtils;
 import com.op.common.core.utils.uuid.IdUtils;
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java
index e66489a3..ad2621a6 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java
@@ -86,6 +86,8 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
 
 	@Autowired
 	private IQcCheckUnqualifiedService qcCheckUnqualifiedService;
+	@Autowired
+	private QcProCheckService qcProCheckService;
 
 	/**
 	 * 查询来料检验
@@ -124,6 +126,32 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
 	public List<QcCheckTaskIncome> selectQcCheckTaskIncomeList(QcCheckTaskIncome qcCheckTaskIncome) {
 		qcCheckTaskIncome.setDelFlag("0");
 		qcCheckTaskIncome.setTypeCode("material");
+
+//		//发企业微信--------------------开始(跟班组无关)
+//		SysNoticeGroup noticeQo = new SysNoticeGroup();
+//		noticeQo.setNoticeId(6L);
+//		List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
+//		if(!CollectionUtils.isEmpty(notices)) {
+//			List<WechartDTO> wecharts = new ArrayList<>();
+//
+//			List<String> wxids = new ArrayList<>();
+//			wxids.add("MES002");
+//			for (String wxid : wxids) {
+//				WechartDTO wechart0 = new WechartDTO();
+//				wechart0.setUserId(wxid);
+//				wechart0.setText("您好,有一条新的来料检验任务,需要您登陆手持进行处理。");
+//				wecharts.add(wechart0);
+//			}
+//			logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
+//			if (!CollectionUtils.isEmpty(wecharts)) {
+//				new Thread(() -> {
+//					AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
+//					logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result));
+//
+//				}).start();
+//			}
+//			//发企业微信--------------------结束
+//		}
 		return qcCheckTaskIncomeMapper.selectQcCheckTaskIncomeList(qcCheckTaskIncome);
 	}
 
@@ -270,34 +298,34 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
 		}
 		int s =  qcCheckTaskDetailMapper.addBatch(items);
 
-		//发企业微信--------------------开始(跟班组无关)
-		SysNoticeGroup noticeQo = new SysNoticeGroup();
-		noticeQo.setNoticeId(6L);
-		List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
-		if(!CollectionUtils.isEmpty(notices)) {
-			List<WechartDTO> wecharts = new ArrayList<>();
-			//去主库查微信id
-			DynamicDataSourceContextHolder.push("master");// 这是数据源的key
-			List<String> userCodes = users.stream()
-					.map(QcUserMaterialDTO::getUserCode)
-					.collect(Collectors.toList());
-			List<String> wxids = qcCheckTaskIncomeMapper.getWxId(userCodes);
-			for (String wxid : wxids) {
-				WechartDTO wechart0 = new WechartDTO();
-				wechart0.setUserId(wxid);
-				wechart0.setText(notices.get(0).getNoticeContent());
-				wecharts.add(wechart0);
-			}
-			logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
-			if (!CollectionUtils.isEmpty(wecharts)) {
-				new Thread(() -> {
-					AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
-					logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result));
-
-				}).start();
-			}
-			//发企业微信--------------------结束
-		}
+//		//发企业微信--------------------开始(跟班组无关)
+//		SysNoticeGroup noticeQo = new SysNoticeGroup();
+//		noticeQo.setNoticeId(6L);
+//		List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
+//		if(!CollectionUtils.isEmpty(notices)) {
+//			List<WechartDTO> wecharts = new ArrayList<>();
+//			//去主库查微信id
+//			DynamicDataSourceContextHolder.push("master");// 这是数据源的key
+//			List<String> userCodes = users.stream()
+//					.map(QcUserMaterialDTO::getUserCode)
+//					.collect(Collectors.toList());
+//			List<String> wxids = qcCheckTaskIncomeMapper.getWxId(userCodes);
+//			for (String wxid : wxids) {
+//				WechartDTO wechart0 = new WechartDTO();
+//				wechart0.setUserId(wxid);
+//				wechart0.setText(notices.get(0).getNoticeContent());
+//				wecharts.add(wechart0);
+//			}
+//			logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
+//			if (!CollectionUtils.isEmpty(wecharts)) {
+//				new Thread(() -> {
+//					AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts);
+//					logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result));
+//
+//				}).start();
+//			}
+//			//发企业微信--------------------结束
+//		}
 		return s;
 	}
 
@@ -879,4 +907,22 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
 	}
 
 
+	@Override
+	public String getWeightValue(String id) {
+		if (StringUtils.isEmpty(id)) {
+			return "";
+		}
+		QcCheckTaskDetail qcCheckTaskDetail = new QcCheckTaskDetail();
+		qcCheckTaskDetail.setRecordId(id);
+
+		///获取当前所选工厂
+		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+		String key = "#header.poolName";
+		String factoryCode = request.getHeader(key.substring(8));
+		qcCheckTaskDetail.setFactoryCode(factoryCode);
+
+		return qcProCheckService.getWeightInfo(qcCheckTaskDetail);
+	}
+
+
 }
diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java
index 323e9444..0e4352ce 100644
--- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java
+++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java
@@ -254,6 +254,7 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
 			//试产
 			qcCheckTaskProduce.setProductType("c");
 		}
+		qcCheckTaskProduce.setIncomeTime(DateUtils.getNowDate());
         qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
 
         /**qc_check_task_detail**/
diff --git a/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml b/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml
index 22d19da5..773f5703 100644
--- a/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/op-modules/op-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -189,12 +189,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		insert into sys_user
 		(user_name,nick_name,post,dept_id,
 		phonenumber,sex,status,
-		create_by,create_time,del_flag)
+		create_by,create_time,del_flag,
+		section,pe_snr)
 		VALUES
 		<foreach collection="list" index="index" item="item" separator=",">
 			(#{item.userName},#{item.nickName},#{item.post},#{item.deptId},
 			#{item.phonenumber},#{item.sex},#{item.status},
-			#{item.createBy},#{item.createTime},'0')
+			#{item.createBy},#{item.createTime},'0',#{item.section},#{item.peSnr})
 		</foreach>
 	</insert>
 
@@ -238,6 +239,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			    <if test="item.deptId!=null">section = #{item.deptId},</if>
 				<if test="item.post!=null">post = #{item.post},</if>
 				<if test="item.phonenumber!=null">phonenumber = #{item.phonenumber},</if>
+			    <if test="item.section!=null">section = #{item.section},</if>
+				<if test="item.peSnr!=null">pe_snr = #{item.peSnr},</if>
 			sex = #{item.sex},
 			del_flag = #{item.delFlag},
 			update_by = #{item.updateBy},