Przeglądaj źródła

处理公出最公出限制表接口开发

anderx 1 rok temu
rodzic
commit
6c300c4717

+ 2 - 0
src/main/java/com/goafanti/common/dao/OrderYearMaxDurationMapper.java

@@ -82,5 +82,7 @@ public interface OrderYearMaxDurationMapper {
     int deleteById(Integer id);
 
     void updateByOrderNoAndYear(OrderYearMaxDuration orderYearMaxDuration);
+
+    List<OrderYearMaxDuration> selectByOrderNo(String orderNo);
 }
 

+ 74 - 12
src/main/java/com/goafanti/common/dao/TOrderPublicReleaseCountMapper.java

@@ -2,28 +2,90 @@ package com.goafanti.common.dao;
 
 import com.goafanti.common.model.TOrderPublicReleaseCount;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+
 
 /**
-* @author Administrator
-* @description 针对表【t_order_public_release_count(订单公出信息表)】的数据库操作Mapper
-* @createDate 2024-06-17 10:18:34
-* @Entity com.goafanti.common.model.TOrderPublicReleaseCount
-*/
+ * 订单公出信息表(TOrderPublicReleaseCount)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-07-05 09:21:46
+ */
 public interface TOrderPublicReleaseCountMapper {
 
-    int deleteByPrimaryKey(Long id);
+    /**
+     * 通过ID查询单条数据
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    TOrderPublicReleaseCount queryById(Integer id);
+
 
-    int insert(TOrderPublicReleaseCount record);
+    /**
+     * 查询指定行数据
+     *
+     * @param tOrderPublicReleaseCount 查询条件
+     * @param pageable                 分页对象
+     * @return 对象列表
+     */
+    List<TOrderPublicReleaseCount> findTOrderPublicReleaseCountList(TOrderPublicReleaseCount tOrderPublicReleaseCount, @Param("pageable") Pageable pageable);
 
-    int insertSelective(TOrderPublicReleaseCount record);
+    /**
+     * 统计总行数
+     *
+     * @param tOrderPublicReleaseCount 查询条件
+     * @return 总行数
+     */
+    int findTOrderPublicReleaseCountCount(TOrderPublicReleaseCount tOrderPublicReleaseCount);
 
-    TOrderPublicReleaseCount selectByPrimaryKey(Long id);
+    /**
+     * 新增数据
+     *
+     * @param tOrderPublicReleaseCount 实例对象
+     * @return 影响行数
+     */
+    int insert(TOrderPublicReleaseCount tOrderPublicReleaseCount);
 
-    int updateByPrimaryKeySelective(TOrderPublicReleaseCount record);
+    /**
+     * 批量新增数据(MyBatis原生foreach方法)
+     *
+     * @param entities List<TOrderPublicReleaseCount> 实例对象列表
+     * @return 影响行数
+     */
+    int insertBatch(@Param("entities") List<TOrderPublicReleaseCount> entities);
 
-    int updateByPrimaryKey(TOrderPublicReleaseCount record);
+    /**
+     * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+     *
+     * @param entities List<TOrderPublicReleaseCount> 实例对象列表
+     * @return 影响行数
+     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+     */
+    int insertOrUpdateBatch(@Param("entities") List<TOrderPublicReleaseCount> entities);
 
-    TOrderPublicReleaseCount selectByOrderNo(@Param("orderNo") String orderNo, @Param("sumYear") String sumYear);
+    /**
+     * 修改数据
+     *
+     * @param tOrderPublicReleaseCount 实例对象
+     * @return 影响行数
+     */
+    int update(TOrderPublicReleaseCount tOrderPublicReleaseCount);
+
+    /**
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 影响行数
+     */
+    int deleteById(Integer id);
+
+    TOrderPublicReleaseCount selectByOrderNo(@Param("orderNo") String orderNo);
 
     void updateByOrderNo(TOrderPublicReleaseCount update);
+
 }
+

+ 16 - 7
src/main/java/com/goafanti/common/mapper/OrderYearMaxDurationMapper.xml

@@ -127,6 +127,22 @@
         </set>
         where id = #{id}
     </update>
+
+
+    <!--通过主键删除-->
+    <delete id="deleteById">
+        delete
+        from order_year_max_duration
+        where id = #{id}
+    </delete>
+
+    <select id="selectByOrderNo"  resultMap="OrderYearMaxDurationMap">
+        select
+            id, order_no, year, status, max_duration, create_time
+        from order_year_max_duration
+        where   order_no =  #{orderNo,jdbcType=VARCHAR}
+    </select>
+
     <update id="updateByOrderNoAndYear">
         update order_year_max_duration
         <set>
@@ -143,12 +159,5 @@
         where order_no = #{orderNo} and year = #{year}
     </update>
 
-    <!--通过主键删除-->
-    <delete id="deleteById">
-        delete
-        from order_year_max_duration
-        where id = #{id}
-    </delete>
-
 </mapper>
 

