Parcourir la source

Merge remote-tracking branch 'origin/master'

liuyaowen il y a 11 mois
Parent
commit
c1579e1a5e

+ 3 - 2
src/main/java/com/yunfeiyun/agmp/fms/domain/FmsSolar.java

@@ -3,8 +3,6 @@ package com.yunfeiyun.agmp.fms.domain;
 import com.yunfeiyun.agmp.common.annotation.Excel;
 import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
  * 节气时令对象 FmsSolar
@@ -37,5 +35,8 @@ public class FmsSolar extends BaseEntity {
     @Excel(name = "租户标识")
     private String tid;
 
+    /** 年份 */
+    private String year;
+
 
 }

+ 8 - 1
src/main/java/com/yunfeiyun/agmp/fms/mapper/FmsSolarMapper.java

@@ -4,7 +4,6 @@ import com.yunfeiyun.agmp.fms.domain.FmsSolar;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -41,6 +40,14 @@ public interface FmsSolarMapper
     public int insertFmsSolar(FmsSolar fmsSolar);
 
     /**
+     * 新增节气时令
+     *
+     * @param fmsSolar 节气时令
+     * @return 结果
+     */
+    public int insertFmsSolarBatch(List<FmsSolar> fmsSolarList);
+
+    /**
      * 修改节气时令
      *
      * @param fmsSolar 节气时令

+ 8 - 1
src/main/java/com/yunfeiyun/agmp/fms/service/IFmsSolarService.java

@@ -3,7 +3,6 @@ package com.yunfeiyun.agmp.fms.service;
 import com.yunfeiyun.agmp.fms.domain.FmsSolar;
 
 import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -40,6 +39,14 @@ public interface IFmsSolarService
     public int insertFmsSolar(FmsSolar fmsSolar);
 
     /**
+     * 新增节气时令
+     *
+     * @param fmsSolar 节气时令
+     * @return 结果
+     */
+    public int insertFmsSolarBatch(List<FmsSolar> fmsSolarList);
+
+    /**
      * 修改节气时令
      * 
      * @param fmsSolar 节气时令

+ 83 - 11
src/main/java/com/yunfeiyun/agmp/fms/service/impl/FmsSolarServiceImpl.java

@@ -12,10 +12,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.LinkedHashMap;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
 
 
 /**
@@ -71,6 +74,16 @@ public class FmsSolarServiceImpl implements IFmsSolarService
     }
 
     /**
+     * 新增节气时令
+     *
+     * @param fmsSolarList@return 结果
+     */
+    @Override
+    public int insertFmsSolarBatch(List<FmsSolar> fmsSolarList) {
+        return fmsSolarMapper.insertFmsSolarBatch(fmsSolarList);
+    }
+
+    /**
      * 修改节气时令
      * 
      * @param fmsSolar 节气时令
@@ -103,27 +116,86 @@ public class FmsSolarServiceImpl implements IFmsSolarService
         return fmsSolarMapper.deleteFmsSolarBySolarId(solarId,tid);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public int updateFmsSolarAll()  {
+        Map<String, String> solarDigestMap = new HashMap<>();
+        solarDigestMap.put("小寒", "气温持续低迷,寒冷干燥。");
+        solarDigestMap.put("大寒", "一年中最冷的时期。");
+        solarDigestMap.put("立春", "温暖回升,开始春耕。");
+        solarDigestMap.put("雨水", "雨水增多,气温回升。");
+        solarDigestMap.put("惊蛰", "气温升高,雷雨增多,万物复苏。");
+        solarDigestMap.put("春分", "昼夜等长,温度适中。");
+        solarDigestMap.put("清明", "气温进一步回升,雨量增多。");
+        solarDigestMap.put("谷雨", "雨水充足,利于农作物生长。");
+        solarDigestMap.put("立夏", "气温升高,降水增多。");
+        solarDigestMap.put("小满", "小麦等夏收作物灌浆饱满。");
+        solarDigestMap.put("芒种", "小麦、油菜成熟,进入收获期。");
+        solarDigestMap.put("夏至", "白昼最长,气温升高。");
+        solarDigestMap.put("小暑", "是二十四节气之第十一个节气,干支历午月的结束以及未月的起始。斗指辛,太阳到达黄经105度,于每年公历7月6-8日交节。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有“小暑大暑,上蒸下煮”之说。中国多地自小暑起进入雷暴最多的时节。");
+        solarDigestMap.put("大暑", "一年中最热的时期,高温多雨。");
+        solarDigestMap.put("立秋", "气温开始逐渐降低,昼夜温差增大。");
+        solarDigestMap.put("处暑", "炎热逐渐退去,降水减少。");
+        solarDigestMap.put("白露", "昼夜温差增大,早晨有露水。");
+        solarDigestMap.put("秋分", "气候特点: 昼夜等长,气温适中。");
+        solarDigestMap.put("寒露", "气温逐渐降低,开始有霜冻。");
+        solarDigestMap.put("霜降", "气温骤降,有霜出现。");
+        solarDigestMap.put("立冬", "气温显著降低,进入冬季。");
+        solarDigestMap.put("小雪", "气温进一步降低,开始降雪。");
+        solarDigestMap.put("大雪", "气温持续降低,大面积降雪。");
+        solarDigestMap.put("冬至", "昼最短,夜最长,气温最低。");
+
         try {
-            List<FmsSolar> fmsSolarList = fmsSolarMapper.selectFmsSolarList(null);
-            CalendarWrapper calendarWrapper = CalendarUtil.generateCalendarWithLunar(2025);
+            LocalDate currentDate = LocalDate.now();
+            int year = currentDate.getYear();
+
+            FmsSolar selectFmsSolar = new FmsSolar();
+            selectFmsSolar.setTid(null);
+            selectFmsSolar.setYear(String.valueOf(year));
+
+            List<FmsSolar> fmsSolarList = selectFmsSolarList(selectFmsSolar);
+
+            Map<String, FmsSolar> solarMap = new HashMap<>();
+            for(FmsSolar fmsSolar : fmsSolarList){
+                String solarName = fmsSolar.getSolarName();
+                String startDate = fmsSolar.getSolarStartdate();
+                String key = solarName + startDate;
+                solarMap.put(key, fmsSolar);
+            }
+
+            CalendarWrapper calendarWrapper = CalendarUtil.generateCalendarWithLunar(year);
             List<DayWrapper> list = calendarWrapper.getDayList();
-            LinkedHashMap<String,FmsSolar> lunarMap = fmsSolarList.stream().collect(Collectors.toMap(FmsSolar::getSolarName,item->item,(a,b)->a,LinkedHashMap::new));
+            List<FmsSolar> insertList = new ArrayList<>();
             for(DayWrapper dayWrapper : list){
                 LunarDate lunarDate = dayWrapper.getLunarDate();
-                if(StringUtil.isNotEmpty(lunarDate.getSolarTerm())){
-                    FmsSolar fmsSolar = lunarMap.get(lunarDate.getSolarTerm());
-                    if(null != fmsSolar){
-                        fmsSolar.setSolarStartdate(dayWrapper.getDateStr());
-                    }
+                String solarName = lunarDate.getSolarTerm();
+                if(StringUtil.isEmpty(solarName)){
+                    continue;
                 }
+                String startDate = lunarDate.getLocalDate().toString();
+                String key = solarName + startDate;
+                if(!solarMap.containsKey(key)){
+                    FmsSolar fmsSolar = new FmsSolar();
+                    fmsSolar.setSolarId(fmsSolar.getId());
+                    fmsSolar.setTid(null);
+                    fmsSolar.setYear(String.valueOf(year));
+                    fmsSolar.setSolarName(solarName);
+                    fmsSolar.setSolarStartdate(startDate);
+                    fmsSolar.setSolarDigest(solarDigestMap.get(solarName));
+
+                    insertList.add(fmsSolar);
+                    log.info("更新节气时令:{} {}", lunarDate.getSolarTerm(), lunarDate);
+                }
+            }
+
+            if(!insertList.isEmpty()){
+                return insertFmsSolarBatch(insertList);
             }
-            return fmsSolarMapper.updateFmsSolarByBatch(fmsSolarList);
         }catch (Exception e){
             log.error("更新失败",e);
             return 0;
         }
+        return 1;
     }
 
     @Override

+ 41 - 15
src/main/resources/mapper/FmsSolarMapper.xml

@@ -5,33 +5,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <mapper namespace="com.yunfeiyun.agmp.fms.mapper.FmsSolarMapper">
 
     <sql id="selectFmsSolarVo">
-        select solarId, solarName, solarRemark, solarStartdate, solarDigest from FmsSolar
+        select solarId, solarName, solarRemark, solarStartdate, solarDigest, year
+        from FmsSolar
     </sql>
 
     <select id="selectFmsSolarList" parameterType="FmsSolar" resultType="FmsSolar">
         <include refid="selectFmsSolarVo"/>
         <where>
-            tid = #{tid}
+            (tid = #{tid} or tid is #{tid})
             <if test="solarName != null  and solarName != ''"> and solarName like concat('%', #{solarName}, '%')</if>
             <if test="solarRemark != null  and solarRemark != ''"> and solarRemark = #{solarRemark}</if>
             <if test="solarStartdate != null  and solarStartdate != ''"> and solarStartdate = #{solarStartdate}</if>
             <if test="solarDigest != null  and solarDigest != ''"> and solarDigest = #{solarDigest}</if>
+            <if test="year != null and year != ''"> and year = #{year}</if>
         </where>
         order by solarStartdate
     </select>
 
     <select id="selectFmsSolarBySolarId" parameterType="String" resultType="FmsSolar">
         <include refid="selectFmsSolarVo"/>
-        where
-        solarId = #{solarId}
-        and
-        tid = #{tid}
+        where solarId = #{solarId} and tid = #{tid}
     </select>
     <select id="selectFmsSolarBySolarName" parameterType="String" resultType="FmsSolar">
         <include refid="selectFmsSolarVo"/>
-        where
-        solarName = #{solarName}
-        and tid = #{tid}
+        where solarName = #{solarName} and year = #{year} and tid = #{tid}
     </select>
 
     <select id="getFmsSolarByDate" parameterType="String" resultType="FmsSolar">
@@ -51,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="solarRemark != null">solarRemark,</if>
             <if test="solarStartdate != null">solarStartdate,</if>
             <if test="solarDigest != null">solarDigest,</if>
+            <if test="year != null">year,</if>
             <if test="tid != null">tid,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -59,10 +57,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="solarRemark != null">#{solarRemark},</if>
             <if test="solarStartdate != null">#{solarStartdate},</if>
             <if test="solarDigest != null">#{solarDigest},</if>
+            <if test="year != null">#{year},</if>
             <if test="tid != null">#{tid},</if>
          </trim>
     </insert>
 
+    <insert id="insertFmsSolarBatch" parameterType="FmsSolar">
+        <foreach collection="list" item="item" index="index" separator=";">
+            insert into FmsSolar
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.solarId != null">solarId,</if>
+                <if test="item.solarName != null">solarName,</if>
+                <if test="item.solarRemark != null">solarRemark,</if>
+                <if test="item.solarStartdate != null">solarStartdate,</if>
+                <if test="item.solarDigest != null">solarDigest,</if>
+                <if test="item.year != null">year,</if>
+                <if test="item.tid != null">tid,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.solarId != null">#{item.solarId},</if>
+                <if test="item.solarName != null">#{item.solarName},</if>
+                <if test="item.solarRemark != null">#{item.solarRemark},</if>
+                <if test="item.solarStartdate != null">#{item.solarStartdate},</if>
+                <if test="item.solarDigest != null">#{item.solarDigest},</if>
+                <if test="item.year != null">#{item.year},</if>
+                <if test="item.tid != null">#{item.tid},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+
     <update id="updateFmsSolar" parameterType="FmsSolar">
         update FmsSolar
         <trim prefix="SET" suffixOverrides=",">
@@ -71,12 +95,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="solarDigest != null">solarDigest = #{solarDigest},</if>
             <if test="tid != null">tid = #{tid},</if>
         </trim>
-        where
-        solarName = #{solarName}
+        where solarName = #{solarName} and year = #{year}
         <if test="tid != null and tid !='' and tid != '-1'">and tid = #{tid}</if>
     </update>
+
     <update id="updateFmsSolarByBatch" parameterType="FmsSolar">
-        <foreach collection="fmsSolarList" item="item" >
+        <foreach collection="fmsSolarList" item="item" separator=";">
             update FmsSolar
             <trim prefix="SET" suffixOverrides=",">
                 <if test="item.solarRemark != null">solarRemark = #{item.solarRemark},</if>
@@ -84,9 +108,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.solarDigest != null">solarDigest = #{item.solarDigest},</if>
                 <if test="tid != null">tid = #{item.tid},</if>
             </trim>
-            where
-            solarName = #{item.solarName};
-            <if test="tid != null and tid !='' and tid != '-1'">and tid = #{tid}</if>
+            where solarName = #{item.solarName} and year = #{item.year}
+            <if test="tid != null and tid !='' and tid != '-1'">
+                and tid = #{tid}
+            </if>
+
         </foreach>
     </update>