Kaynağa Gözat

feature 代码提交

xiahan 1 yıl önce
ebeveyn
işleme
16439d2c06

+ 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);
 }

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

@@ -3,6 +3,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;
@@ -27,7 +28,17 @@ 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=" 计划时间:%tF %tD-%tF %tD \n" +
+            "实际时间:%tF %tD-%tF %tD \n" +
+            "设备:%s/%s \n" ;
+    public static final String GANTT_DESC="订单产品:%s \n" +
+            "交货期:%tF\n" +
+            "工序:%s\n" +
+            "计划加工卷数:%d卷\n" +
+            "完成情况:已开工 %d/已报工 %d/已检验 %d/未完工 %d\n" +
+            "作业状态:%s" ;
     /**
      * 根据条件获取gantt
      *
@@ -41,19 +52,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 +75,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(), nullDateReplace(info.get(0).getDeliverydate()));
+                }).collect(Collectors.joining("/n"));
+                String itemPrefix=String.format(GANTT_DESC_PREFIX,processs.get(0).getPlanstartdate(),processs.get(0).getPlanstartdate(),
+                        processs.get(0).getPlanenddate(),processs.get(0).getPlanenddate(),
+                        nullDateReplace(processs.get(0).getActualstartdate()),
+                        nullDateReplace(processs.get(0).getActualstartdate()),
+                        nullDateReplace(processs.get(0).getActualfinishdate()),
+                        nullDateReplace(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(),nullDateReplace(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 Object nullDateReplace(Date date){
+        if(date==null){
+            return null;
+        }
+        return 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;
+
     /**
      * 条目名称
      */

+ 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,