+ 130 - 111
src/main/java/com/goafanti/common/mapper/TOrderPublicReleaseCountMapper.xml

@@ -1,139 +1,158 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.goafanti.common.dao.TOrderPublicReleaseCountMapper">
 
-    <resultMap id="BaseResultMap" type="com.goafanti.common.model.TOrderPublicReleaseCount">
-            <id property="id" column="id" jdbcType="INTEGER"/>
-            <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
-            <result property="status" column="status" jdbcType="INTEGER"/>
-            <result property="maxDuration" column="max_duration" jdbcType="DOUBLE"/>
-            <result property="actualDuration" column="actual_duration" jdbcType="DOUBLE"/>
-            <result property="exceedDuration" column="exceed_duration" jdbcType="DOUBLE"/>
-            <result property="peopleCount" column="people_count" jdbcType="INTEGER"/>
-            <result property="frequency" column="frequency" jdbcType="INTEGER"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="sumYear" column="sum_year" jdbcType="VARCHAR"/>
+    <resultMap type="com.goafanti.common.model.TOrderPublicReleaseCount" id="TOrderPublicReleaseCountMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
+        <result property="actualDuration" column="actual_duration" jdbcType="NUMERIC"/>
+        <result property="peopleCount" column="people_count" jdbcType="INTEGER"/>
+        <result property="frequency" column="frequency" jdbcType="INTEGER"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
-    <sql id="Base_Column_List">
-        id,order_no,status,
-        max_duration,actual_duration,exceed_duration,
-        people_count,frequency,create_time,
-        sum_year
-    </sql>
+    <!--查询单个-->
+    <select id="queryById" resultMap="TOrderPublicReleaseCountMap">
+        select id,
+               order_no,
+               actual_duration,
+               people_count,
+               frequency,
+               create_time
+        from t_order_public_release_count
+        where id = #{id}
+    </select>
 
-    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--查询指定行数据-->
+    <select id="findTOrderPublicReleaseCountList" resultMap="TOrderPublicReleaseCountMap">
         select
-        <include refid="Base_Column_List" />
+        id, order_no, actual_duration, people_count, frequency, create_time
         from t_order_public_release_count
-        where  id = #{id,jdbcType=INTEGER} 
+        <where>
+            <if test="id != null">
+                and id = #{id}
+            </if>
+            <if test="orderNo != null and orderNo != ''">
+                and order_no = #{orderNo}
+            </if>
+            <if test="actualDuration != null">
+                and actual_duration = #{actualDuration}
+            </if>
+            <if test="peopleCount != null">
+                and people_count = #{peopleCount}
+            </if>
+            <if test="frequency != null">
+                and frequency = #{frequency}
+            </if>
+            <if test="createTime != null">
+                and create_time = #{createTime}
+            </if>
+        </where>
+        limit #{pageable.offset}, #{pageable.pageSize}
     </select>
 
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-        delete from t_order_public_release_count
-        where  id = #{id,jdbcType=INTEGER} 
-    </delete>
-    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount" useGeneratedKeys="true">
-        insert into t_order_public_release_count
-        ( id,order_no,status
-        ,max_duration,actual_duration,exceed_duration
-        ,people_count,frequency,create_time
-        ,sum_year)
-        values (#{id,jdbcType=INTEGER},#{orderNo,jdbcType=VARCHAR},#{status,jdbcType=INTEGER}
-        ,#{maxDuration,jdbcType=DOUBLE},#{actualDuration,jdbcType=DOUBLE},#{exceedDuration,jdbcType=DOUBLE}
-        ,#{peopleCount,jdbcType=INTEGER},#{frequency,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP}
-        ,#{sumYear,jdbcType=VARCHAR})
+    <!--统计总行数-->
+    <select id="findTOrderPublicReleaseCountCount" resultType="java.lang.Integer">
+        select count(1)
+        from t_order_public_release_count
+        <where>
+            <if test="id != null">
+                and id = #{id}
+            </if>
+            <if test="orderNo != null and orderNo != ''">
+                and order_no = #{orderNo}
+            </if>
+            <if test="actualDuration != null">
+                and actual_duration = #{actualDuration}
+            </if>
+            <if test="peopleCount != null">
+                and people_count = #{peopleCount}
+            </if>
+            <if test="frequency != null">
+                and frequency = #{frequency}
+            </if>
+            <if test="createTime != null">
+                and create_time = #{createTime}
+            </if>
+        </where>
+    </select>
+
+    <!--新增所有列-->
+    <insert id="insert" keyProperty="id" useGeneratedKeys="true">
+        insert into t_order_public_release_count(order_no, actual_duration, people_count, frequency)
+        values (#{orderNo}, #{actualDuration}, #{peopleCount}, #{frequency})
     </insert>
-    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount" useGeneratedKeys="true">
-        insert into t_order_public_release_count
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-                <if test="id != null">id,</if>
-                <if test="orderNo != null">order_no,</if>
-                <if test="status != null">status,</if>
-                <if test="maxDuration != null">max_duration,</if>
-                <if test="actualDuration != null">actual_duration,</if>
-                <if test="exceedDuration != null">exceed_duration,</if>
-                <if test="peopleCount != null">people_count,</if>
-                <if test="frequency != null">frequency,</if>
-                <if test="createTime != null">create_time,</if>
-                <if test="sumYear != null">sum_year,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-                <if test="id != null">#{id,jdbcType=INTEGER},</if>
-                <if test="orderNo != null">#{orderNo,jdbcType=VARCHAR},</if>
-                <if test="status != null">#{status,jdbcType=INTEGER},</if>
-                <if test="maxDuration != null">#{maxDuration,jdbcType=DOUBLE},</if>
-                <if test="actualDuration != null">#{actualDuration,jdbcType=DOUBLE},</if>
-                <if test="exceedDuration != null">#{exceedDuration,jdbcType=DOUBLE},</if>
-                <if test="peopleCount != null">#{peopleCount,jdbcType=INTEGER},</if>
-                <if test="frequency != null">#{frequency,jdbcType=INTEGER},</if>
-                <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
-                <if test="sumYear != null">#{sumYear,jdbcType=VARCHAR},</if>
-        </trim>
+
+    <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
+        insert into t_order_public_release_count(order_no, actual_duration, people_count, frequency, create_time)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.orderNo}, #{entity.actualDuration}, #{entity.peopleCount}, #{entity.frequency},
+            #{entity.createTime})
+        </foreach>
+    </insert>
+
+    <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
+        insert into t_order_public_release_count(order_no, actual_duration, people_count, frequency, create_time)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.orderNo}, #{entity.actualDuration}, #{entity.peopleCount}, #{entity.frequency},
+            #{entity.createTime})
+        </foreach>
+        on duplicate key update
+        order_no = values(order_no),
+        actual_duration = values(actual_duration),
+        people_count = values(people_count),
+        frequency = values(frequency),
+        create_time = values(create_time)
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount">
+
+    <!--通过主键修改数据-->
+    <update id="update">
         update t_order_public_release_count
         <set>
