From a00cbbd709f348d2e148cf0e7270764a71b8844f Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Sat, 3 Aug 2024 17:23:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=88=E5=BA=A6=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/DateTimeHelper.java | 26 +++++ .../sgzb/material/domain/CalMonthlyBean.java | 100 ++++++++++++++++++ .../material/mapper/CalMonthlyMapper.java | 29 +++++ .../bonus/sgzb/material/remind/Inform.java | 36 +++++++ .../remind/service/CalcMonthlyService.java | 14 +++ .../remind/service/CalcMonthlyServiceImp.java | 52 +++++++++ .../mapper/material/CalMonthlyMapper.xml | 26 +++++ 7 files changed, 283 insertions(+) create mode 100644 sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/CalMonthlyBean.java create mode 100644 sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/CalMonthlyMapper.java create mode 100644 sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java create mode 100644 sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyService.java create mode 100644 sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyServiceImp.java create mode 100644 sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml diff --git a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java index 808e262a..c98d726f 100644 --- a/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java +++ b/sgzb-common/sgzb-common-core/src/main/java/com/bonus/sgzb/common/core/utils/DateTimeHelper.java @@ -205,6 +205,15 @@ public class DateTimeHelper { return minusMonth(new Date(), 1); } + /** + * 获取当前时间的年月 + * + * @return + */ + public static String getCurrentMonth() { + return minusMonth(new Date(), 0); + } + /** * 获取当前时间的上个年月 * @@ -907,4 +916,21 @@ public class DateTimeHelper { } return list; } + + public static String getCalStartDay() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.MONTH, -1); + c.set(Calendar.DAY_OF_MONTH, 21); + String first = format.format(c.getTime()); + return first; + } + + public static String getCalDay(int day) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Calendar c = Calendar.getInstance(); + c.add(Calendar.MONTH, 0); + c.set(Calendar.DAY_OF_MONTH, day); + return format.format(c.getTime()); + } } diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/CalMonthlyBean.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/CalMonthlyBean.java new file mode 100644 index 00000000..cca675f0 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/CalMonthlyBean.java @@ -0,0 +1,100 @@ +package com.bonus.sgzb.material.domain; + +import lombok.Data; +import java.util.List; + +@Data +public class CalMonthlyBean implements java.io.Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + + private String taskId; + + private String projectId; + + /** + * 根据工程分组后协议id集合 + */ + private String agreementConcatId; + + private String projectName; + + private String unitName; + + private String typeName; + + private String modelName; + + private int num; + + private String leaseDate; + + private String backDate; + + private String money; + + private String leasePrice; + + private String time; + + private String month; + + private String type; + + private String buyPrice; + + private String leaseMoney; + + private String lostMoney; + + private String repairMoney; + + private String scrapMoney; + + private String charge; + + private String typeId; + + /** + * i8工程编号 + */ + private String pc_no; + + /** + * 类别编号(周转安全工器具-2or周转工器具-1 + */ + private String category="1"; + + + /** + * 系统标识 1代表机具系统 2代表机具物资 3代表送变电物资系统 + */ + private String sysType="1"; + + /** + * 提交人 + */ + private String submitUser; + + /** + * 推送状态 0 未推送 1已推送 2退回 + */ + private String pushStatus; + + /** + * 推送备注 + */ + private String pushRemark; + + + /** + * 参数 + */ + private String body; + + private List agreementId; + + +} \ No newline at end of file diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/CalMonthlyMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/CalMonthlyMapper.java new file mode 100644 index 00000000..f18165f1 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/CalMonthlyMapper.java @@ -0,0 +1,29 @@ +package com.bonus.sgzb.material.mapper; + +import com.bonus.sgzb.material.domain.CalMonthlyBean; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description 综合查询--维修记录查询 + * @author hay + * @date 2024/2/26 14:19 + */ +@Mapper +public interface CalMonthlyMapper { + + /** + * 综合查询--维修记录列表 + * @param bean + * @return List + */ + int insertCalcRecord(CalMonthlyBean bean); + + List getCalcRecords(CalMonthlyBean bean); + + int deleteCalcRecord(CalMonthlyBean bean); + + int deleteMonthlyCosts(CalMonthlyBean bean); + +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java new file mode 100644 index 00000000..66a1c691 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/Inform.java @@ -0,0 +1,36 @@ +package com.bonus.sgzb.material.remind; + +import com.bonus.sgzb.material.remind.service.CalcMonthlyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + + +@Component +public class Inform { + + @Autowired + private CalcMonthlyService calcfourCostService; + + private final int CAL_DAY = 21; + + @Scheduled(cron = "0 */5 * * * ? ") // 间隔5分钟执行 + //@Scheduled(cron = "0 0 1 22 * ? ") // 每个月22日凌晨1点执行 + @Async + public void taskCycle() { + System.out.println("===springMVC定时器启动===="); + + try { + + // 生成每月数据 (上月21日---本月20日) + calcfourCostService.calcMonthInfo(CAL_DAY); + + } catch (Exception e) { + e.printStackTrace(); + } + + System.out.println("===springMVC定时器结束===="); + } + +} \ No newline at end of file diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyService.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyService.java new file mode 100644 index 00000000..65892773 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyService.java @@ -0,0 +1,14 @@ +package com.bonus.sgzb.material.remind.service; + +/** + * 计算租赁、丢失、维修、报废等四类费用的未结算费用 + * + * @author 吕继龙 + * @date 2024/04/23 + * + */ +public interface CalcMonthlyService { + + void calcMonthInfo(int day) throws Exception; + +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyServiceImp.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyServiceImp.java new file mode 100644 index 00000000..822546a9 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/remind/service/CalcMonthlyServiceImp.java @@ -0,0 +1,52 @@ +package com.bonus.sgzb.material.remind.service; + +import com.bonus.sgzb.common.core.utils.DateTimeHelper; +import com.bonus.sgzb.material.domain.CalMonthlyBean; +import com.bonus.sgzb.material.mapper.CalMonthlyMapper; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; + + +@Service +public class CalcMonthlyServiceImp implements CalcMonthlyService { + + @Resource + CalMonthlyMapper calMonthlyMapper; + + @Override + public void calcMonthInfo(int day) throws Exception { + String time = DateTimeHelper.getNowDate(); + String calDay = DateTimeHelper.getCalDay(day); + if (time.equals(calDay)) { + CalMonthlyBean record = new CalMonthlyBean(); + String month = DateTimeHelper.getCurrentMonth(); + record.setMonth(month); + cleanSameMonthOldRecords(record); + calMonthlyMapper.insertCalcRecord(record); + String taskId = record.getId(); + String startTime = DateTimeHelper.getCalStartDay(); + String endTime = DateTimeHelper.getCalDay(day - 1); + + //TODO, use startTime, endTime, taskId to save monthly result to a new table. + + + } + } + + private void cleanSameMonthOldRecords(CalMonthlyBean record) { + List list = calMonthlyMapper.getCalcRecords(record); + if (!CollectionUtils.isEmpty(list)) { + for (CalMonthlyBean bean : list) { + //清除上月之前计算过的记录 calc_project_month + calMonthlyMapper.deleteCalcRecord(bean); + + //清除上月之前计算过的记录 project_month_costs(表名待定) + calMonthlyMapper.deleteMonthlyCosts(bean); + } + } + } + +} diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml new file mode 100644 index 00000000..972248fb --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/CalMonthlyMapper.xml @@ -0,0 +1,26 @@ + + + + + + INSERT INTO calc_project_month (MONTH) VALUES (#{month}) + + + + + + delete from calc_project_month + where id = #{id} + + + + delete from project_month_costs + where task_id = #{id} + + + \ No newline at end of file