anderx 1 год назад
Родитель
Сommit
1e7f489d5f

+ 2 - 1
src/main/java/com/goafanti/common/dao/TOrderPublicReleaseCountMapper.java

@@ -5,7 +5,7 @@ import com.goafanti.common.model.TOrderPublicReleaseCount;
 /**
 * @author Administrator
 * @description 针对表【t_order_public_release_count(订单公出信息表)】的数据库操作Mapper
-* @createDate 2024-04-25 14:07:26
+* @createDate 2024-04-25 14:33:30
 * @Entity com.goafanti.common.model.TOrderPublicReleaseCount
 */
 public interface TOrderPublicReleaseCountMapper {
@@ -22,4 +22,5 @@ public interface TOrderPublicReleaseCountMapper {
 
     int updateByPrimaryKey(TOrderPublicReleaseCount record);
 
+    TOrderPublicReleaseCount selectByOrderNo(String orderNo);
 }

+ 26 - 9
src/main/java/com/goafanti/common/mapper/TOrderPublicReleaseCountMapper.xml

@@ -7,6 +7,7 @@
     <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="DOUBLE"/>
             <result property="maxDuration" column="max_duration" jdbcType="DOUBLE"/>
             <result property="actualDuration" column="actual_duration" jdbcType="DOUBLE"/>
             <result property="exceedDuration" column="exceed_duration" jdbcType="DOUBLE"/>
@@ -16,9 +17,9 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id,order_no,max_duration,
-        actual_duration,exceed_duration,people_count,
-        frequency,create_time
+        id,order_no,status,
+        max_duration,actual_duration,exceed_duration,
+        people_count,frequency,create_time
     </sql>
 
     <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -28,24 +29,28 @@
         where  id = #{id,jdbcType=INTEGER} 
     </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,max_duration
-        ,actual_duration,exceed_duration,people_count
-        ,frequency,create_time)
-        values (#{id,jdbcType=INTEGER},#{orderNo,jdbcType=VARCHAR},#{maxDuration,jdbcType=DOUBLE}
-        ,#{actualDuration,jdbcType=DOUBLE},#{exceedDuration,jdbcType=DOUBLE},#{peopleCount,jdbcType=INTEGER}
-        ,#{frequency,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP})
+        ( id,order_no,status
+        ,max_duration,actual_duration,exceed_duration
+        ,people_count,frequency,create_time
+        )
+        values (#{id,jdbcType=INTEGER},#{orderNo,jdbcType=VARCHAR},#{status,jdbcType=DOUBLE}
+        ,#{maxDuration,jdbcType=DOUBLE},#{actualDuration,jdbcType=DOUBLE},#{exceedDuration,jdbcType=DOUBLE}
+        ,#{peopleCount,jdbcType=INTEGER},#{frequency,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP}
+        )
     </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>
@@ -56,6 +61,7 @@
         <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=DOUBLE},</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>
@@ -70,6 +76,9 @@
                 <if test="orderNo != null">
                     order_no = #{orderNo,jdbcType=VARCHAR},
                 </if>
+                <if test="status != null">
+                    status = #{status,jdbcType=DOUBLE},
+                </if>
                 <if test="maxDuration != null">
                     max_duration = #{maxDuration,jdbcType=DOUBLE},
                 </if>
@@ -95,6 +104,7 @@
         update t_order_public_release_count
         set 
             order_no =  #{orderNo,jdbcType=VARCHAR},
+            status =  #{status,jdbcType=DOUBLE},
             max_duration =  #{maxDuration,jdbcType=DOUBLE},
             actual_duration =  #{actualDuration,jdbcType=DOUBLE},
             exceed_duration =  #{exceedDuration,jdbcType=DOUBLE},
@@ -103,4 +113,11 @@
             create_time =  #{createTime,jdbcType=TIMESTAMP}
         where   id = #{id,jdbcType=INTEGER} 
     </update>
+
+    <select id="selectByOrderNo"  resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from t_order_public_release_count
+        where  order_no =  #{orderNo,jdbcType=VARCHAR}
+    </select>
 </mapper>

+ 19 - 0
src/main/java/com/goafanti/common/model/TOrderPublicReleaseCount.java

