From 7fc3a69a9592fde25971055ff0c98eea98188805 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期四, 07 八月 2025 10:20:11 +0800
Subject: [PATCH] 生产管控 排产功能接口

---
 db/双林新火炬MES数据库设计.pdma.json                                                              |   22 +
 src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java |   84 +++++++
 src/main/java/org/jeecg/modules/base/service/impl/ShiftServiceImpl.java                 |    7 
 src/main/java/org/jeecg/modules/base/service/IShiftService.java                         |    3 
 src/main/java/org/jeecg/modules/base/mapper/ShiftMapper.java                            |    1 
 src/main/java/org/jeecg/modules/mes/enums/ProductionWorkOrderStatus.java                |   17 +
 src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkOrderRepublishRequest.java     |   21 +
 src/main/java/org/jeecg/modules/mes/entity/MesProductionWorkOrder.java                  |   40 ++
 src/main/java/org/jeecg/modules/base/controller/ShiftGroupController.java               |   35 +++
 src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java    |  372 ++++++++++++++++++++++-----------
 src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkScheduleRequest.java           |   31 ++
 src/main/java/org/jeecg/modules/base/mapper/xml/ShiftMapper.xml                         |    8 
 src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java         |    4 
 13 files changed, 509 insertions(+), 136 deletions(-)

diff --git "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index 42ffab3..e3aa0fd 100644
--- "a/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/\345\217\214\346\236\227\346\226\260\347\201\253\347\202\254MES\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
@@ -4,7 +4,7 @@
   "avatar": "",
   "version": "4.9.4",
   "createdTime": "2025-3-10 16:38:19",
-  "updatedTime": "2025-7-28 20:46:22",
+  "updatedTime": "2025-8-7 10:18:16",
   "dbConns": [],
   "profile": {
     "default": {
@@ -632,7 +632,7 @@
       "#DDE5FF"
     ],
     "DDLToggleCase": "L",
-    "menuWidth": "364px"
+    "menuWidth": "293px"
   },
   "entities": [
     {
@@ -11409,6 +11409,24 @@
           "extProps": {},
           "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
           "id": "3319292F-3CC9-4D3A-B20F-1736BFE8DE66"
+        },
+        {
+          "defKey": "republish_reason",
+          "defName": "閲嶅彂甯冨師鍥�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+          "extProps": {},
+          "domain": "3E948CEC-3070-472C-AF92-F3CA11EC9D15",
+          "id": "2AED1385-ED6E-470E-98C0-2F077E1A3187"
         }
       ],
       "correlations": [],
diff --git a/src/main/java/org/jeecg/modules/base/controller/ShiftGroupController.java b/src/main/java/org/jeecg/modules/base/controller/ShiftGroupController.java
index ba9a438..f7bc3ce 100644
--- a/src/main/java/org/jeecg/modules/base/controller/ShiftGroupController.java
+++ b/src/main/java/org/jeecg/modules/base/controller/ShiftGroupController.java
@@ -9,8 +9,16 @@
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TranslateDictTextUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.base.entity.ShiftGroup;
 import org.jeecg.modules.base.entity.UserGroup;
@@ -54,6 +62,11 @@
 
 	 @Autowired
 	 private IUserGroupService userGroupService;