-                <if test="orderNo != null">
-                    order_no = #{orderNo,jdbcType=VARCHAR},
-                </if>
-                <if test="status != null">
-                    status = #{status,jdbcType=INTEGER},
-                </if>
-                <if test="maxDuration != null">
-                    max_duration = #{maxDuration,jdbcType=DOUBLE},
-                </if>
-                <if test="actualDuration != null">
-                    actual_duration = #{actualDuration,jdbcType=DOUBLE},
-                </if>
-                <if test="exceedDuration != null">
-                    exceed_duration = #{exceedDuration,jdbcType=DOUBLE},
-                </if>
-                <if test="peopleCount != null">
-                    people_count = #{peopleCount,jdbcType=INTEGER},
-                </if>
-                <if test="frequency != null">
-                    frequency = #{frequency,jdbcType=INTEGER},
-                </if>
-                <if test="createTime != null">
-                    create_time = #{createTime,jdbcType=TIMESTAMP},
-                </if>
-                <if test="sumYear != null">
-                    sum_year = #{sumYear,jdbcType=VARCHAR},
-                </if>
+            <if test="orderNo != null and orderNo != ''">
+                order_no = #{orderNo},
+            </if>
+            <if test="actualDuration != null">
+                actual_duration = #{actualDuration},
+            </if>
+            <if test="peopleCount != null">
+                people_count = #{peopleCount},
+            </if>
+            <if test="frequency != null">
+                frequency = #{frequency},
+            </if>
+            <if test="createTime != null">
+                create_time = #{createTime},
+            </if>
         </set>
-        where   id = #{id,jdbcType=INTEGER} 
-    </update>
-    <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount">
-        update t_order_public_release_count
-        set 
-            order_no =  #{orderNo,jdbcType=VARCHAR},
-            status =  #{status,jdbcType=INTEGER},
-            max_duration =  #{maxDuration,jdbcType=DOUBLE},
-            actual_duration =  #{actualDuration,jdbcType=DOUBLE},
-            exceed_duration =  #{exceedDuration,jdbcType=DOUBLE},
-            people_count =  #{peopleCount,jdbcType=INTEGER},
-            frequency =  #{frequency,jdbcType=INTEGER},
-            create_time =  #{createTime,jdbcType=TIMESTAMP},
-            sum_year =  #{sumYear,jdbcType=VARCHAR}
-        where   id = #{id,jdbcType=INTEGER} 
+        where id = #{id}
     </update>
+
+    <!--通过主键删除-->
+    <delete id="deleteById">
+        delete
+        from t_order_public_release_count
+        where id = #{id}
+    </delete>
+
+
     <update id="updateByOrderNo">
         update t_order_public_release_count
         set
             actual_duration =  #{actualDuration,jdbcType=DOUBLE},
