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 >= #{effectiveDate} and effective_date <= #{expiringDate}) or (expiring_date >= #{effectiveDate} and expiring_date <= #{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