Bladeren bron

Merge remote-tracking branch 'origin/master'

fangpy 1 jaar geleden
bovenliggende
commit
e4e850a27c

+ 5 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.GanttVos;
 import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -32,10 +33,10 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
                                   @Param("previousprocessid") String previousprocessid,
                                   @Param("processOperationId") String processOperationId);
 
-    List<ApsProcessOperationProcessEquDo> getGanttDataList(@Param("startTime") Date startTime,
-                                                           @Param("endTime") Date endTime,
-                                                           @Param("factoryId") String factoryId,
-                                                           @Param("workshopIds") List<String> workshopId);
+    List<GanttVos> getGanttDataList(@Param("startTime") Date startTime,
+                                    @Param("endTime") Date endTime,
+                                    @Param("factoryId") String factoryId,
+                                    @Param("workshopIds") List<String> workshopId);
 
     void updateAboutStateByProcessId(@Param("updateIds") List<ProcessIdRelationVo> updateIds);
 }

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -187,7 +187,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             apsProcessOperationDo.setProlength(outMaterDo.getProlength());
                             apsProcessOperationDo.setSinglerollweight(outMaterDo.getSinglerollweight());
                             apsProcessOperationDo.setPlaninrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
-//                            apsProcessOperationDo.setPlanprocessrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
+                            apsProcessOperationDo.setPlanprocessrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
                             apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
                             apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo1.getId());
                             if (outMaterDo.getThickrule().equals("自定义") || outMaterDo.getWidthrule().equals("自定义") || outMaterDo.getLengthrule().equals("自定义")) {

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

@@ -2,7 +2,7 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
 import com.rongwei.bscommon.sys.service.GanttService;
-import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.GanttVos;
 import com.rongwei.bsentity.vo.ScheduleGanttProcessVo;
 import com.rongwei.bsentity.vo.ScheduleGanttVo;
 import com.rongwei.rwcommon.base.R;
@@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -27,7 +28,19 @@ public class GanttServiceImpl implements GanttService {
 
     @Autowired
     private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
+    public static final String GANTT_ITEM_NAME ="%s %d卷 %tF";
+    public static final String GANTT_ITEM_NAME_PREFIX ="%s %s";
+    public static final String GANTT_DESC_PREFIX=" 计划时间:%s-%s \n" +
+            "实际时间:%s-%s \n" +
+            "设备:%s/%s \n" ;
+    public static final String GANTT_DESC="订单产品:%s \n" +
+            "交货期:%tF\n" +
+            "工序:%s\n" +
+            "计划加工卷数:%d卷\n" +
+            "完成情况:已开工 %d/已报工 %d/已检验 %d/未完工 %d\n" +
+            "作业状态:%s" ;
 
+    public static final  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     /**
      * 根据条件获取gantt
      *
@@ -41,19 +54,21 @@ public class GanttServiceImpl implements GanttService {
     public R getListByCondition(Date startTime, Date endTime, String factoryId, String workshopId) {
         List<String> workShopIdList = StringUtils.isNotBlank(workshopId) ? Arrays.asList(workshopId.split(",")) : new ArrayList<>();
         // 获取 工序作业信息
-        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDao.getGanttDataList(startTime, endTime, factoryId, workShopIdList);
+        List<GanttVos> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDao.getGanttDataList(startTime, endTime, factoryId, workShopIdList);
         List<ScheduleGanttVo> resultVo = new ArrayList<>();
         if (apsProcessOperationProcessEquDos.isEmpty()) {
             return R.ok(resultVo);
         }
         // 对数据按照加工车间分组
-        LinkedHashMap<String, List<ApsProcessOperationProcessEquDo>> dataMap = apsProcessOperationProcessEquDos.stream()
-                .collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessworkshopid,
+        LinkedHashMap<String, List<GanttVos>> dataMap = apsProcessOperationProcessEquDos.stream()
+                .collect(Collectors.groupingBy(GanttVos::getProcessworkshopid,
                         LinkedHashMap::new, Collectors.toList()));
         dataMap.forEach((k, v) -> {
             ScheduleGanttVo vo = new ScheduleGanttVo();
+
             List<ScheduleGanttProcessVo> processVos = new ArrayList<>();
-            LinkedHashMap<String, List<ApsProcessOperationProcessEquDo>> processMap = v.stream().collect(Collectors.groupingBy(info ->
+            // 对数据按照时间进行+设备进行分组
+            LinkedHashMap<String, List<GanttVos>> processMap = v.stream().collect(Collectors.groupingBy(info ->
                             info.getPlanstartdate().toString() + info.getPlanenddate().toString() + info.getProcessdeviceid(),
                     LinkedHashMap::new, Collectors.toList()));
             processMap.forEach((date, processs) -> {
@@ -62,15 +77,42 @@ public class GanttServiceImpl implements GanttService {
                 processVo.setProcessdeviceid(processs.get(0).getProcessdeviceid());
                 processVo.setPlanstartdate(processs.get(0).getPlanstartdate());
                 processVo.setPlanenddate(processs.get(0).getPlanenddate());
-                processVo.setProcessids(processs.stream().map(ApsProcessOperationProcessEquDo::getProcessid).distinct().collect(Collectors.joining(",")));
-                processVo.setProcessdetailids(processs.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.joining(",")));
-                processVo.setItemname("");
-                processVo.setItemdesc("");
+                processVo.setProcessids(processs.stream().map(GanttVos::getProcessid).distinct().collect(Collectors.joining(",")));
+                processVo.setProcessdetailids(processs.stream().map(GanttVos::getId).collect(Collectors.joining(",")));
+                // 按照工序作业明细ID 进行分组
+                LinkedHashMap<String, List<GanttVos>> collect = processs.stream().collect(Collectors.groupingBy(GanttVos::getId, LinkedHashMap::new, Collectors.toList()));
+                String itemName = collect.values().stream().map(info -> {
+                    String prefix = info.stream().map(data -> String.format(GANTT_ITEM_NAME_PREFIX, data.getCustomerabbreviation(), data.getProductname()))
+                            .collect(Collectors.joining(","));
+                    return String.format(GANTT_ITEM_NAME, prefix, info.get(0).getPlanprocessrall(), info.get(0).getDeliverydate());
+                }).collect(Collectors.joining("/n"));
+                String itemPrefix=String.format(GANTT_DESC_PREFIX,
+                        dateFormat(processs.get(0).getPlanstartdate()),
+                        dateFormat(processs.get(0).getPlanenddate()),
+                        dateFormat(processs.get(0).getActualstartdate()),
+                        dateFormat(processs.get(0).getActualfinishdate()),
+
+                        processs.get(0).getProcessworkshop(),processs.get(0).getProcessdevice());
+               String itemDesc= processs.stream().map(info->{
+                    return String.format(GANTT_DESC, info.getProductname(),info.getDeliverydate(),
+                            info.getProcessname(),info.getPlanprocessrall(),info.getStartingroll(),info.getReportroll(),
+                            info.getCheckoutroll(),info.getUnfinishroll(),info.getWorkstatus() );
+                }).collect(Collectors.joining("/n"));
+                processVo.setItemname(itemName);
+                processVo.setItemdesc(itemPrefix+itemDesc);
                 processVos.add(processVo);
             });
             vo.setProcessList(processVos);
             vo.setProcessworkshop(v.get(0).getProcessworkshop());
+            resultVo.add(vo);
         });
-        return R.ok();
+        return R.ok(resultVo);
+    }
+
+    public String dateFormat(Date date){
+        if(date==null){
+            return "";
+        }
+        return  dateFormat.format(date);
     }
 }

+ 5 - 3
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -137,7 +137,7 @@
     <!--    </resultMap>-->
 
 
-    <select id="getGanttDataList" resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
+    <select id="getGanttDataList" resultType="com.rongwei.bsentity.vo.GanttVos">
         SELECT
         a4.PRODUCTNAME,
         a1.PLANPROCESSRALL,
@@ -150,7 +150,7 @@
         a1.PROCESSWORKSHOP,
         a1.PROCESSDEVICEID,
         a1.PROCESSDEVICE,
-        DATE(a6.DELIVERYDATE) AS DELIVERYDATE,
+        Date(a6.DELIVERYDATE) AS DELIVERYDATE,
         a2.PROCESSNAME,
         a1.STARTINGROLL,
         a1.REPORTROLL,
@@ -160,7 +160,9 @@
         (select CUSTOMERABBREVIATION from aps_customer_management where ID =
         IF(IFNULL(a5.MERGEORDERNUMBER,'')='',a6.CUSTOMID,(select CUSTOMID from aps_production_merge_order where
         ORDERNO=a5.MERGEORDERNUMBER ) )
-        and DELETED ='0') AS CUSTOMERABBREVIATION
+        and DELETED ='0') AS CUSTOMERABBREVIATION,
+        a1.ID,
+        a2.ID as processid
         FROM
         aps_process_operation_process_equ a1
         LEFT JOIN aps_process_operation a2 ON a1.PROCESSID = a2.ID

+ 99 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java

@@ -0,0 +1,99 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * GanttVos class
+ *
+ * @author XH
+ * @date 2024/03/27
+ */
+@Data
+public class GanttVos {
+    /**
+     * 订单产品
+     */
+    private String productname;
+    /**
+     * 计划加工卷数
+      */
+    private Integer planprocessrall =0;
+    /**
+     * 生产状态
+     */
+    private String processstatus;
+    /**
+     * 计划开始时间
+     */
+    private Date planstartdate;
+    /**
+     * 计划结束时间
+     */
+    private Date planenddate;
+    /**
+     * 时间开始时间
+     */
+    private Date actualstartdate;
+    /**
+     * 时间结束时间
+     */
+    private Date actualfinishdate;
+    /**
+     * 车间ID
+     */
+    private String processworkshopid;
+    /**
+     * 车间
+     */
+    private String processworkshop;
+    /**
+     * 设备ID
+     */
+    private String processdeviceid;
+    /**
+     * 设备
+     */
+    private String processdevice;
+    /**
+     * 期望交货日期
+     */
+    private Date deliverydate;
+    /**
+     * 工序名
+     */
+    private String processname;
+    /**
+     * 已开工
+     */
+    private Integer startingroll =0;
+    /**
+     * 已报工
+     */
+    private Integer reportroll=0;
+    /**
+     * 已检验
+     */
+    private Integer checkoutroll=0;
+    /**
+     * 未完工
+     */
+    private Integer unfinishroll=0;
+    /**
+     * 作业状态
+     */
+    private String workstatus;
+    /**
+     * 客户简称
+     */
+    private String customerabbreviation;
+    /**
+     * 工序作业ID
+     */
+    private String processid;
+    /**
+     * 工序作业明细ID
+     */
+    private String id;
+}

+ 1 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttProcessVo.java

@@ -36,6 +36,7 @@ public class ScheduleGanttProcessVo {
      * 工序作业明细ID
      */
     private String processdetailids;
+
     /**
      * 条目名称
      */

+ 7 - 2
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationController.java

@@ -64,8 +64,13 @@ public class ApsProcessOperationController {
      */
     @PostMapping("/checkOperation")
     public R checkOperation(@RequestBody Map<String, Object> params) {
-        log.info("校验工序作业;参数为:{}", params);
-        return apsProcessOperationService.checkOperation(params);
+        try {
+            log.info("校验工序作业;参数为:{}", params);
+            return apsProcessOperationService.checkOperation(params);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("请检查工序作业详情");
+        }
     }
 }
 

+ 2 - 5
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/GanttController.java

@@ -8,10 +8,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -37,7 +34,7 @@ public class GanttController {
      * @param params
      * @return
      */
-    @PostMapping("/list")
+    @GetMapping("/list")
     public R updateRelevantInformation(@RequestParam(name = "startTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
                                        @RequestParam(name = "endTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
                                        @RequestParam(name = "factoryId") String factoryId,