+
+	 @Autowired
+	 private ObjectMapper objectMapper;
+	 @Autowired
+	 private TranslateDictTextUtils translateDictTextUtils;
 	
 	/**
 	 * 鍒嗛〉鍒楄〃鏌ヨ
@@ -157,6 +170,28 @@
 		return Result.OK(shiftGroup);
 	}
 
+	@AutoLog(value = "鐝粍浜哄憳淇℃伅-閫氳繃浜х嚎id鏌ヨ鍏朵笅鎵�鏈夌彮缁�")
+	@ApiOperation(value="鐝粍浜哄憳淇℃伅-閫氳繃浜х嚎id鏌ヨ鍏朵笅鎵�鏈夌彮缁�", notes = "鐝粍浜哄憳淇℃伅-閫氳繃浜х嚎id鏌ヨ鍏朵笅鎵�鏈夌彮缁�")
+	@GetMapping(value = "/queryShiftGroupByFactoryId")
+	public Result<?> queryShiftGroupByFactoryId(@RequestParam(name="factoryId") String factoryId) {
+		List<ShiftGroup> shiftGroupList = shiftGroupService.list(new LambdaQueryWrapper<ShiftGroup>()
+				.eq(ShiftGroup::getFactoryId, factoryId)
+				.eq(ShiftGroup::getDelFlag, CommonConstant.DEL_FLAG_0));
+		JSONArray array = new JSONArray();
+        for (ShiftGroup shiftGroup : shiftGroupList) {
+            try {
+                String json = objectMapper.writeValueAsString(shiftGroup);
+                JSONObject item = JSONObject.parseObject(json);
+                translateDictTextUtils.translateField("shiftId", shiftGroup.getShiftId(), item, "base_shift,shift_name,id");
+				translateDictTextUtils.translateField("shiftCode", shiftGroup.getShiftId(), item, "base_shift,shift_code,id");
+                array.add(item);
+            } catch (JsonProcessingException e) {
+				return Result.error("鏁版嵁杞瘧澶辫触锛�");
+            }
+        }
+        return Result.OK(array);
+	}
+
     /**
     * 瀵煎嚭excel
     *
diff --git a/src/main/java/org/jeecg/modules/base/mapper/ShiftMapper.java b/src/main/java/org/jeecg/modules/base/mapper/ShiftMapper.java
index 66fe3af..2da1132 100644
--- a/src/main/java/org/jeecg/modules/base/mapper/ShiftMapper.java
+++ b/src/main/java/org/jeecg/modules/base/mapper/ShiftMapper.java
@@ -14,4 +14,5 @@
  */
 public interface ShiftMapper extends BaseMapper<Shift> {
 
+    List<Shift> selectShiftListByFactoryId(String factoryId);
 }
diff --git a/src/main/java/org/jeecg/modules/base/mapper/xml/ShiftMapper.xml b/src/main/java/org/jeecg/modules/base/mapper/xml/ShiftMapper.xml
index cb85843..ce54435 100644
--- a/src/main/java/org/jeecg/modules/base/mapper/xml/ShiftMapper.xml
+++ b/src/main/java/org/jeecg/modules/base/mapper/xml/ShiftMapper.xml
@@ -2,4 +2,12 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.base.mapper.ShiftMapper">
 
+    <select id="selectShiftListByFactoryId" resultType="org.jeecg.modules.base.entity.Shift">
+        select
+            t1.*,
+            t2.id as group_id
+        from base_shift t1
+        inner join base_shift_group t2 on t1.id = t2.shift_id
+        where t1.del_flag = 0 and t1.shift_status = '1' and t2.del_flag = 0 and t2.factory_id = #{factoryId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/base/service/IShiftService.java b/src/main/java/org/jeecg/modules/base/service/IShiftService.java
index a1d955c..7a26242 100644
--- a/src/main/java/org/jeecg/modules/base/service/IShiftService.java
+++ b/src/main/java/org/jeecg/modules/base/service/IShiftService.java
@@ -3,6 +3,8 @@
 import org.jeecg.modules.base.entity.Shift;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 鐝
  * @Author: jeecg-boot
@@ -11,4 +13,5 @@
  */
 public interface IShiftService extends IService<Shift> {
 
+    List<Shift> selectShiftListByFactoryId(String factoryId);
 }
diff --git a/src/main/java/org/jeecg/modules/base/service/impl/ShiftServiceImpl.java b/src/main/java/org/jeecg/modules/base/service/impl/ShiftServiceImpl.java
index 58f99ff..86cba92 100644
--- a/src/main/java/org/jeecg/modules/base/service/impl/ShiftServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/base/service/impl/ShiftServiceImpl.java
@@ -7,6 +7,9 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * @Description: 鐝
  * @Author: jeecg-boot