-            exceed_duration =  if(#{actualDuration,jdbcType=DOUBLE}-max_duration>0,(#{actualDuration,jdbcType=DOUBLE}-max_duration),0),
             people_count =  #{peopleCount,jdbcType=INTEGER},
             frequency =  #{frequency,jdbcType=INTEGER}
-        where   order_no =  #{orderNo,jdbcType=VARCHAR} and sum_year= #{sumYear,jdbcType=VARCHAR}
+        where   order_no =  #{orderNo,jdbcType=VARCHAR}
     </update>
 
-    <select id="selectByOrderNo"  resultMap="BaseResultMap">
+    <select id="selectByOrderNo"  resultMap="TOrderPublicReleaseCountMap">
         select
-        <include refid="Base_Column_List" />
+            id, order_no, actual_duration, people_count, frequency, create_time
         from t_order_public_release_count
-        where  order_no =  #{orderNo,jdbcType=VARCHAR} and sum_year= #{sumYear,jdbcType=VARCHAR}
+        where  order_no =  #{orderNo,jdbcType=VARCHAR}
     </select>
+
 </mapper>
+

+ 4 - 0
src/main/java/com/goafanti/common/model/OrderYearMaxDuration.java

@@ -44,6 +44,10 @@ public class OrderYearMaxDuration implements Serializable {
     public OrderYearMaxDuration() {
     }
 
+    public OrderYearMaxDuration(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
     public Integer getId() {
         return id;
     }

+ 8 - 122
src/main/java/com/goafanti/common/model/TOrderPublicReleaseCount.java

@@ -3,200 +3,86 @@ package com.goafanti.common.model;
 import java.io.Serializable;
 import java.util.Date;
 
+
 /**
- * 订单公出信息表
- * @TableName t_order_public_release_count
+ * 订单公出信息表(TOrderPublicReleaseCount)实体类
+ *
+ * @author makejava
+ * @since 2024-07-05 09:21:46
  */
 public class TOrderPublicReleaseCount implements Serializable {
-    /**
-     * 
-     */
-    private Integer id;
+    private static final long serialVersionUID = 515848789423733193L;
 
+    private Integer id;
     /**
      * 订单编号
      */
     private String orderNo;
-
-    /**
-     * 状态0=无需限制,1需要限制
-     */
-    private Integer status;
-
-    /**
-     * 最大公出
-     */
-    private Double maxDuration;
-
     /**
      * 实际公出
      */
     private Double actualDuration;
-
-    /**
-     * 超出公出
-     */
-    private Double exceedDuration;
-
     /**
      * 公出人数
      */
     private Integer peopleCount;
-
     /**
      * 公出次数
      */
     private Integer frequency;
-
     /**
      * 发起时间
      */
     private Date createTime;
 
-    /**
-     * 统计年份
-     */
-    private String sumYear;
 
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 
-     */
     public Integer getId() {
         return id;
     }
 
-    /**
-     * 
-     */
     public void setId(Integer id) {
         this.id = id;
     }
 
-    /**
-     * 订单编号
-     */
     public String getOrderNo() {
         return orderNo;
     }
 
-    /**
-     * 订单编号
-     */
     public void setOrderNo(String orderNo) {
         this.orderNo = orderNo;
     }
 
-    /**
-     * 状态0=无需限制,1需要限制
-     */
-    public Integer getStatus() {
-        return status;
-    }
-
-    /**
-     * 状态0=无需限制,1需要限制
-     */
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    /**
-     * 最大公出
-     */
-    public Double getMaxDuration() {
-        return maxDuration;
-    }
-
-    /**
-     * 最大公出
-     */
-    public void setMaxDuration(Double maxDuration) {
-        this.maxDuration = maxDuration;
-    }
-
-    /**
-     * 实际公出
-     */
     public Double getActualDuration() {
         return actualDuration;
     }
 
-    /**
-     * 实际公出
-     */
     public void setActualDuration(Double actualDuration) {
         this.actualDuration = actualDuration;
     }
 
-    /**
-     * 超出公出
-     */
-    public Double getExceedDuration() {
-        return exceedDuration;
-    }
-
-    /**
-     * 超出公出
-     */
-    public void setExceedDuration(Double exceedDuration) {
-        this.exceedDuration = exceedDuration;
-    }
-
-    /**
-     * 公出人数
-     */
     public Integer getPeopleCount() {
         return peopleCount;
     }
 
-    /**
-     * 公出人数
-     */
     public void setPeopleCount(Integer peopleCount) {
         this.peopleCount = peopleCount;
     }
 
-    /**
-     * 公出次数
-     */
     public Integer getFrequency() {
         return frequency;
     }
 
-    /**
-     * 公出次数
-     */
     public void setFrequency(Integer frequency) {
         this.frequency = frequency;
     }
 
-    /**
-     * 发起时间
-     */
     public Date getCreateTime() {
         return createTime;
     }
 
-    /**
-     * 发起时间
-     */
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 
-    /**
-     * 统计年份
-     */
-    public String getSumYear() {
-        return sumYear;
-    }
+}
 
-    /**
-     * 统计年份
-     */
-    public void setSumYear(String sumYear) {
-        this.sumYear = sumYear;
-    }
-}

+ 28 - 0
src/main/java/com/goafanti/expenseAccount/bo/TOrderPublicReleaseCountBo.java

@@ -0,0 +1,28 @@
+package com.goafanti.expenseAccount.bo;
+
+import com.goafanti.common.model.TOrderPublicReleaseCount;
+
+import java.math.BigDecimal;
+
+public class TOrderPublicReleaseCountBo extends TOrderPublicReleaseCount {
+
+    private BigDecimal maxDuration;
+
+    private BigDecimal exceedDuration;
+
+    public BigDecimal getMaxDuration() {
+        return maxDuration;
+    }
+
+    public void setMaxDuration(BigDecimal maxDuration) {
+        this.maxDuration = maxDuration;
+    }
+
+    public BigDecimal getExceedDuration() {
+        return exceedDuration;
+    }
+
+    public void setExceedDuration(BigDecimal exceedDuration) {
+        this.exceedDuration = exceedDuration;
+    }
+}

+ 38 - 16
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -86,6 +86,8 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
     private TOrderPublicReleaseCountMapper tOrderPublicReleaseCountMapper;
     @Autowired
     private OrderNewService orderNewService;
+    @Autowired
+    private OrderYearMaxDurationMapper orderYearMaxDurationMapper;
 
 
 
@@ -1428,7 +1430,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                 BigDecimal yxyCount = BigDecimal.ZERO;
                 BigDecimal zxsCount = BigDecimal.ZERO;
                 BigDecimal qtCount = BigDecimal.ZERO;
-                TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(e.getOrderNo(), String.valueOf(year));
+                TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(e.getOrderNo());
                 if(!expenseAccounts.isEmpty()){
                     for (ExpenseAccount ea : expenseAccounts) {
                         count=count.add(ea.getAmount());
@@ -1444,7 +1446,28 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                         }
                     }
                 }
-                String str = getString(e, out, count, yxyCount, zxsCount,qtCount);
+                List<OrderYearMaxDuration> yearMaxDurationList = orderYearMaxDurationMapper.selectByOrderNo(e.getOrderNo());
+                OrderYearMaxDuration useOyd = null;
+                for (int i = 0; i < yearMaxDurationList.size(); i++) {
+                    OrderYearMaxDuration oyd = yearMaxDurationList.get(i);
+                    //年份为0不是会员直接获取跳出循环,否则获取当前年份,获取不到获取最后一年
+                    if (oyd.getYear()==0){
+                        useOyd=oyd;
+                        break;
+                    }else {
+                        if (oyd.getYear().equals(year)){
+                            useOyd = oyd;
+                            break;
+                        }
+                        if(i==yearMaxDurationList.size()-1&&useOyd==null){
+                            useOyd = yearMaxDurationList.get(i);
+                        }
+                    }
+
+                }
+
+
+                String str = getString(e, out, count, yxyCount, zxsCount,qtCount,useOyd);
                 e.setCountStr(str);
             }
         }
