Kaynağa Gözat

Merge branch 'mode-min-unit' into mode-min-unit-31

# Conflicts:
#	cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml
sucheng 2 ay önce
ebeveyn
işleme
391b2ca20f

+ 10 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -7,6 +7,8 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.exception.ExcelAnalysisException;
+import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -2736,8 +2738,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     @Override
     public R workShopImport(MultipartFile multipartFile, HttpServletResponse response) throws IOException {
         WorkShopImportListener listener = new WorkShopImportListener();
-        // 读取数据
-        EasyExcel.read(multipartFile.getInputStream(), WorkShopExportVo.class, listener).sheet().headRowNumber(1).doRead();
+        try {
+            // 读取数据
+            EasyExcel.read(multipartFile.getInputStream(), WorkShopExportVo.class, listener).sheet().headRowNumber(1).doRead();
+        } catch (ExcelDataConvertException e) {
+            String errorMessage = "第" + (e.getRowIndex() + 1) + "行,第" + (e.getColumnIndex()+1) + "列,数据错误,请检查:\n\r"+e.getCellData().getStringValue();
+            log.error("导入文件错误," + errorMessage);
+            return R.error(errorMessage);
+        }
         // 解析有误信息
         List<String> errorData = listener.getErrorMessages();
         if (!errorData.isEmpty()) {

+ 16 - 6
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml

@@ -358,13 +358,23 @@
                                      ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
                                      if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
                                         if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+          and apope.WORKSTATUS = '待开工'
+          AND   (apope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate} -- 在调度时间范围内开工
+                or (preapope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate} -- 前道在调度时间范围内开工
+                    AND date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 > 计划开工时间
+                    INTERVAL GREATEST(
+                    ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                    if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                    if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
                     ) > apope.PLANSTARTDATE
-                        or date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 小于 调度结束时间
-                                    INTERVAL GREATEST(
-                                            ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-                                            if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-                                               if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-                           ) &lt; #{chongpaiEndDate} -- 调度结束时间
+                    )
+                or (apope.PLANSTARTDATE > #{chongpaiEndDate} -- 计划调度结束时间之后开工
+                    AND date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 小于 调度结束时间,表示可以在调度时间范围内开工
+                    INTERVAL GREATEST(
+                    ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                    if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                    if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                    ) &lt; #{chongpaiEndDate} -- 调度结束时间
                     )
                    )
             )