소스 검색

欠款列表修改

anderx 4 년 전
부모
커밋
e9e1db2cf9

+ 60 - 0
src/main/java/com/goafanti/common/bo/ErrorDunListBo.java

@@ -0,0 +1,60 @@
+package com.goafanti.common.bo;
+
+public class ErrorDunListBo {
+    private String orderNo;
+    private String orderReceivables;
+    private String orderRrrears;
+    private String money;
+    private String createTime;
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getOrderReceivables() {
+        return orderReceivables;
+    }
+
+    public void setOrderReceivables(String orderReceivables) {
+        this.orderReceivables = orderReceivables;
+    }
+
+    public String getOrderRrrears() {
+        return orderRrrears;
+    }
+
+    public void setOrderRrrears(String orderRrrears) {
+        this.orderRrrears = orderRrrears;
+    }
+
+    public String getMoney() {
+        return money;
+    }
+
+    public void setMoney(String money) {
+        this.money = money;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return "ErrorDunListBo{" +
+                "orderNo='" + orderNo + '\'' +
+                ", orderReceivables='" + orderReceivables + '\'' +
+                ", orderRrrears='" + orderRrrears + '\'' +
+                ", money='" + money + '\'' +
+                ", createTime='" + createTime + '\'' +
+                '}';
+    }
+}

+ 6 - 1
src/main/java/com/goafanti/common/dao/TOrderMidMapper.java

@@ -1,5 +1,6 @@
 package com.goafanti.common.dao;
 
+import com.goafanti.common.bo.ErrorDunListBo;
 import com.goafanti.common.model.TOrderMid;
 import org.apache.ibatis.annotations.Param;
 
@@ -40,4 +41,8 @@ public interface TOrderMidMapper {
     int updateByOrderNo(TOrderMid tm);
 
     void updateByList(List<String> addList2);
-}
+
+    List<ErrorDunListBo> selectErrorDun();
+
+    void updateErrorDun();
+}

+ 34 - 19
src/main/java/com/goafanti/common/mapper/TOrderMidMapper.xml

@@ -26,13 +26,13 @@
     <result column="legal_affairs_status" jdbcType="INTEGER" property="legalAffairsStatus" />
   </resultMap>
   <sql id="Base_Column_List">
-    id, order_no, salesman_id, finance_id, salesman_name, finance_name, final_receivables, 
-    final_Receivables_time, invoice_amount, create_time, buyer_name, order_receivables, 
-    order_arrears, payment_amount, cost_amount, dep_name, province_name, legal_affairs, 
+    id, order_no, salesman_id, finance_id, salesman_name, finance_name, final_receivables,
+    final_Receivables_time, invoice_amount, create_time, buyer_name, order_receivables,
+    order_arrears, payment_amount, cost_amount, dep_name, province_name, legal_affairs,
     dun_start_time, legal_affairs_type, operation_time, legal_affairs_status
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
-    select 
+    select
     <include refid="Base_Column_List" />
     from t_order_mid
     where id = #{id,jdbcType=INTEGER}