@@ -1454,19 +1477,18 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     }
 
-    private String getString(SonExpenseAccount e, TOrderPublicReleaseCount out, BigDecimal count, BigDecimal yxyCount, BigDecimal zxsCount, BigDecimal qtCount) {
-        if (out == null){
-            out=new TOrderPublicReleaseCount();
-            out.setMaxDuration(0d);
-            out.setExceedDuration(0d);
-            out.setActualDuration(0d);
-            out.setFrequency(0);
-            out.setPeopleCount(0);
-        }
-        String maxString=":应公出" + out.getMaxDuration() + "小时";
-        String actualString=",超过" + out.getExceedDuration() + "小时,";
-        if (out.getMaxDuration().equals(-1d)){
-            maxString=":不限制公出小时";
+    private String getString(SonExpenseAccount e, TOrderPublicReleaseCount out, BigDecimal count, BigDecimal yxyCount,
+                             BigDecimal zxsCount, BigDecimal qtCount,OrderYearMaxDuration useOyd) {
+        TOrderPublicReleaseCountBo bo = new TOrderPublicReleaseCountBo();
+        bo.setMaxDuration(useOyd.getMaxDuration());
+        bo.setExceedDuration(useOyd.getMaxDuration().subtract(BigDecimal.valueOf(out.getActualDuration())));
+        bo.setActualDuration(out.getActualDuration());
+        bo.setFrequency(out.getFrequency());
+        bo.setPeopleCount(out.getPeopleCount());
+        String maxString=":应公出" + bo.getMaxDuration() + "["+useOyd.getYear()+"年]"+"小时";
+        String actualString=",超过" + bo.getExceedDuration() + "小时,";
+        if (useOyd.getStatus()==1){
+            maxString=":不限制公出小时"+"["+useOyd.getYear()+"年]";
             actualString="";
         }
         StringBuilder expenseString=new StringBuilder().append("报销").append(count.stripTrailingZeros().toPlainString()).append("元");
@@ -1484,7 +1506,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             expenseString.deleteCharAt(expenseString.length() - 1);
             expenseString.append(")");
         }
-        if (out.getActualDuration()<=out.getMaxDuration()){
+        if (bo.getMaxDuration().compareTo(BigDecimal.valueOf(bo.getActualDuration()))<1){
             actualString="";
         }
         return e.getBuyerName() + e.getContractNo() +

+ 2 - 2
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -988,8 +988,8 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		date.setTime(date.getTime()+500);
 		addOrderChangeLog("变更完成。", 4, nb.getOrderNo(), nb.getId(),date);
 		pushGeneralSendNoticeAndEmail(alist,NoticeStatus.ORDER_CHANGE_END.getCode(), order, TokenManager.getAdminId(),0);
-		//需修改
-//		orderNewService.pushOrderPublicReleaseCount(nb.getOrderNo());
+		TOrderNew tOrderNew = tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
+		orderNewService.pushOrderPublicReleaseCount(tOrderNew);
 		//修改投标标识
 		tOrderMidMapper.updateBidTypeByOrderNo(nb.getOrderNo());
 		return 1;

+ 9 - 1
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -148,6 +148,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	private OrderYearMaxDurationMapper orderYearMaxDurationMapper;
 	@Autowired
 	private TOrderApprovalMapper tOrderApprovalMapper;
+	@Autowired
+	private TOrderPublicReleaseCountMapper tOrderPublicReleaseCountMapper;
 
 
 	@Value(value = "${upload.path}")
@@ -726,10 +728,15 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		TOrderPublicReleaseCount out = null;
 		out=new TOrderPublicReleaseCount();
 		out.setOrderNo(orderNew.getOrderNo());
-		out.setMaxDuration(0d);
 		out.setActualDuration(durationCount.doubleValue());
 		out.setPeopleCount(peopleList.size());
 		out.setFrequency(count);
+		TOrderPublicReleaseCount tOrderPublicReleaseCount = tOrderPublicReleaseCountMapper.selectByOrderNo(orderNew.getOrderNo());
+		if (tOrderPublicReleaseCount!=null){
+			tOrderPublicReleaseCountMapper.updateByOrderNo(out);
+		}else {
+			tOrderPublicReleaseCountMapper.insert(out);
+		}
 		//获取会员信息
 		List<TTaskMember> tTaskMembers = tTaskMemberMapper.selectByOrderNo(orderNew.getOrderNo());
 		int yearSum=0;
@@ -738,6 +745,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			OrderYearMaxDuration orderYearMaxDuration = new OrderYearMaxDuration();
 			orderYearMaxDuration.setYear(0);
 			BigDecimal maxDuration = pushMaxDuration(orderNew.getTotalAmount());
+			//需修改成判定
 			if (maxDuration.compareTo(new BigDecimal(-1))==0){
 				orderYearMaxDuration.setMaxDuration(BigDecimal.ZERO);
 				orderYearMaxDuration.setStatus(1);

+ 18 - 9
src/main/java/com/goafanti/weChat/bo/CheckOrderNoOut.java

@@ -11,7 +11,9 @@ public class CheckOrderNoOut {
         private BigDecimal durationCount;
         private BigDecimal durationMax;
 
-        private Integer amountType;
+        private String amountName;
+
+        private String amountType;
 
     /**
      * 审核人
@@ -23,6 +25,17 @@ public class CheckOrderNoOut {
      */
     private String publicReleaseName;
 
+    public String getAmountName() {
+        return amountName;
+    }
+
+    public void setAmountName(String amountName) {
+        this.amountName = amountName;
+    }
+
+    public void setAmountType(String amountType) {
+        this.amountType = amountType;
+    }
 
     public String getPublicReleaseName() {
         return publicReleaseName;
@@ -80,15 +93,11 @@ public class CheckOrderNoOut {
             this.durationCount = durationCount;
         }
 
-        public Integer getAmountType() {
-            return amountType;
-        }
-
-        public void setAmountType(Integer amountType) {
-            this.amountType = amountType;
-        }
+    public String getAmountType() {
+        return amountType;
+    }
 
-        public String getAdminName() {
+    public String getAdminName() {
             return adminName;
         }
 

+ 87 - 57
src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

@@ -19,6 +19,7 @@ import com.goafanti.core.websocket.SystemWebSocketHandler;
 import com.goafanti.customer.bo.FollowBusinessBo;
 import com.goafanti.customer.service.CustomerService;
 import com.goafanti.order.bo.TOrderNewBo;
+import com.goafanti.order.service.OrderNewService;
 import com.goafanti.weChat.bo.*;
 import com.goafanti.weChat.service.PublicReleaseService;
 import org.springframework.beans.BeanUtils;
@@ -32,7 +33,6 @@ import org.springframework.web.socket.TextMessage;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
@@ -76,6 +76,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 	@Autowired
 	private RestrictProjectMapper restrictProjectMapper;
+	@Autowired
+	private OrderYearMaxDurationMapper orderYearMaxDurationMapper;
+	@Autowired
+	private TTaskMemberMapper tTaskMemberMapper;
+	@Autowired
+	private OrderNewService orderNewService;
 
 	@Override
 	@Transactional
@@ -103,7 +109,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				in.setTechStartProcess(1);
 			}
 		}
+
 		publicReleaseMapper.insertSelective(in);
+		if (in.getOrderNo()!=null){
+			TOrderNew tOrderNew = tOrderNewMapper.selectByPrimaryKey(in.getOrderNo());
+			orderNewService.pushOrderPublicReleaseCount(tOrderNew);
+		}
 		List<PublicReleaseDetails> prdList=new ArrayList<>();
 		List<User> users=new ArrayList<>();
 		StringBuilder str =new StringBuilder();
@@ -279,7 +290,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			Admin a = adminMapper.selectByPrimaryKey(salesmanId);
 			addPublicExamine(in.getId(),a);
 			CheckOrderNoOut data = (CheckOrderNoOut) checkOrderNo.get("data");
-			String format = getString(my, data);
+			String format = getString(my, data,tOrderNew);
 			pushNoticeAndSoucketAndEmail(my, in, date, a, format, map);
 		}
 		map.put("data", publicReleaseMapper.selectDtails(in.getId()));
@@ -293,24 +304,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		sendNoticeAndSoucket(u.getAid(),3,str2.toString());
 	}
 
-	private String getString(AdminListBo my, CheckOrderNoOut data) {
+	private String getString(AdminListBo my, CheckOrderNoOut data,TOrderNew tOrderNew) {
 		String amountName="";
 		String amountType="";
-		if (data.getAmountType()==0){
-			amountName="低于1万";
-			amountType="原则上技术人员不可下户";
-		}else if (data.getAmountType()==1){
-			amountName="在1~3万";
-			amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
-		}else if (data.getAmountType()==2){
-			amountName="在3~5万";
-			amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
-		}else if (data.getAmountType()==3){
-			amountName="在5~10万";
-			amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
-		}
+
 		String format = String.format("%s准备公出%s(%s)," +
-						"总计公出:%s人,%s次,%s时。本合同%s,本次申请,%s。请确认是否同意本次公出?", my.getName(), data.getUserName(), data.getContractNo(),
+						"总计公出:%s人,%s次,%s时。%s,本次申请,%s。请确认是否同意本次公出?", my.getName(), data.getUserName(), data.getContractNo(),
 				data.getPeopleCount(), data.getTimesCount(), data.getDurationCount().stripTrailingZeros().toPlainString(), amountName,
 				amountType);
 		return format;
@@ -435,8 +434,6 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				List<String> split = Arrays.asList(in.getUids().split(","));
 				List<OutPublicReleaseDetails> prList = publicReleaseDetailsMapper.selectByPrid(in.getId());
 				uses=pushPublicReleaseDetails(split,prList,use,in);
-
-
 			}
 			in.setStatus(1);
 			log.setStatus(PublicReleaseLog.states.xg.getCode());
@@ -481,7 +478,10 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		addPublicReleaseDateClock(in);
 		publicReleaseLogMapper.insertSelective(log);
 		publicReleaseMapper.updateByPrimaryKeySelective(in);
-
+		if (in.getOrderNo()!=null){
+			TOrderNew tOrderNew = tOrderNewMapper.selectByPrimaryKey(in.getOrderNo());
+			orderNewService.pushOrderPublicReleaseCount(tOrderNew);
+		}
 		return 1;
 	}
 
@@ -1842,12 +1842,8 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			actualDuration=actualDuration.add(BigDecimal.valueOf(in.getDuration()));
 			frequency++;
 		}
-		LocalDate startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
-		String sumYear= String.valueOf(startDate.getYear());
-		LocalDate endDate = startDate.withYear(startDate.getYear()+1);
+
 		for (PublicRelease e : list) {
-			LocalDate date = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-			if (date.isAfter(startDate)&&date.isBefore(endDate)){
 				//新增直接计算
 				if (in.getId()==null){
 					if (e.getDuration()!=null){
@@ -1877,7 +1873,6 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 						}
 					}
 				}
-			}
 		}
 		Map map=new HashMap();
 		CheckOrderNoOut data= new CheckOrderNoOut();
@@ -1891,7 +1886,6 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			update.setFrequency(frequency);
 			update.setActualDuration(actualDuration.doubleValue());
 			update.setPeopleCount(peopleList.size());
-			update.setSumYear(sumYear);
 			tOrderPublicReleaseCountMapper.updateByOrderNo(update);
 		}
 		data.setTimesCount(frequency);
