From bbc84a06cf88cd70df389adc2432419d259cd6ff Mon Sep 17 00:00:00 2001
From: huangjiayang <5265313@qq.com>
Date: 星期三, 14 五月 2025 09:47:21 +0800
Subject: [PATCH] 【UPDATE】修改日历管理相关接口和数据结构

---
 aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml                            |    3 
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWorkCalendar.java                            |   35 ++++++++
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsWorkCalendarMapper.java                      |    8 ++
 aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWorkCalendarController.java    |   63 +++++++++++----
 aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsStandardProcessController.java |   12 +++
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java           |   55 +++++++------
 aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml                          |   30 ++++++-
 aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java                   |    7 +
 aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml                              |    3 
 9 files changed, 167 insertions(+), 49 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsStandardProcessController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsStandardProcessController.java
index 9571d12..396f46a 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsStandardProcessController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsStandardProcessController.java
@@ -129,4 +129,16 @@
             return AjaxResult.error("妯℃澘鍐呭涓虹┖");
         }
     }
+
+    /**
+     * 鏍规嵁杞﹂棿鏌ヨ鏍囧噯宸ュ簭鍒楄〃
+     */
+    @Operation(summary = "鏍规嵁杞﹂棿鏌ヨ鏍囧噯宸ュ簭鍒楄〃", description = "鍏ㄩ噺鏌ヨ")
+    @RequiresPermissions("aps:standardProcess:listByWorkShop")
+    @GetMapping("/listByWorkShop")
+    public TableDataInfo listByWorkShop(ApsStandardProcess apsStandardProcess)
+    {
+        List<ApsStandardProcess> list = apsStandardProcessService.selectApsStandardProcessList(apsStandardProcess);
+        return getDataTable(list);
+    }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWorkCalendarController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWorkCalendarController.java
index 07371ca..70da1b4 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWorkCalendarController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWorkCalendarController.java
@@ -71,35 +71,49 @@
     @PostMapping
     public AjaxResult add(@RequestBody ApsWorkCalendar apsWorkCalendar)
     {
-        ApsWorkCalendar tempCheck = new ApsWorkCalendar();
-        tempCheck.setEffectiveDate(apsWorkCalendar.getEffectiveDate());
-        tempCheck.setExpiringDate(apsWorkCalendar.getExpiringDate());
-        tempCheck.setApplicableFactory(apsWorkCalendar.getApplicableFactory());
-        List<ApsWorkCalendar> list = apsWorkCalendarService.selectApsWorkCalendarList(tempCheck);
-        if(!list.isEmpty()){
-            return AjaxResult.error("璇ユ椂闂存鏃ュ巻宸插瓨鍦�",  list);
-        }else{
-            return toAjax(apsWorkCalendarService.insertApsWorkCalendar(apsWorkCalendar));
+        try {
+            ApsWorkCalendar tempCheck = new ApsWorkCalendar();
+            tempCheck.setEffectiveDate(apsWorkCalendar.getEffectiveDate());
+            tempCheck.setExpiringDate(apsWorkCalendar.getExpiringDate());
+            tempCheck.setApplicableFactory(apsWorkCalendar.getApplicableFactory());
+            tempCheck.setType(apsWorkCalendar.getType());
+            List<ApsWorkCalendar> list = apsWorkCalendarService.selectApsWorkCalendarList(tempCheck);
+            if(!list.isEmpty()){
+                return AjaxResult.error("璇ユ椂闂存鏃ュ巻宸插瓨鍦�",  list);
+            }else{
+                apsWorkCalendarService.insertApsWorkCalendar(apsWorkCalendar);
+                return success();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error();
         }
     }
 
     /**
      * 淇敼鏃ュ巻绠$悊
      */
-    @RequiresPermissions("aps:calendar:edit")
+//    @RequiresPermissions("aps:calendar:edit")
     @Log(title = "鏃ュ巻绠$悊", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody ApsWorkCalendar apsWorkCalendar)
     {
-        ApsWorkCalendar tempCheck = new ApsWorkCalendar();
-        tempCheck.setEffectiveDate(apsWorkCalendar.getEffectiveDate());
-        tempCheck.setExpiringDate(apsWorkCalendar.getExpiringDate());
-        tempCheck.setApplicableFactory(apsWorkCalendar.getApplicableFactory());
-        List<ApsWorkCalendar> list = apsWorkCalendarService.selectApsWorkCalendarList(tempCheck);
-        if(!list.isEmpty()){
-            return AjaxResult.error("璇ユ椂闂存鏃ュ巻宸插瓨鍦�",  list);
-        }else{
-            return toAjax(apsWorkCalendarService.updateApsWorkCalendar(apsWorkCalendar));
+        try {
+//            ApsWorkCalendar tempCheck = new ApsWorkCalendar();
+//            tempCheck.setEffectiveDate(apsWorkCalendar.getEffectiveDate());
+//            tempCheck.setExpiringDate(apsWorkCalendar.getExpiringDate());
+//            tempCheck.setApplicableFactory(apsWorkCalendar.getApplicableFactory());
+//            tempCheck.setType(apsWorkCalendar.getType());
+//            List<ApsWorkCalendar> list = apsWorkCalendarService.selectApsWorkCalendarList(tempCheck);
+//            if(!list.isEmpty()){
+//                return AjaxResult.error("璇ユ椂闂存鏃ュ巻宸插瓨鍦�",  list);
+//            }else{
+            apsWorkCalendarService.updateApsWorkCalendar(apsWorkCalendar);
+            return success();
+//            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error();
         }
     }
 
@@ -115,6 +129,17 @@
     }
 
     /**
+     * 鍒犻櫎鏃ュ巻绠$悊
+     */
+    @RequiresPermissions("aps:calendar:delete")
+    @Log(title = "鍒犻櫎鏃ュ巻绠$悊", businessType = BusinessType.DELETE)
+    @PostMapping("/deleteApsWorkCalendar")
+    public AjaxResult deleteApsWorkCalendar(@RequestBody ApsWorkCalendar apsWorkCalendar)
+    {
+        return toAjax(apsWorkCalendarService.deleteApsWorkCalendar(apsWorkCalendar));
+    }
+
+    /**
      * 鏌ヨ鏃ュ巻绠$悊鍒楄〃
      */
     @RequiresPermissions("aps:calendar:list")
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWorkCalendar.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWorkCalendar.java
index 7064fa4..907b4ff 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWorkCalendar.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWorkCalendar.java
@@ -55,7 +55,40 @@
     @Excel(name = "閫傜敤宸ュ簭")
     private String applicableProcess;
 
-    public void setId(Long id) 
+    /** 鑺傚亣鏃� */
+    private Object holidays;
+
+    /** 閫傜敤宸ュ巶/杞﹂棿/宸ュ簭鏁扮粍 */
+    private Object applicable;
+
+    /** 閫傜敤宸ュ巶/杞﹂棿/宸ュ簭鏁扮粍 鍥炴樉 */
+    private String applicableTranslate;
+
+    public String getApplicableTranslate() {
+        return applicableTranslate;
+    }
+
+    public void setApplicableTranslate(String applicableTranslate) {
+        this.applicableTranslate = applicableTranslate;
+    }
+
+    public Object getHolidays() {
+        return holidays;
+    }
+
+    public void setHolidays(Object holidays) {
+        this.holidays = holidays;
+    }
+
+    public Object getApplicable() {
+        return applicable;
+    }
+
+    public void setApplicable(Object applicable) {
+        this.applicable = applicable;
+    }
+
+    public void setId(Long id)
     {
         this.id = id;
     }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsWorkCalendarMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsWorkCalendarMapper.java
index 1d1e91a..4123a3e 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsWorkCalendarMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsWorkCalendarMapper.java
@@ -59,4 +59,12 @@
      * @return 缁撴灉
      */
     public int deleteApsWorkCalendarByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎鏃ュ巻绠$悊
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteApsWorkCalendar(ApsWorkCalendar apsWorkCalendar);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java
index 95d639f..fe13d24 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java
@@ -75,4 +75,11 @@
      * @return JSONArray
      */
     JSONArray selectCalendarView(ApsWorkCalendar apsWorkCalendar);
+
+    /**
+     * 鍒犻櫎鏃ュ巻鏁版嵁
+     * @param apsWorkCalendar
+     * @return
+     */
+    public int deleteApsWorkCalendar(ApsWorkCalendar apsWorkCalendar);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java
index 1137c2b..51c0189 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java
@@ -158,33 +158,33 @@
             List<ApsWorkCalendar> list = apsWorkCalendarMapper.selectApsWorkCalendarList(apsWorkCalendar);
             for (ApsWorkCalendar apsWorkCalendarTemp : list) {
                 //宸ヤ綔鏃�
-                if("1".equals(apsWorkCalendarTemp.getType())){
-                    //鑾峰彇鏃ュ巻瑙勫垯
-                    org.postgresql.util.PGobject pgObject = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent();
-                    JSONArray weekdays = (JSON.parseObject(pgObject.getValue())).getJSONArray("weekdays");
-                    HashMap<String, String> weekdaysMap = new HashMap<>();
-                    for (int i = 0; i < weekdays.size(); i++) {
-                        weekdaysMap.put(weekdays.getJSONObject(i).getString("day"), weekdays.getJSONObject(i).getString("work"));
-                    }
-                    //鏍规嵁effectiveDate鍜宔xpiringDate绠楀嚭鏃ユ湡鑼冨洿鍐呯殑姣忎竴澶�
-                    List<LocalDate> datesTemp = getDatesBetween(apsWorkCalendarTemp.getEffectiveDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), apsWorkCalendarTemp.getExpiringDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
-                    for (LocalDate dateTemp: datesTemp) {
-                        if(baseCalendar.containsKey(dateTemp+"")){
-                            if ("y".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) {
-                                baseCalendar.put(dateTemp+"", "宸ヤ綔鏃�");
-                            } else if("n".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) {
-                                baseCalendar.put(dateTemp+"", "浼戞伅鏃�");
-                            }
+                org.postgresql.util.PGobject pgObjectWeekdays = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent();
+                JSONArray weekdays = (JSON.parseObject(pgObjectWeekdays.getValue())).getJSONArray("weekdays");
+                HashMap<String, String> weekdaysMap = new HashMap<>();
+                for (int i = 0; i < weekdays.size(); i++) {
+                    weekdaysMap.put(weekdays.getJSONObject(i).getString("day"), weekdays.getJSONObject(i).getString("work"));
+                }
+                List<LocalDate> datesTempWeekdays = getDatesBetween(apsWorkCalendarTemp.getEffectiveDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), apsWorkCalendarTemp.getExpiringDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
+                for (LocalDate dateTemp: datesTempWeekdays) {
+                    if(baseCalendar.containsKey(dateTemp+"")){
+                        if ("y".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) {
+                            baseCalendar.put(dateTemp+"", "宸ヤ綔鏃�");
+                        } else if("n".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) {
+                            baseCalendar.put(dateTemp+"", "浼戞伅鏃�");
                         }
                     }
-                }else if("2".equals(apsWorkCalendarTemp.getType())){
-                    //浼戞伅鏃�
-                    org.postgresql.util.PGobject pgObject = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent();
-                    JSONObject holidays = (JSON.parseObject(pgObject.getValue())).getJSONObject("holidays");
-                    List<LocalDate> datesTemp = getDatesBetween(holidays.getObject("startdate", LocalDate.class), holidays.getObject("enddate", LocalDate.class));
-                    for (LocalDate dateTemp: datesTemp) {
-                        if(baseCalendar.containsKey(dateTemp+"")){
-                            baseCalendar.put(dateTemp+"", "鑺傚亣鏃�");
+                }
+                //浼戞伅鏃�
+                org.postgresql.util.PGobject pgObjectHolidays = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getHolidays();
+                if(pgObjectHolidays!=null){
+                    JSONArray holidays = (JSON.parseObject(pgObjectHolidays.getValue())).getJSONArray("holidays");
+                    for (int i = 0; i < holidays.size(); i++){
+                        JSONObject h = holidays.getJSONObject(i);
+                        List<LocalDate> datesTempHolidays = getDatesBetween(h.getObject("startdate", LocalDate.class), h.getObject("enddate", LocalDate.class));
+                        for (LocalDate dateTemp: datesTempHolidays) {
+                            if(baseCalendar.containsKey(dateTemp+"")){
+                                baseCalendar.put(dateTemp+"", "鑺傚亣鏃�");
+                            }
                         }
                     }
                 }
@@ -202,6 +202,11 @@
         return res;
     }
 
+    @Override
+    public int deleteApsWorkCalendar(ApsWorkCalendar apsWorkCalendar){
+        return apsWorkCalendarMapper.deleteApsWorkCalendar(apsWorkCalendar);
+    }
+
     private List<LocalDate> getCalendarData(int year, int month) {
         // 鑾峰彇4鏈�1鍙风殑褰撳懆鐨勫懆鏃�
         LocalDate startDate = LocalDate.of(year, month, 1)
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml
index 642ac4c..b6effe1 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml
@@ -18,10 +18,13 @@
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="holidays"    column="holidays"    />
+        <result property="applicable"    column="applicable"    />
+        <result property="applicableTranslate"    column="applicable_translate"    />
     </resultMap>
 
     <sql id="selectApsWorkCalendarVo">
-        select id, description, type, effective_date, expiring_date, content, applicable_factory, applicable_workshop, applicable_process, create_by, create_time, update_by, update_time from aps_work_calendar
+        select id, description, type, effective_date, expiring_date, content, applicable_factory, applicable_workshop, applicable_process, create_by, create_time, update_by, update_time, holidays, applicable, applicable_translate from aps_work_calendar
     </sql>
 
     <select id="selectApsWorkCalendarList" parameterType="ApsWorkCalendar" resultMap="ApsWorkCalendarResult">
@@ -31,7 +34,13 @@
             <if test="type != null  and type != ''"> and type = #{type}</if>
             <if test="effectiveDate != null and expiringDate != null"> and ((effective_date &gt;= #{effectiveDate} and effective_date &lt;= #{expiringDate}) or (expiring_date &gt;= #{effectiveDate} and expiring_date &lt;= #{expiringDate}))</if>
 <!--            <if test="content != null  and content != ''"> and content = #{content}</if>-->
-            <if test="applicableFactory != null  and applicableFactory != ''"> and applicable_factory = #{applicableFactory}</if>
+            <if test="applicableFactory != null  and applicableFactory != ''">
+              and EXISTS (
+                SELECT 1
+                FROM jsonb_array_elements(applicable) AS obj
+                WHERE obj ->> 'factory' = #{applicableFactory}
+                )
+            </if>
             <if test="applicableWorkshop != null  and applicableWorkshop != ''"> and applicable_workshop = #{applicableWorkshop}</if>
             <if test="applicableProcess != null  and applicableProcess != ''"> and applicable_process = #{applicableProcess}</if>
         </where>
@@ -58,6 +67,9 @@
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
+            <if test="holidays != null">holidays,</if>
+            <if test="applicable != null">applicable,</if>
+            <if test="applicableTranslate != null">applicable_translate,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -73,6 +85,9 @@
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
+            <if test="holidays != null">#{holidays, typeHandler=com.aps.core.typeHandler.JsonTypeHandler, jdbcType=OTHER},</if>
+            <if test="applicable != null">#{applicable, typeHandler=com.aps.core.typeHandler.JsonTypeHandler, jdbcType=OTHER},</if>
+            <if test="applicableTranslate != null">#{applicableTranslate},</if>
          </trim>
     </insert>
 
@@ -91,6 +106,9 @@
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="holidays != null">holidays = #{holidays, typeHandler=com.aps.core.typeHandler.JsonTypeHandler, jdbcType=OTHER},</if>
+            <if test="applicable != null">applicable = #{applicable, typeHandler=com.aps.core.typeHandler.JsonTypeHandler, jdbcType=OTHER},</if>
+            <if test="applicableTranslate != null">applicable_translate = #{applicableTranslate},</if>
         </trim>
         where id = #{id}
     </update>
@@ -99,10 +117,14 @@
         delete from aps_work_calendar where id = #{id}
     </delete>
 
-    <delete id="deleteApsWorkCalendarByIds" parameterType="String">
-        delete from aps_work_calendar where id in 
+    <delete id="deleteApsWorkCalendarByIds" parameterType="ApsWorkCalendar">
+        delete from aps_work_calendar where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
+
+    <delete id="deleteApsWorkCalendar" parameterType="ApsWorkCalendar">
+        delete from aps_work_calendar where effective_date=#{effectiveDate} and expiring_date=#{expiringDate} and applicable_factory=#{applicableFactory} and applicable_workshop=#{applicableWorkshop} and applicable_process=#{applicableProcess}
+    </delete>
 </mapper>
\ No newline at end of file
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml
index 1e0e925..a3bf3fc 100644
--- a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomHeaderJobMapper.xml
@@ -152,6 +152,9 @@
             create_by,
             now()
         FROM aps_bom_header_job
+--         FROM aps_bom_header_job as a
+--         LEFT JOIN aps_material_storage_management as b ON a.item_code = b.item_number
+--         where b.material_type='鍒堕�犱欢'
     </insert>
 
     <!-- 鍒犻櫎 aps_bom_header 琛ㄤ腑鐨勬暟鎹� -->
diff --git a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml
index be153bf..63e181e 100644
--- a/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml
+++ b/aps-modules/aps-job/src/main/resources/mapper/job/ApsBomLineJobMapper.xml
@@ -200,6 +200,9 @@
             create_by,
             now()
         FROM aps_bom_line_job
+--         FROM aps_bom_line_job as a
+--         LEFT JOIN aps_material_storage_management as b ON a.item_code = b.item_number
+--         where b.material_type='鍒堕�犱欢'
     </insert>
 
     <!-- 鍒犻櫎 aps_bom_line 琛ㄤ腑鐨勬暟鎹� -->

--
Gitblit v1.9.3