@@ -19,6 +19,11 @@ public class TOrderPublicReleaseCount implements Serializable {
     private String orderNo;
 
     /**
+     * 状态0=无需限制,1需要限制
+     */
+    private Double status;
+
+    /**
      * 最大公出
      */
     private Double maxDuration;
@@ -79,6 +84,20 @@ public class TOrderPublicReleaseCount implements Serializable {
     }
 
     /**
+     * 状态0=无需限制,1需要限制
+     */
+    public Double getStatus() {
+        return status;
+    }
+
+    /**
+     * 状态0=无需限制,1需要限制
+     */
+    public void setStatus(Double status) {
+        this.status = status;
+    }
+
+    /**
      * 最大公出
      */
     public Double getMaxDuration() {

+ 69 - 0
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -30,6 +30,7 @@ import com.goafanti.order.service.OrderNewService;
 import com.goafanti.order.service.OrderProjectService;
 import com.goafanti.organization.bo.*;
 import com.goafanti.patent.service.PatentNewService;
+import com.goafanti.weChat.bo.OutPublicRelease;
 import groovy.transform.Synchronized;
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
@@ -139,6 +140,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	private AdminUserCountMapper adminUserCountMapper;
 	@Autowired
 	private FinanceCountMapper financeCountMapper;
+	@Autowired
+	private PublicReleaseMapper publicReleaseMapper;
+	@Autowired
+	private TOrderPublicReleaseCountMapper tOrderPublicReleaseCountMapper;
 
 
 	@Value(value = "${upload.path}")
@@ -606,6 +611,9 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			if (str.length()>0)t.setExamineName(str.substring(0,str.length()-1));
 			TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(t2.getOrderNo());
 			pushGeneralSendNoticeAndEmail(aids, type,order, TokenManager.getAdminId(),t.getApproval());
+			//计算公出统计
+			pushOrderPublicReleaseCount(t.getOrderNo(),null);
+
 		}
 		//驳回重新发起,需要刷新当天和今天
 		boolean newOrderFlag=false;
@@ -639,6 +647,67 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		return 1;
 	}
 
+	private void pushOrderPublicReleaseCount(String orderNo,Integer prId) {
+			List<PublicRelease> list = publicReleaseMapper.selectByOrderNo(orderNo);
+			TOrderNewBo t = tOrderNewMapper.getOrderNewDetail(orderNo);
+			OutPublicRelease outPublicRelease=null;
+			BigDecimal durationCount = BigDecimal.ZERO;
+			int count=0;
+			List<String> peopleList = new ArrayList<>();
+
+			for (PublicRelease e : list) {
+				durationCount=durationCount.add(BigDecimal.valueOf(e.getDuration()));
+				if (!peopleList.contains(e.getAid())){
+					peopleList.add(e.getAid());
+				}
+				count++;
+			}
+
+		TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(orderNo);
+			if (out==null){
+				out=new TOrderPublicReleaseCount();
+				out.setOrderNo(orderNo);
+				out.setMaxDuration(0d);
+				out.setActualDuration(durationCount.doubleValue());
+				out.setPeopleCount(peopleList.size());
+				out.setFrequency(count);
+				pushMaxDuration(t,out);
+				tOrderPublicReleaseCountMapper.insertSelective(out);
+			}else {
+				out.setOrderNo(orderNo);
+				out.setMaxDuration(0d);
+				out.setActualDuration(durationCount.doubleValue());
+
+				out.setPeopleCount(peopleList.size());
+				out.setFrequency(count);
+				pushMaxDuration(t,out);
+				tOrderPublicReleaseCountMapper.updateByPrimaryKeySelective(out);
+			}
+
+
+	}
+
+	private void pushMaxDuration(TOrderNewBo t,TOrderPublicReleaseCount out ) {
+		BigDecimal res=BigDecimal.ZERO;
+		int status=1;
+		if (t.getTotalAmount().compareTo(BigDecimal.valueOf(1)) < 0) {
+
+		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(3))<0) {
+			res=BigDecimal.valueOf(15);
+
+		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(5))<0) {
+			res=BigDecimal.valueOf(45);
+
+		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(10))<0) {
+			res=BigDecimal.valueOf(120);
+
+		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(10))>=0) {
+			status=0;
+		}
+		out.setMaxDuration(res.doubleValue());
+		out.setStatus(status);
+
+	}
 
 
 	@Override