@@ -1900,35 +1894,74 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		data.setContractNo(t.getContractNo());
 		data.setAdminName(t.getSalesmanName());
 		data.setDurationCount(actualDuration);
-		// 0=0-1 1=1-3 2=3-5 3=5-10 4=10以上
-		if (t.getTotalAmount().compareTo(BigDecimal.valueOf(1)) < 0) {
-			data.setAmountType(0);
-			data.setDurationMax(BigDecimal.ZERO);
-			map.put("code",false);
-			map.put("data",data);
-		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(3))<0) {
-			data.setAmountType(1);
-			data.setDurationMax(BigDecimal.valueOf(15));
-			if (actualDuration.compareTo(data.getDurationMax())<1){
-				map.put("code",true);
-				map.put("data",null);
+		//获取年份
+		List<OrderYearMaxDuration> yearMaxDurationList = orderYearMaxDurationMapper.selectByOrderNo(in.getOrderNo());
+		int year = LocalDate.now().getYear();
+		OrderYearMaxDuration useOyd = null;
+		for (int i = 0; i < yearMaxDurationList.size(); i++) {
+			OrderYearMaxDuration oyd = yearMaxDurationList.get(i);
+			//年份为0不是会员直接获取跳出循环,否则获取当前年份,获取不到获取最后一年
+			if (oyd.getYear()==0){
+				useOyd=oyd;
+				break;
 			}else {
-				map.put("code",false);
-				map.put("data",data);
+				if (oyd.getYear().equals(year)){
+					useOyd = oyd;
+					break;
+				}
+				if(i==yearMaxDurationList.size()-1&&useOyd==null){
+					useOyd = yearMaxDurationList.get(i);
+				}
 			}
-		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(5))<0) {
-			data.setAmountType(2);
-			data.setDurationMax(BigDecimal.valueOf(45));
-			if (actualDuration.compareTo(data.getDurationMax())<1){
-				map.put("code",true);
-				map.put("data",null);
-			}else {
-				map.put("code",false);
-				map.put("data",data);
+
+		}
+		TOrderNew tOrderNew = tOrderNewMapper.selectByPrimaryKey(in.getOrderNo());
+		List<TTaskMember> tTaskMembers = tTaskMemberMapper.selectByOrderNo(tOrderNew.getOrderNo());
+		String amountName=null;
+		String amountType=null;
+		if (tTaskMembers.size()<1){
+			if (tOrderNew.getTotalAmount().compareTo(BigDecimal.valueOf(1))<0){
+				amountName="本合同低于1万";
+				amountType="原则上技术人员不可下户";
+			}else if (tOrderNew.getTotalAmount().compareTo(BigDecimal.valueOf(3))<0){
+				amountName="本合同在1~3万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
+			}else if (tOrderNew.getTotalAmount().compareTo(BigDecimal.valueOf(5))<0){
+				amountName="本合同在3~5万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
+			}else if (tOrderNew.getTotalAmount().compareTo(BigDecimal.valueOf(10))<0){
+				amountName="本合同在5~10万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
 			}
-		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(10))<0) {
-			data.setAmountType(3);
-			data.setDurationMax(BigDecimal.valueOf(120));
+		}else {
+			int yearSum=0;
+			for (TTaskMember tTaskMember : tTaskMembers) {
+				if (tTaskMember.getYearSum()!=null&&tTaskMember.getYearSum()>yearSum){
+					yearSum=tTaskMember.getYearSum();
+				}
+			}
+			BigDecimal divide = tOrderNew.getTotalAmount().divide(BigDecimal.valueOf(yearSum),  BigDecimal.ROUND_HALF_UP);
+			if (divide.compareTo(BigDecimal.valueOf(1))<0){
+				amountName="此会员订单,本年度金额低于1万";
+				amountType="原则上技术人员不可下户";
+			}else if (divide.compareTo(BigDecimal.valueOf(3))<0){
+				amountName="此会员订单,本年度金额1~3万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
+			}else if (divide.compareTo(BigDecimal.valueOf(5))<0){
+				amountName="此会员订单,本年度金额3~5万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
+			}else if (divide.compareTo(BigDecimal.valueOf(10))<0){
+				amountName="此会员订单,本年度金额5~10万";
+				amountType="已超出合同可公出标准"+data.getDurationMax()+"小时";
+			}
+		}
+		data.setAmountName(amountName);
+		data.setAmountType(amountType);
+		if(useOyd.getStatus()==1){
+			map.put("code",true);
+			map.put("data",null);
+		}else {
+			data.setDurationMax(useOyd.getMaxDuration());
 			if (actualDuration.compareTo(data.getDurationMax())<1){
 				map.put("code",true);
 				map.put("data",null);
@@ -1936,11 +1969,8 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				map.put("code",false);
 				map.put("data",data);
 			}
-		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(10))>=0) {
-			data.setAmountType(4);
-			map.put("code",true);
-			map.put("data",null);
 		}
+
 		return map;