Browse Source

催款节点触发开发

Signed-off-by: anderx <312518615@qq.com>
anderx 6 years ago
parent
commit
3d6341ba0f

+ 10 - 6
src/main/java/com/goafanti/common/bo/EmailBo.java

@@ -56,7 +56,6 @@ public class EmailBo {
 	 * @param patentNo
 	 * @param amount
 	 * @param date
-	 * @param type 0专利提醒 1催款提醒
 	 */
 	public  EmailBo(String subject, String address, String addressee,
 			String deptname, String sender,String patentName,String patentNo,String amount,String date) {
@@ -73,21 +72,26 @@ public class EmailBo {
 	 *  
 	 * @param subject	
 	 * @param address	收件地址
-	 * @param addressee 	收件人
+	 * @param addressee 	收件人邮箱
 	 * @param deptname		部门
 	 * @param sender		发起人
 	 * @param content		内容
+	 * @param orderNo		订单编号
+	 * @param date		时间
+	 * @param userName		用户名称
+	 * @param AdminName		接收人名字
+	 * @param type		类型 0通用 1催款
 	 * @return 
 	 */
 	public  EmailBo(String subject, String address, String deptname, String sender,
-			String content , String orderNo,String date ,String dunStatusName,String userName,Integer type) {
+			String content , String orderNo,String date ,String dunStatusName,String adminName,String userName,Integer type) {
 		this.subject = subject;
 		this.address = address;
 		this.addressee = "";
 		this.deptname = deptname;
 		this.sender = sender;
 		if(type==0)this.content = setGeneralFormat();
-		if(type==1)this.content=setDunFormat( addressee, sender, deptname,orderNo, date , dunStatusName,userName);
+		if(type==1)this.content=setDunFormat( addressee, sender, deptname,orderNo, date , dunStatusName,adminName,userName);
 	}
 
 
@@ -136,7 +140,7 @@ public class EmailBo {
         		+ "<div>" + this.content + "</div>"
         		+ "<div>" + this.end + "</div>";
     }
-	public String setDunFormat(String addressee,String sender,String deptname,String orderNo,String date ,String dunStatusName,
+	public String setDunFormat(String addressee,String sender,String deptname,String orderNo,String date ,String dunStatusName,String adminName,
 			String userName) {
 		String str="<table width=\"800\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#ffffff\" style=\"font-family:'Microsoft YaHei';\">\r\n" + 
 				"    		<tbody><tr>\r\n" + 
@@ -164,7 +168,7 @@ public class EmailBo {
 				"		            \r\n" + 
 				"		        <table width=\"800\" border=\"0\" align=\"left\" cellpadding=\"0\" cellspacing=\"0\" style=\" border:1px solid #edecec; border-top:none; padding:0 20px;font-size:14px;color:#333333;\">\r\n" + 
 				"	               		<tbody><tr>\r\n" + 
-				"                <td width=\"760\" height=\"56\" border=\"0\" align=\"left\" colspan=\"2\" style=\" font-size:16px;vertical-align:bottom;\">亲爱的"+sender+":</td>\r\n" + 
+				"                <td width=\"760\" height=\"56\" border=\"0\" align=\"left\" colspan=\"2\" style=\" font-size:16px;vertical-align:bottom;\">亲爱的"+adminName+":</td>\r\n" + 
 				"              </tr>\r\n" + 
 				"               <tr>\r\n" + 
 				"                <td width=\"760\" height=\"30\" border=\"0\" align=\"left\" colspan=\"2\" style=\"text-indent: 2em\">您好!</td>\r\n" + 

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

@@ -78,4 +78,6 @@ public interface NewOrderDunMapper {
 
 	List<OutNewOrderDunBo> selectAllOrderDun();
 
+	List<OutNewOrderDunBo> selectByTid(String id);
+
 }

+ 5 - 0
src/main/java/com/goafanti/common/mapper/NewOrderDunMapper.xml

@@ -399,4 +399,9 @@
   from new_order_dun a left join  t_order_new b on a.order_no=b.order_no
   where 1=1 and b.approval=2
   </select>
+  <select id="selectByTid"  resultType="com.goafanti.order.bo.OutNewOrderDunBo">
+    select a.id, a.order_no orderNo, a.tid, a.project_type projectType, a.dun_type dunType, a.wait_day waitDay, 
+  	a.effective_year effectiveYear, a.aid, a.create_time createTime from new_order_dun a
+    where tid = #{tid} and status=0
+  </select>
 </mapper>

+ 61 - 0
src/main/java/com/goafanti/order/enums/OrderDunProjectType.java

@@ -0,0 +1,61 @@
+package com.goafanti.order.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum OrderDunProjectType {
+	CGZH(1,"成果转化"),
+	COMMON(2,"通用"),
+	KJXM(3,"科技项目"),
+	KJJR(4,"科技金融"),
+	CS(5,"财税"),
+	HY(6,"会员"),
+	RJKF(7,"软件开发"),
+	ZSCQ(8,"知识产权"),
+	INVALID(99,"未知");
+	
+	private OrderDunProjectType(Integer code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	private static Map<Integer, OrderDunProjectType> status = new HashMap<Integer, OrderDunProjectType>();
+
+	static {
+		for (OrderDunProjectType value : OrderDunProjectType.values()) {
+			status.put(value.getCode(), value);
+		}
+	}
+	public static OrderDunProjectType getStatus(Integer code) {
+		if (containsType(code)) {
+			return status.get(code);
+		}
+		return INVALID;
+	}
+	public static String getValueByCode(Integer code){
+        for(OrderDunProjectType orderType:OrderDunProjectType.values()){
+            if(code.equals(orderType.getCode())){
+                return orderType.getDesc();
+            }
+        }
+        return  INVALID.getDesc();
+    }
+	public static boolean containsType(Integer code) {
+		return status.containsKey(code);
+	}
+	
+	private Integer	code;
+	private String	desc;
+	public Integer getCode() {
+		return code;
+	}
+	public void setCode(Integer code) {
+		this.code = code;
+	}
+	public String getDesc() {
+		return desc;
+	}
+	public void setDesc(String desc) {
+		this.desc = desc;
+	}
+}

+ 69 - 0
src/main/java/com/goafanti/order/enums/OrderProjectStatus.java

@@ -0,0 +1,69 @@
+package com.goafanti.order.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum OrderProjectStatus {
+	//项目状态 0-项目待提交 1-项目已提交,2-项目评审,3-项目立项,4-项目公示,5-项目抽查,6-项目备案,
+	//7-项目下证,8-项目验收,9-项目拨款 10- 项目进度10% 11- 项目进度30% 12- 项目进度70%
+	XMDTJ(0,"项目待提交"),
+	XMYTJ(1,"项目已提交"),
+	XMPS(2,"项目评审"),
+	XMLX(3,"项目立项"),
+	XMGS(4,"项目公示"),
+	XMCC(5,"项目抽查"),
+	XMBA(6,"项目备案"),
+	XMXZ(7,"项目下证"),
+	XMYS(8,"项目验收"),
+	XMBK(9,"项目拨款"),
+	XMJD10(10,"项目进度10%"),
+	XMJD30(11,"项目进度30%"),
+	XMJD70(12,"项目进度70%"),
+	INVALID(99,"未知");
+	
+	
+	private OrderProjectStatus(Integer code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	private static Map<Integer, OrderProjectStatus> status = new HashMap<Integer, OrderProjectStatus>();
+
+	static {
+		for (OrderProjectStatus value : OrderProjectStatus.values()) {
+			status.put(value.getCode(), value);
+		}
+	}
+	public static OrderProjectStatus getStatus(Integer code) {
+		if (containsType(code)) {
+			return status.get(code);
+		}
+		return INVALID;
+	}
+	public static String getValueByCode(Integer code){
+        for(OrderProjectStatus orderType:OrderProjectStatus.values()){
+            if(code.equals(orderType.getCode())){
+                return orderType.getDesc();
+            }
+        }
+        return  INVALID.getDesc();
+    }
+	public static boolean containsType(Integer code) {
+		return status.containsKey(code);
+	}
+	
+	private Integer	code;
+	private String	desc;
+	public Integer getCode() {
+		return code;
+	}
+	public void setCode(Integer code) {
+		this.code = code;
+	}
+	public String getDesc() {
+		return desc;
+	}
+	public void setDesc(String desc) {
+		this.desc = desc;
+	}
+}

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

@@ -21,6 +21,8 @@ import javax.mail.MessagingException;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.converters.DateConverter;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
@@ -35,6 +37,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.stereotype.Service;
 
+import com.alibaba.druid.sql.parser.Token;
 import com.alibaba.fastjson.JSON;
 import com.goafanti.admin.bo.AdminListBo;
 import com.goafanti.common.bo.EmailBo;
@@ -548,7 +551,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
 
 	public void addNewDunNoticAndSendEmail(TOrderNew t2, OutNewOrderDunBo o) {
-		AdminListBo a = adminMapper.getDeptNameByAid(t2.getSalesmanId());
+		AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
 		TOrderNewBo b  = tOrderNewMapper.getSaleIdByOno(t2.getOrderNo());
 		addNotic(t2.getOrderNo(),NoticeStatus.ORDER_DUN.getCode(),a, b);
 		try {
@@ -563,24 +566,25 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		LoggerUtils.debug(logger, "======================邮件信息发送===================");
 		String content = "<div>客户名称: "+ b.getUserName() +"</div><div>订单编号: " + orderNo + "</div>";
 		OutNewOrderDunBo ob=new OutNewOrderDunBo();
-			if(dunId!=null) {
-				try {
-					BeanUtils.copyProperties(ob, newOrderDunMapper.selectByPrimaryKey(dunId));
-				} catch (IllegalAccessException | InvocationTargetException e) {
-					e.printStackTrace();
-				}
+		if(dunId!=null)
+			try {
+				ConvertUtils.register(new DateConverter(null), java.util.Date.class);
+				BeanUtils.copyProperties(ob, newOrderDunMapper.selectByPrimaryKey(dunId));
+			} catch (IllegalAccessException | InvocationTargetException e) {
+				e.printStackTrace();
 			}
+		AdminListBo a2 = adminMapper.getDeptNameByAid(b.getSalesmanId());
 			//发送驳回邮件
 							//String subject, String address, String deptname, String sender,
 			//String content , String orderNo,String date ,String dunStatusName,Integer type
 			EmailBo bo = new EmailBo("催收通知", b.getEmail(),   a.getDepartmentName(), a.getName(),
-					content, orderNo,new SimpleDateFormat("yyyy-MM-dd").format(ob.getCreateTime()),ob.getDunTypeName(),b.getUserName(),1);
+					content, orderNo,new SimpleDateFormat("yyyy-MM-dd").format(ob.getCreateTime()),ob.getDunTypeName(),a2.getName(),b.getUserName(),1);
 			if(StringUtils.isNotBlank(b.getEmail())) {
 				SendEmailUtil.getInstance().patentSend(bo);
 			}
 			LoggerUtils.debug(logger, "=========================================发送邮件成功");
-	}
 
+	}
 
 
 	private void addBackOrder(String orderNo, String reason) {
@@ -1078,7 +1082,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if(StringUtils.isNotBlank(adminIds)) {
 			adminIds=adminIds.substring(0, adminIds.length()-1);
 			EmailBo bo = new EmailBo(NoticeStatus.getValueByCode(type), adminIds, a.getDepartmentName(), a.getName(), "请登录查看"
-					,null,null,null,null,0);
+					,null,null,null,null,null,0);
 				try {
 					//使用专利邮件模板
 					SendEmailUtil.getInstance().patentSend(bo);

+ 30 - 5
src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java

@@ -15,7 +15,6 @@ import java.util.UUID;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.record.EOFRecord;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -28,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 import com.goafanti.common.bo.Error;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.AdminMapper;
+import com.goafanti.common.dao.NewOrderDunMapper;
 import com.goafanti.common.dao.OrganizationContactBookMapper;
 import com.goafanti.common.dao.OrganizationIdentityMapper;
 import com.goafanti.common.dao.TOrderBonusMapper;
@@ -59,16 +59,15 @@ import com.goafanti.common.utils.ExportExcelUtil;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
-import com.goafanti.order.bo.NewOderCahngeListBo;
+import com.goafanti.order.bo.OutNewOrderDunBo;
 import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.bo.TOrderTaskDetailBo;
 import com.goafanti.order.bo.TOrderTaskListBo;
 import com.goafanti.order.bo.TaskLogBo;
 import com.goafanti.order.bo.TaskProgressBo;
 import com.goafanti.order.enums.BonusSubject;
-import com.goafanti.order.enums.OrderChangeType;
-import com.goafanti.order.enums.OrderNewState;
-import com.goafanti.order.enums.OrderType;
+import com.goafanti.order.enums.OrderDunProjectType;
+import com.goafanti.order.enums.OrderProjectStatus;
 import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.order.enums.ProjectNewStage;
 import com.goafanti.order.service.OrderNewService;
@@ -102,6 +101,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	private TaskHoursCountMapper	taskHoursCountMapper;
 	@Autowired
 	private AdminMapper	adminMapper;
+	@Autowired
+	private NewOrderDunMapper	newOrderDunMapper;
 	@Value(value = "${upload.path}")
 	private String 					uploadPath 			= null;
 	
@@ -298,6 +299,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 				taskLogMapper.insertSelective(tl);
 			}
 		}
+		//项目触发发催款
+		pushOrderDun(t);
 		
 		if (task2.getSuperId()!=null) {//是否有父项目
 			TOrderTask task3 =tOrderTaskMapper.selectBySuperId(task2.getSuperId());
@@ -312,6 +315,28 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		return 1;
 	}
 
+	private void pushOrderDun(TOrderTaskDetailBo t) {
+		List<OutNewOrderDunBo> list=newOrderDunMapper.selectByTid(t.getId());
+		for (OutNewOrderDunBo ob : list) {
+			if (ob!=null) {
+				
+				if((ob.getProjectType()==OrderDunProjectType.CGZH.getCode()&&ob.getDunType()==2&&
+						t.getProjectStatus()==OrderProjectStatus.XMYS.getCode())||
+					(ob.getProjectType()==OrderDunProjectType.COMMON.getCode()&&ob.getDunType()==2&&
+						t.getProjectStatus()==OrderProjectStatus.XMGS.getCode())||
+					(ob.getProjectType()==OrderDunProjectType.COMMON.getCode()&&ob.getDunType()==3&&
+						t.getProjectStatus()==OrderProjectStatus.XMXZ.getCode())) {
+					TOrderNew tn=tOrderNewMapper.selectByPrimaryKey(t.getOrderNo());
+					orderNewService.addNewDunNoticAndSendEmail(tn,ob);
+					ob.setStatus(1);
+					ob.setStartTime(new Date());
+					newOrderDunMapper.updateByPrimaryKey(ob);
+				}
+			}
+		}
+		
+		
+	}
 	private void checkSettlementAward(TOrderNew tn,TOrderTask task) {
 		if(task.getTaskStatus()==TaskState.COMPLETE.getCode()&&tn.getTotalAmount().compareTo(tn.getSettlementAmount())==0) {
 			List<TOrderTask> l = tOrderTaskMapper.getReceiverByOid(tn.getOrderNo());