@@ -42,21 +42,21 @@
     where id = #{id,jdbcType=INTEGER}
   </delete>
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderMid" useGeneratedKeys="true">
-    insert into t_order_mid (order_no, salesman_id, finance_id, 
-      salesman_name, finance_name, final_receivables, 
-      final_Receivables_time, invoice_amount, 
-      create_time, buyer_name, order_receivables, 
-      order_arrears, payment_amount, cost_amount, 
-      dep_name, province_name, legal_affairs, 
-      dun_start_time, legal_affairs_type, operation_time, 
+    insert into t_order_mid (order_no, salesman_id, finance_id,
+      salesman_name, finance_name, final_receivables,
+      final_Receivables_time, invoice_amount,
+      create_time, buyer_name, order_receivables,
+      order_arrears, payment_amount, cost_amount,
+      dep_name, province_name, legal_affairs,
+      dun_start_time, legal_affairs_type, operation_time,
       legal_affairs_status)
-    values (#{orderNo,jdbcType=VARCHAR}, #{salesmanId,jdbcType=VARCHAR}, #{financeId,jdbcType=VARCHAR}, 
-      #{salesmanName,jdbcType=VARCHAR}, #{financeName,jdbcType=VARCHAR}, #{finalReceivables,jdbcType=DECIMAL}, 
-      #{finalReceivablesTime,jdbcType=TIMESTAMP}, #{invoiceAmount,jdbcType=DECIMAL}, 
-      #{createTime,jdbcType=TIMESTAMP}, #{buyerName,jdbcType=VARCHAR}, #{orderReceivables,jdbcType=DECIMAL}, 
-      #{orderArrears,jdbcType=DECIMAL}, #{paymentAmount,jdbcType=DECIMAL}, #{costAmount,jdbcType=DECIMAL}, 
-      #{depName,jdbcType=VARCHAR}, #{provinceName,jdbcType=VARCHAR}, #{legalAffairs,jdbcType=INTEGER}, 
-      #{dunStartTime,jdbcType=TIMESTAMP}, #{legalAffairsType,jdbcType=INTEGER}, #{operationTime,jdbcType=DATE}, 
+    values (#{orderNo,jdbcType=VARCHAR}, #{salesmanId,jdbcType=VARCHAR}, #{financeId,jdbcType=VARCHAR},
+      #{salesmanName,jdbcType=VARCHAR}, #{financeName,jdbcType=VARCHAR}, #{finalReceivables,jdbcType=DECIMAL},
+      #{finalReceivablesTime,jdbcType=TIMESTAMP}, #{invoiceAmount,jdbcType=DECIMAL},
+      #{createTime,jdbcType=TIMESTAMP}, #{buyerName,jdbcType=VARCHAR}, #{orderReceivables,jdbcType=DECIMAL},
+      #{orderArrears,jdbcType=DECIMAL}, #{paymentAmount,jdbcType=DECIMAL}, #{costAmount,jdbcType=DECIMAL},
+      #{depName,jdbcType=VARCHAR}, #{provinceName,jdbcType=VARCHAR}, #{legalAffairs,jdbcType=INTEGER},
+      #{dunStartTime,jdbcType=TIMESTAMP}, #{legalAffairsType,jdbcType=INTEGER}, #{operationTime,jdbcType=DATE},
       #{legalAffairsStatus,jdbcType=INTEGER})
   </insert>
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderMid" useGeneratedKeys="true">
@@ -517,6 +517,7 @@
       </if>
     </if>
   </select>
+
   <update id="updateByList">
     update t_order_mid
     set legal_affairs=1,legal_affairs_type =0
@@ -526,4 +527,18 @@
     </foreach>
     )
   </update>
-</mapper>
+
+
+  <select id="selectErrorDun" resultType="com.goafanti.common.bo.ErrorDunListBo">
+    select a.order_no orderNo,a.order_receivables orderReceivables ,a.order_arrears orderArrears,b.money,a.create_time createTime
+    from t_order_mid a left join (select order_no ,ifnull(sum(money),0)money from new_order_dun where status =1 group by order_no)b
+        on a.order_no =b.order_no
+    where a.order_receivables !=b.money order by a.create_time;
+  </select>
+  <update id="updateErrorDun">
+    update t_order_mid a ,(select order_no ,ifnull(sum(money),0)money from new_order_dun where status =1 group by order_no)b,
+      t_order_new c
+    set a.order_receivables=b.money,a.order_arrears =(b.money-c.settlement_amount)
+    where a.order_no =b.order_no and a.order_no =c.order_no and a.order_receivables !=b.money;
+  </update>
+</mapper>

+ 6 - 3
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1429,9 +1429,9 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   	<if test="depId != null">
   	and b.order_dep= #{depId,jdbcType=VARCHAR}
   	</if>
-  	<if test="aid != null">
-  	and b.salesman_id= #{aid,jdbcType=VARCHAR}
-  	</if>
+    <if test="shiroType !=3 and aid != null">
+      and b.salesman_id= #{aid,jdbcType=VARCHAR}
+    </if>
   	<if test="starTime !=null and endTime !=null">
   	and b.sign_time between #{starTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR}
   	</if>
@@ -1454,6 +1454,9 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   	<if test="shiroType == 2 and fid !=null">
   	 and tm.finance_id in (select id from admin where superior_id= #{fid,jdbcType=VARCHAR})
   	</if>
+    <if test="shiroType !=3 and aid != null">
+      and b.salesman_id= #{aid,jdbcType=VARCHAR}
+    </if>
     <if test="name != null">
       and c.nickname like CONCAT('%',#{name,jdbcType=VARCHAR},'%')
     </if>

+ 58 - 35
src/main/java/com/goafanti/common/task/OrderDunTask.java

@@ -7,6 +7,7 @@ import java.util.*;
 
 import javax.mail.MessagingException;
 
+import com.goafanti.common.bo.ErrorDunListBo;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.service.LegalAffairsService;
 import org.slf4j.Logger;
@@ -117,6 +118,7 @@ public class OrderDunTask {
 	 * 询处理需要新催款的信息
 	 */
 	@RequestMapping(value = "/open/updateNewOrderDun", method = RequestMethod.GET)
+	@Transactional
 	public void updateNewOrderDun(){
   		try {
   			LoggerUtils.debug(logger, "======================新催款任务轮询启动===================");
@@ -127,19 +129,15 @@ public class OrderDunTask {
 			for (OutNewOrderDunBo o : list) {
 				now.setTime(date);
 				now2.setTime(o.getCreateTime());
-				//特批首期款 计算出触发时间
-				if (o.getApproval()!=null&&
-						(o.getApproval()==1||o.getApproval()==2)&&
-							o.getDunType()==1&&o.getWaitDay()!=null) {
+				//计算特批首期款 特批通过 为催款为首期款 催款时间不为空则计算触发
+				if (o.getApproval()!=null&& o.getApproval()==2&& o.getDunType()==1&&o.getWaitDay()!=null) {
 						now2.add(Calendar.DATE, o.getWaitDay());
-						//会员-期限 计算触发时间
+					updateOrderDun(o,now,now2);
+				//会员-期限计算
 				}else if(o.getProjectType().equals(OrderDunProjectType.HY.getCode())&&o.getDunType()==2) {
 					now2.add(Calendar.DATE, o.getEffectiveCount()*180);
 					CalendarTimeCleared(now2);
-					if (now.getTimeInMillis() > now2.getTimeInMillis()) {//当前时间大于计算后时间则触发
-						updateOrderDun(o);
-						Thread.sleep(2000);
-					}
+					updateOrderDun(o,now,now2);
 				//财税-期限 计算时间
 				} else if(o.getProjectType().equals(OrderDunProjectType.CS.getCode())&&o.getDunType()==2) {
 					//获取年
@@ -150,16 +148,15 @@ public class OrderDunTask {
 					if(month>9)year=year+2;
 					now2.set(year, 5, 1);
 					CalendarTimeCleared(now2);
+					updateOrderDun(o,now,now2);
 				//自定义 超过设置的时间则触发
 				}else if (o.getDunType()==0) {
 					now2.setTime(o.getCustomizeTime());
 					CalendarTimeCleared(now);
-				}
-				if (now.getTimeInMillis() >= now2.getTimeInMillis()) {
-					updateOrderDun(o);
-					Thread.sleep(2000);
+					updateOrderDun(o,now,now2);
 				}
 			}
+			calibrationDun();
   		} catch (Exception e) {
   			EmailBo emailBo = new EmailBo( "催款处理失败",  AFTConstants.ADMIN_EMAIL,  "超管", "平台",  "系统", devName+"催款处理失败");
   			asyncUtils.send(emailBo);
@@ -167,6 +164,22 @@ public class OrderDunTask {
 		}
   	}
 
+	/**
+	 * 如果有不对的数据就校准数据
+	 */
+	private void calibrationDun() {
+		List<ErrorDunListBo> el = tOrderMidMapper.selectErrorDun();
+		if (!el.isEmpty()){
+			StringBuffer sb=new StringBuffer();
+			for (ErrorDunListBo e : el) {
+				sb.append(e.toString());
+			}
+			EmailBo emailBo=new EmailBo("催款异常核对",AFTConstants.ADMIN_EMAIL,sb.toString());
+			asyncUtils.send(emailBo);
+			tOrderMidMapper.updateErrorDun();
+		}
+	}
+
 
 	/**
 	 * 处理付款催款
@@ -338,30 +351,40 @@ public class OrderDunTask {
 
 	/**
 	 * 定时催款触发
- 	 * @param t
+	 * 如果当前时间大于等于触发时间才触发流程
+	 * @param t
+	 * @param now 当前时间
+	 * @param now2 触发时间
 	 */
-	private void updateOrderDun(OutNewOrderDunBo t) {
-		InputNewOrderDunBo o=new InputNewOrderDunBo();
-		TOrderNew orderNew=tOrderNewMapper.selectByPrimaryKey(t.getOrderNo());
-		Date date = new Date();
-		o.setId(t.getId());
-		o.setStatus(1);
-		o.setStartTime(date);
-		if (t.getMoney()==null)t.setMoney(new BigDecimal(0));
-		TOrderMid tm=orderNewService.pushOrderMidDun(t.getOrderNo(),orderNew.getSettlementAmount(),date,t);
-		newOrderDunService.updateDun(o);
-		TArrearsDun td=new TArrearsDun();
-		td.setOrderArrears(tm.getOrderArrears());
-		td.setOrderReceivables(tm.getOrderReceivables());
-		if (tArrearsDunMapper.checkOrderNo(t.getOrderNo(),null)<1) {
-			td.setOrderNo(t.getOrderNo());
-			tArrearsDunMapper.insertSelective(td);
-		}else if(tArrearsDunMapper.checkOrderNo(t.getOrderNo(),0)>0){
-			Integer i=tArrearsDunMapper.selectByStatus(t.getOrderNo(), 0);
-			td.setId(i);
-			tArrearsDunMapper.updateByPrimaryKeySelective(td);
+	private void updateOrderDun(OutNewOrderDunBo t,Calendar now,Calendar now2) {
+		if (now.getTimeInMillis() >= now2.getTimeInMillis()) {
+			InputNewOrderDunBo o=new InputNewOrderDunBo();
+			TOrderNew orderNew=tOrderNewMapper.selectByPrimaryKey(t.getOrderNo());
+			Date date = new Date();
+			o.setId(t.getId());
+			o.setStatus(1);
+			o.setStartTime(date);
+			if (t.getMoney()==null)t.setMoney(new BigDecimal(0));
+			TOrderMid tm=orderNewService.pushOrderMidDun(t.getOrderNo(),orderNew.getSettlementAmount(),date,t);
+			newOrderDunService.updateDun(o);
+			TArrearsDun td=new TArrearsDun();
+			td.setOrderArrears(tm.getOrderArrears());
+			td.setOrderReceivables(tm.getOrderReceivables());
+			if (tArrearsDunMapper.checkOrderNo(t.getOrderNo(),null)<1) {
+				td.setOrderNo(t.getOrderNo());
+				tArrearsDunMapper.insertSelective(td);
+			}else if(tArrearsDunMapper.checkOrderNo(t.getOrderNo(),0)>0){
+				Integer i=tArrearsDunMapper.selectByStatus(t.getOrderNo(), 0);
+				td.setId(i);
+				tArrearsDunMapper.updateByPrimaryKeySelective(td);
+			}
+			orderNewService.addTimingTaskNewDunNoticAndSendEmail(orderNew, t);
+			try {
+				Thread.sleep(2000);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
 		}
-		orderNewService.addTimingTaskNewDunNoticAndSendEmail(orderNew, t);
 	}
 
 

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

@@ -33,7 +33,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.stereotype.Service;
@@ -139,17 +138,6 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	@Autowired
 	private BusinessProjectMapper businessProjectMapper;
 
-	@Value(value = "${mobileRemindCodeTemplate}")
-	private String					mobileRemindCodeTemplate	= null;
-	@Value(value = "${upload.path}")
-	private String 					uploadPath 			= null;
-
-	@Value(value = "${accessKey}")
-	private String					accessKey			= null;
-
-	@Value(value = "${accessSecret}")
-	private String					accessSecret		= null;
-
 	Logger							logger	= LoggerFactory.getLogger(OrderNewServiceImpl.class);
 
 	@Override
@@ -352,7 +340,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			t.setBuyerId(t2.getBuyerId());
 			updateOrderMid(t);
 			List<String> aids = new ArrayList<>();
-			Integer type=null;
+			Integer type;
 			AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
 			aids.addAll(adminMapper.listNameByDepAndName(a.getDepartmentId(), "营销管理员"));
 			type=NoticeStatus.ORDER_START.getCode();
@@ -424,7 +412,6 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
 	/**
 	 * 新建合同编号,优先获取闲置合同编号,否则按年份生成编号
-	 * @param t
 	 */
 	private void createContractNo(TOrderNew t) {
 		//根据订单部门或许合同编号前缀