@@ -16,4 +19,8 @@
 @Service
 public class ShiftServiceImpl extends ServiceImpl<ShiftMapper, Shift> implements IShiftService {
 
+    @Override
+    public List<Shift> selectShiftListByFactoryId(String factoryId) {
+        return this.baseMapper.selectShiftListByFactoryId(factoryId);
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
index 5a340af..d712a21 100644
--- a/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
+++ b/src/main/java/org/jeecg/modules/mes/controller/MesProductionWorkOrderController.java
@@ -1,16 +1,26 @@
 package org.jeecg.modules.mes.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.mes.dto.MesProductionWorkOrderRepublishRequest;
+import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest;
 import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
+import org.jeecg.modules.mes.enums.ProductionWorkOrderStatus;
 import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -18,144 +28,258 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
-* @Description: 鎺掍骇宸ュ崟
-* @Author: jeecg-boot
-* @Date:   2025-07-04
-* @Version: V1.0
-*/
-@Api(tags="鎺掍骇宸ュ崟")
+ * @Description: 鎺掍骇宸ュ崟
+ * @Author: jeecg-boot
+ * @Date: 2025-07-04
+ * @Version: V1.0
+ */
+@Api(tags = "鎺掍骇宸ュ崟")
 @RestController
 @RequestMapping("/mesproductionworkorder/mesProductionWorkOrder")
 @Slf4j
 public class MesProductionWorkOrderController extends JeecgController<MesProductionWorkOrder, IMesProductionWorkOrderService> {
-   @Autowired
-   private IMesProductionWorkOrderService mesProductionWorkOrderService;
+    @Autowired
+    private IMesProductionWorkOrderService mesProductionWorkOrderService;
 
-   /**
-    * 鍒嗛〉鍒楄〃鏌ヨ
-    *
-    * @param mesProductionWorkOrder
-    * @param pageNo
-    * @param pageSize
-    * @param req
-    * @return
-    */
-   //@AutoLog(value = "鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ")
-   @ApiOperation(value="鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ")
-   @GetMapping(value = "/list")
-   public Result<IPage<MesProductionWorkOrder>> queryPageList(MesProductionWorkOrder mesProductionWorkOrder,
-                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-                                  HttpServletRequest req) {
-       QueryWrapper<MesProductionWorkOrder> queryWrapper = QueryGenerator.initQueryWrapper(mesProductionWorkOrder, req.getParameterMap());
-       Page<MesProductionWorkOrder> page = new Page<MesProductionWorkOrder>(pageNo, pageSize);
-       IPage<MesProductionWorkOrder> pageList = mesProductionWorkOrderService.page(page, queryWrapper);
-       return Result.OK(pageList);
-   }
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param mesProductionWorkOrder
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ", notes = "鎺掍骇宸ュ崟-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<MesProductionWorkOrder>> queryPageList(MesProductionWorkOrder mesProductionWorkOrder,
+                                                               @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                               @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                               HttpServletRequest req) {
+        Map<String, String[]> parameterMap = req.getParameterMap();
+        QueryWrapper<MesProductionWorkOrder> queryWrapper = QueryGenerator.initQueryWrapper(mesProductionWorkOrder, parameterMap);
+        String[] startDates = parameterMap.get("startDate");
+        String[] endDates = parameterMap.get("endDate");
+        if (startDates != null && startDates.length > 0) {
+            queryWrapper.ge("work_order_date", startDates[0]);
+        }
+        if (endDates != null && endDates.length > 0) {
+            queryWrapper.le("work_order_date", endDates[0]);
+        }
+        Page<MesProductionWorkOrder> page = new Page<MesProductionWorkOrder>(pageNo, pageSize);
+        IPage<MesProductionWorkOrder> pageList = mesProductionWorkOrderService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
 
-   /**
-    *   娣诲姞
-    *
-    * @param mesProductionWorkOrder
-    * @return
-    */
-   @AutoLog(value = "鎺掍骇宸ュ崟-娣诲姞")
-   @ApiOperation(value="鎺掍骇宸ュ崟-娣诲姞", notes="鎺掍骇宸ュ崟-娣诲姞")
-   //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:add")
-   @PostMapping(value = "/add")
-   public Result<String> add(@RequestBody MesProductionWorkOrder mesProductionWorkOrder) {
-       mesProductionWorkOrderService.save(mesProductionWorkOrder);
-       return Result.OK("娣诲姞鎴愬姛锛�");
-   }
+    /**
+     * 娣诲姞
+     *
+     * @param mesProductionWorkOrder
+     * @return
+     */
+    @AutoLog(value = "鎺掍骇宸ュ崟-娣诲姞")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-娣诲姞", notes = "鎺掍骇宸ュ崟-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody MesProductionWorkOrder mesProductionWorkOrder) {
+        mesProductionWorkOrderService.save(mesProductionWorkOrder);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
 
-   /**
-    *  缂栬緫
-    *
-    * @param mesProductionWorkOrder
-    * @return
-    */
-   @AutoLog(value = "鎺掍骇宸ュ崟-缂栬緫")
-   @ApiOperation(value="鎺掍骇宸ュ崟-缂栬緫", notes="鎺掍骇宸ュ崟-缂栬緫")
-   //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:edit")
-   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-   public Result<String> edit(@RequestBody MesProductionWorkOrder mesProductionWorkOrder) {
-       mesProductionWorkOrderService.updateById(mesProductionWorkOrder);
-       return Result.OK("缂栬緫鎴愬姛!");
-   }
+    @AutoLog(value = "鎺掍骇宸ュ崟-淇濆瓨鎺掍骇璁″垝")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-淇濆瓨鎺掍骇璁″垝", notes = "鎺掍骇宸ュ崟-淇濆瓨鎺掍骇璁″垝")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:saveSchedulePlan")
+    @PostMapping("/addSchedulePlan")
+    public Result<String> addSchedulePlan(@RequestBody List<MesProductionWorkOrder> mesProductionWorkOrderList) {
+        if (!validatePlan(mesProductionWorkOrderList)) {
+            return Result.error("鎺掍骇璁″垝涓嶅悎鐞嗭紝淇濆瓨澶辫触锛�");
+        }
+        mesProductionWorkOrderList.forEach(item -> item.setWorkOrderStatus(ProductionWorkOrderStatus.NEW.name()));
+        mesProductionWorkOrderService.saveBatch(mesProductionWorkOrderList);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
 
-   /**
-    *   閫氳繃id鍒犻櫎
-    *
-    * @param id
-    * @return
-    */
-   @AutoLog(value = "鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎")
-   @ApiOperation(value="鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎", notes="鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:delete")
-   @DeleteMapping(value = "/delete")
-   public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-       mesProductionWorkOrderService.removeById(id);
-       return Result.OK("鍒犻櫎鎴愬姛!");
-   }
+    private boolean validatePlan(List<MesProductionWorkOrder> mesProductionWorkOrderList) {
+        //鍚屼竴鐗╂枡銆佸悓涓�鏃ユ湡涓嬨�佸彧鑳藉瓨鍦ㄤ竴涓彮娆�
+        Map<String, List<MesProductionWorkOrder>> orderMapByMaterial = mesProductionWorkOrderList.stream()
+                .collect(Collectors.groupingBy(MesProductionWorkOrder::getMaterialNumber));
+        for (String materialNumber : orderMapByMaterial.keySet()) {
+            List<MesProductionWorkOrder> workOrderList = orderMapByMaterial.get(materialNumber);
+            Map<Date, List<MesProductionWorkOrder>> orderMapByDate = workOrderList.stream()
+                    .collect(Collectors.groupingBy(MesProductionWorkOrder::getWorkOrderDate));
+            for (Date date : orderMapByDate.keySet()) {
+                List<MesProductionWorkOrder> orderList = orderMapByDate.get(date);
+                Map<String, List<MesProductionWorkOrder>> orderMapByShift = orderList.stream()
+                        .collect(Collectors.groupingBy(MesProductionWorkOrder::getShiftId));
+                for (String shiftId : orderMapByShift.keySet()) {
+                    List<MesProductionWorkOrder> list = orderMapByShift.get(shiftId);
+                    if (list.size() > 1) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
 
-   /**
-    *  鎵归噺鍒犻櫎
-    *
-    * @param ids
-    * @return
-    */
-   @AutoLog(value = "鎺掍骇宸ュ崟-鎵归噺鍒犻櫎")
-   @ApiOperation(value="鎺掍骇宸ュ崟-鎵归噺鍒犻櫎", notes="鎺掍骇宸ュ崟-鎵归噺鍒犻櫎")
-   //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:deleteBatch")
-   @DeleteMapping(value = "/deleteBatch")
-   public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-       this.mesProductionWorkOrderService.removeByIds(Arrays.asList(ids.split(",")));
-       return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-   }
+    @AutoLog(value = "鎺掍骇宸ュ崟-鐢熸垚鎺掍骇璁″垝")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-鐢熸垚鎺掍骇璁″垝", notes = "鎺掍骇宸ュ崟-鐢熸垚鎺掍骇璁″垝")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:schedule")
+    @GetMapping(value = "/schedule")
+    public Result<?> schedule(MesProductionWorkScheduleRequest request) {
+        if (StringUtils.isBlank(request.getFactoryId())
+                || Objects.isNull(request.getStartDate())
+                || Objects.isNull(request.getEndDate())) {
+            return Result.error("璇蜂紶鍏ュ繀瑕佸弬鏁帮紒");
+        }
+        return Result.ok(mesProductionWorkOrderService.schedule(request));
+    }
 
-   /**
-    * 閫氳繃id鏌ヨ
-    *
-    * @param id
-    * @return
-    */
-   //@AutoLog(value = "鎺掍骇宸ュ崟-閫氳繃id鏌ヨ")
-   @ApiOperation(value="鎺掍骇宸ュ崟-閫氳繃id鏌ヨ", notes="鎺掍骇宸ュ崟-閫氳繃id鏌ヨ")
-   @GetMapping(value = "/queryById")
-   public Result<MesProductionWorkOrder> queryById(@RequestParam(name="id",required=true) String id) {
-       MesProductionWorkOrder mesProductionWorkOrder = mesProductionWorkOrderService.getById(id);
-       if(mesProductionWorkOrder==null) {
-           return Result.error("鏈壘鍒板搴旀暟鎹�");
-       }
-       return Result.OK(mesProductionWorkOrder);
-   }
+    @AutoLog(value = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝", notes = "鎺掍骇宸ュ崟-鍙戝竷鎺掍骇璁″垝")
+    //@RequiresPermissions("mes:production:work:order:publish")
+    @RequestMapping(value = "/publish", method = {RequestMethod.POST, RequestMethod.PUT})
+    public Result<String> publish(@RequestParam("ids") String ids) {
+        List<String> idList = Arrays.asList(ids.split(","));
+        List<MesProductionWorkOrder> list = mesProductionWorkOrderService.list(new LambdaQueryWrapper<MesProductionWorkOrder>()
+                .in(MesProductionWorkOrder::getId, idList)
+                .eq(MesProductionWorkOrder::getDelFlag, CommonConstant.DEL_FLAG_0)).stream()
+                .filter(i -> !ProductionWorkOrderStatus.NEW.name().equals(i.getWorkOrderStatus()))
+                .collect(Collectors.toList());
+        if (!list.isEmpty()) {
+            return Result.error("宸插彂甯冪殑鎺掍骇璁″垝涓嶈兘閲嶅鍙戝竷锛�");
+        }
+        List<MesProductionWorkOrder> publishList = CollectionUtil.newArrayList();
+        idList.forEach(id -> {
+            MesProductionWorkOrder publish = new MesProductionWorkOrder()
+                    .setId(id)
+                    .setPublishTime(new Date())
+                    .setPublisher(Objects.requireNonNull(getCurrentUser()).getUsername())
+                    .setWorkOrderStatus(ProductionWorkOrderStatus.PUBLISHED.name());
+            publishList.add(publish);
+        });
+        mesProductionWorkOrderService.updateBatchById(publishList);
+        return Result.OK("鍙戝竷鎴愬姛");
+    }
 
-   /**
-   * 瀵煎嚭excel
-   *
-   * @param request
-   * @param mesProductionWorkOrder
-   */
-   //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:exportXls")
-   @RequestMapping(value = "/exportXls")
-   public ModelAndView exportXls(HttpServletRequest request, MesProductionWorkOrder mesProductionWorkOrder) {
-       return super.exportXls(request, mesProductionWorkOrder, MesProductionWorkOrder.class, "鎺掍骇宸ュ崟");
-   }
+    @AutoLog(value = "鎺掍骇宸ュ崟-閲嶅彂甯冩帓浜ц鍒�")
+    @ApiOperation(value="鎺掍骇宸ュ崟-閲嶅彂甯冩帓浜ц鍒�", notes="閲嶅彂甯冩帓浜ц鍒�")
+    //@RequiresPermissions("mes:production:work:order:republish")
+    @PostMapping(value = "/republish")
+    public Result<String> republish(@RequestBody MesProductionWorkOrderRepublishRequest request) {
+        MesProductionWorkOrder workOrder = mesProductionWorkOrderService.getById(request.getId());
+        //todo 鍒ゆ柇鐝鏄惁缁撴潫鐨勯�昏緫
+        if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(workOrder.getWorkOrderStatus())) {
+            return Result.error("褰撳墠宸ュ崟鐘舵�佷笉鏀寔閲嶅彂甯冿紒");
+        }
+        MesProductionWorkOrder republish = new MesProductionWorkOrder()
+                .setId(request.getId())
+                .setPlanQuantity(request.getPlanQuantity())
+                .setRepublisher(Objects.requireNonNull(getCurrentUser()).getUsername())
+                .setRepublishTime(new Date())
+                .setRepublishReason(request.getRepublishReason())
+                .setWorkOrderStatus(ProductionWorkOrderStatus.REPUBLISHED.name());
+        mesProductionWorkOrderService.updateById(republish);
+        return Result.ok("閲嶅彂甯冩垚鍔燂紒");
+    }
 
-   /**
+    /**
+     * 缂栬緫
+     *
+     * @param mesProductionWorkOrder
+     * @return
+     */
+    @AutoLog(value = "鎺掍骇宸ュ崟-缂栬緫")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-缂栬緫", notes = "鎺掍骇宸ュ崟-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody MesProductionWorkOrder mesProductionWorkOrder) {
+        mesProductionWorkOrderService.updateById(mesProductionWorkOrder);
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎", notes = "鎺掍骇宸ュ崟-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        mesProductionWorkOrderService.removeById(id);
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "鎺掍骇宸ュ崟-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "鎺掍骇宸ュ崟-鎵归噺鍒犻櫎", notes = "鎺掍骇宸ュ崟-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.mesProductionWorkOrderService.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<MesProductionWorkOrder> queryById(@RequestParam(name = "id", required = true) String id) {
+        MesProductionWorkOrder mesProductionWorkOrder = mesProductionWorkOrderService.getById(id);
+        if (mesProductionWorkOrder == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(mesProductionWorkOrder);
+    }
+
+    /**
+     * 瀵煎嚭excel
+     *
+     * @param request
+     * @param mesProductionWorkOrder
+     */
+    //@RequiresPermissions("org.jeecg.modules:mes_production_work_order:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, MesProductionWorkOrder mesProductionWorkOrder) {
+        return super.exportXls(request, mesProductionWorkOrder, MesProductionWorkOrder.class, "鎺掍骇宸ュ崟");
+    }
+
+    /**
      * 閫氳繃excel瀵煎叆鏁版嵁
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-   //@RequiresPermissions("mes_production_work_order:importExcel")
-   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-       return super.importExcel(request, response, MesProductionWorkOrder.class);
-   }
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    //@RequiresPermissions("mes_production_work_order:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, MesProductionWorkOrder.class);
+    }
 
+    private LoginUser getCurrentUser() {
+        try {
+            return (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        } catch (Exception e) {
+            return null;
+        }
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkOrderRepublishRequest.java b/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkOrderRepublishRequest.java
new file mode 100644
index 0000000..2c02022
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkOrderRepublishRequest.java
@@ -0,0 +1,21 @@
+package org.jeecg.modules.mes.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class MesProductionWorkOrderRepublishRequest {
+
+    /**涓婚敭*/
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+
+    /**璁″垝鐢熶骇鏁伴噺*/
+    @ApiModelProperty(value = "璁″垝鐢熶骇鏁伴噺")
+    private Double planQuantity;
+
+    /**閲嶅彂甯冨師鍥�*/
+    @ApiModelProperty(value = "閲嶅彂甯冨師鍥�")
+    private String republishReason;
+}
diff --git a/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkScheduleRequest.java b/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkScheduleRequest.java
new file mode 100644
index 0000000..17cd87c
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/dto/MesProductionWorkScheduleRequest.java
@@ -0,0 +1,31 @@
+package org.jeecg.modules.mes.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class MesProductionWorkScheduleRequest {
+
+    /**浜х嚎ID(鍐椾綑)*/
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
+    @ApiModelProperty(value = "浜х嚎ID(鍐椾綑)")
+    private String factoryId;
+
+    /**鎺掍骇璧峰鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鎺掍骇璧峰鏃ユ湡")
+    private Date startDate;
+
+    /**鎺掍骇鎴嚦鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "鎺掍骇鎴嚦鏃ユ湡")
+    private Date endDate;
+}
diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesProductionWorkOrder.java b/src/main/java/org/jeecg/modules/mes/entity/MesProductionWorkOrder.java
index 488323c..efccd0d 100644
--- a/src/main/java/org/jeecg/modules/mes/entity/MesProductionWorkOrder.java
+++ b/src/main/java/org/jeecg/modules/mes/entity/MesProductionWorkOrder.java
@@ -1,9 +1,6 @@
 package org.jeecg.modules.mes.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,6 +8,7 @@
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -55,7 +53,7 @@
 	@Excel(name = "鍒犻櫎鏍囪", width = 15)
     @ApiModelProperty(value = "鍒犻櫎鏍囪")
     @TableLogic
-    private Integer delFlag;
+    private Integer delFlag = CommonConstant.DEL_FLAG_0;
 	/**宸ュ崟鍙�(浠诲姟鍙�)*/
 	@Excel(name = "宸ュ崟鍙�(浠诲姟鍙�)", width = 15)
     @ApiModelProperty(value = "宸ュ崟鍙�(浠诲姟鍙�)")
@@ -88,14 +86,14 @@
     @ApiModelProperty(value = "鐝ID(鍐椾綑)")
     private String shiftId;
 	/**鎺掍骇鏃ユ湡*/
-	@Excel(name = "鎺掍骇鏃ユ湡", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@Excel(name = "鎺掍骇鏃ユ湡", width = 20, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "鎺掍骇鏃ユ湡")
     private Date workOrderDate;
 	/**宸ュ崟鐘舵��*/
-	@Excel(name = "宸ュ崟鐘舵��", width = 15, dicCode = "work_order_status")
-	@Dict(dicCode = "work_order_status")
+	@Excel(name = "宸ュ崟鐘舵��", width = 15, dicCode = "mes_work_order_status")
+	@Dict(dicCode = "mes_work_order_status")
     @ApiModelProperty(value = "宸ュ崟鐘舵��")
     private String workOrderStatus;
 	/**瀹為檯鎶ュ伐鏁伴噺*/
@@ -105,6 +103,7 @@
 	/**鍙戝竷浜�*/
 	@Excel(name = "鍙戝竷浜�", width = 15)
     @ApiModelProperty(value = "鍙戝竷浜�")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
     private String publisher;
 	/**鍙戝竷鏃堕棿*/
 	@Excel(name = "鍙戝竷鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@@ -115,6 +114,7 @@
 	/**閲嶅彂甯冧汉*/
 	@Excel(name = "閲嶅彂甯冧汉", width = 15)
     @ApiModelProperty(value = "閲嶅彂甯冧汉")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
     private String republisher;
 	/**閲嶅彂甯冩椂闂�*/
 	@Excel(name = "閲嶅彂甯冩椂闂�", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@@ -122,4 +122,24 @@
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "閲嶅彂甯冩椂闂�")
     private Date republishTime;
+    /**閲嶅彂甯冨師鍥�*/
+    @Excel(name = "閲嶅彂甯冨師鍥�", width = 30)
+    @ApiModelProperty(value = "閲嶅彂甯冨師鍥�")
+    private String republishReason;
+
+    /**浜х嚎缂栫爜*/
+    @TableField(exist = false)
+    private String factoryCode;
+    /**浜х嚎鍚嶇О*/
+    @TableField(exist = false)
+    private String factoryName;
+    /**鐝粍鍚嶇О*/
+    @TableField(exist = false)
+    private String groupName;
+    /**鐝缂栫爜*/
+    @TableField(exist = false)
+    private String shiftCode;
+    /**鐝鍚嶇О*/
+    @TableField(exist = false)
+    private String shiftName;
 }
diff --git a/src/main/java/org/jeecg/modules/mes/enums/ProductionWorkOrderStatus.java b/src/main/java/org/jeecg/modules/mes/enums/ProductionWorkOrderStatus.java
new file mode 100644
index 0000000..e2c6de7
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/mes/enums/ProductionWorkOrderStatus.java
@@ -0,0 +1,17 @@
+package org.jeecg.modules.mes.enums;
+
+
+public enum ProductionWorkOrderStatus {
+    /**
+     * 鏂板缓
+     */
+    NEW,
+    /**
+     * 宸插彂甯�
+     */
+    PUBLISHED,
+    /**
+     * 閲嶅彂甯�
+     */
+    REPUBLISHED
+}
diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java b/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
index c3fdffc..3e00fd7 100644
--- a/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
+++ b/src/main/java/org/jeecg/modules/mes/service/IMesProductionWorkOrderService.java
@@ -1,7 +1,10 @@
 package org.jeecg.modules.mes.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest;
 import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
+
+import java.util.List;
 
 /**
  * @Description: 鎺掍骇宸ュ崟
@@ -11,4 +14,5 @@
  */
 public interface IMesProductionWorkOrderService extends IService<MesProductionWorkOrder> {
 
+    List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request);
 }
diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
index 0bfbfb8..51adc5b 100644
--- a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
@@ -1,10 +1,29 @@
 package org.jeecg.modules.mes.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.entity.Shift;
+import org.jeecg.modules.base.entity.ShiftGroup;
+import org.jeecg.modules.base.service.IFactoryService;
+import org.jeecg.modules.base.service.IShiftGroupService;
+import org.jeecg.modules.base.service.IShiftService;
+import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest;
 import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
 import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
 import org.jeecg.modules.mes.mapper.MesProductionWorkOrderMapper;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @Description: 鎺掍骇宸ュ崟
@@ -14,5 +33,70 @@
  */
 @Service
 public class MesProductionWorkOrderServiceImpl extends ServiceImpl<MesProductionWorkOrderMapper, MesProductionWorkOrder> implements IMesProductionWorkOrderService {
+    @Autowired
+    private IShiftService shiftService;
+    @Autowired
+    private IShiftGroupService shiftGroupService;
+    @Autowired
+    private IFactoryService factoryService;
 
+    @Override
+    public List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request) {
+        //鏌ヨ璧锋鏃ユ湡鑼冨洿鍐呯殑鎺掍骇璁″垝锛屽厛鎺掗櫎
+        //鏌ヨ璇ヤ骇绾夸笅鎵�鏈夌殑鐝
+        Map<String, ShiftGroup> shiftGroupMap = shiftGroupService.list(new LambdaQueryWrapper<ShiftGroup>()
+                        .eq(ShiftGroup::getFactoryId, request.getFactoryId())
+                        .eq(ShiftGroup::getDelFlag, CommonConstant.DEL_FLAG_0))
+                .stream().collect(Collectors.toMap(ShiftGroup::getShiftId, v1 -> v1, (v1, v2) -> v1));
+        Factory factory = factoryService.getById(request.getFactoryId());
+        Map<String, Shift> shiftNameMap = new HashMap<>();
+        List<Shift> shifts = shiftService.list(new LambdaQueryWrapper<Shift>()
+                .in(Shift::getId, shiftGroupMap.keySet()));
+        shifts.forEach(shift -> shiftNameMap.put(shift.getId(), shift));
+
+        LocalDate startDate = request.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDate endDate = request.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        // 浣跨敤鏃ユ湡鑼冨洿杩涜閬嶅巻澶勭悊
+        List<LocalDate> dateRange = Stream.iterate(startDate, date -> date.plusDays(1))
+                .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1)
+                .collect(Collectors.toList());
+        List<MesProductionWorkOrder> newProductionWorkOrderList = CollectionUtil.newArrayList();
+
+        for (LocalDate date : dateRange) {
+            for (String shiftId : shiftGroupMap.keySet()) {
+                Date workOrderDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
+                //鏌ヨ璇ヤ骇绾裤�佺彮娆″湪璇ユ棩鏈熶笅鏄惁鏈夋帓浜ц鍒�
+                Optional<MesProductionWorkOrder> optional = list(new LambdaQueryWrapper<MesProductionWorkOrder>()
+                        .eq(MesProductionWorkOrder::getWorkOrderDate, workOrderDate)
+                        .eq(MesProductionWorkOrder::getFactoryId, request.getFactoryId())
+                        .eq(MesProductionWorkOrder::getShiftId, shiftId))
+                        .stream().findAny();
+                if (!optional.isPresent()) {
+                    ShiftGroup shiftGroup = shiftGroupMap.get(shiftId);
+                    //娌℃湁锛岀敓鎴愭柊鎺掍骇璁″垝
+                    MesProductionWorkOrder mesProductionWorkOrder = new MesProductionWorkOrder()
+                            .setFactoryId(factory.getId())
+                            .setFactoryCode(factory.getFactoryCode())
+                            .setFactoryName(factory.getFactoryName())
+                            .setShiftId(shiftId)
+                            .setShiftCode(shiftNameMap.get(shiftId).getShiftCode())
+                            .setShiftName(shiftNameMap.get(shiftId).getShiftName())
+                            .setGroupId(shiftGroup.getId())
+                            .setGroupName(shiftGroup.getGroupName())
+                            .setWorkOrderDate(workOrderDate);
+
+                    newProductionWorkOrderList.add(mesProductionWorkOrder);
+                }
+            }
+        }
+        //濡傛灉涓虹┖锛岄粯璁ょ粰涓�鏉★紝鐢ㄤ簬鎵嬪姩鏂板鏃惰〃鏍肩殑鍒濆鍖�
+        if (newProductionWorkOrderList.isEmpty()) {
+            MesProductionWorkOrder mesProductionWorkOrder = new MesProductionWorkOrder()
+                    .setFactoryId(factory.getId())
+                    .setFactoryCode(factory.getFactoryCode())
+                    .setFactoryName(factory.getFactoryName());
+            newProductionWorkOrderList.add(mesProductionWorkOrder);
+        }
+        return newProductionWorkOrderList;
+    }
 }

--
Gitblit v1.9.3