Kaynağa Gözat

客服模块开发

anderx 4 yıl önce
ebeveyn
işleme
14b6c66cf1
27 değiştirilmiş dosya ile 296 ekleme ve 94 silme
  1. 38 0
      src/main/java/com/goafanti/common/bo/UserOrderTask.java
  2. 2 1
      src/main/java/com/goafanti/common/dao/TOrderLogMapper.java
  3. 2 1
      src/main/java/com/goafanti/common/dao/TOrderTaskMapper.java
  4. 2 1
      src/main/java/com/goafanti/common/enums/OrderLogProcess.java
  5. 2 2
      src/main/java/com/goafanti/common/mapper/TOrderLogMapper.xml
  6. 10 1
      src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml
  7. 5 5
      src/main/java/com/goafanti/common/mapper/UserServiceFollowMapper.xml
  8. 17 16
      src/main/java/com/goafanti/common/mapper/UserServiceMapper.xml
  9. 4 2
      src/main/java/com/goafanti/common/task/OrderDunTask.java
  10. 4 1
      src/main/java/com/goafanti/common/task/PatentTask.java
  11. 4 1
      src/main/java/com/goafanti/common/task/ReleaseUserTask.java
  12. 24 0
      src/main/java/com/goafanti/common/utils/AsyncUtils.java
  13. 0 1
      src/main/java/com/goafanti/common/utils/SendEmailUtil.java
  14. 0 1
      src/main/java/com/goafanti/order/controller/OrderProjectApiController.java
  15. 2 2
      src/main/java/com/goafanti/order/service/OrderProjectService.java
  16. 8 3
      src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java
  17. 7 6
      src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java
  18. 6 2
      src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java
  19. 4 3
      src/main/java/com/goafanti/organization/service/impl/ThirdPartyCompanyServiceImpl.java
  20. 5 1
      src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java
  21. 49 37
      src/main/java/com/goafanti/user/bo/OutOrderUserService.java
  22. 7 0
      src/main/java/com/goafanti/user/bo/OutUserServiceFollow.java
  23. 18 1
      src/main/java/com/goafanti/user/controller/UserServiceApiController.java
  24. 3 0
      src/main/java/com/goafanti/user/service/UserServiceService.java
  25. 68 4
      src/main/java/com/goafanti/user/service/impl/UserServiceServiceImpl.java
  26. 1 1
      src/main/resources/props/config_local.properties
  27. 4 1
      src/main/resources/spring/spring-mvc.xml

+ 38 - 0
src/main/java/com/goafanti/common/bo/UserOrderTask.java

@@ -0,0 +1,38 @@
+package com.goafanti.common.bo;
+
+import java.util.List;
+
+public class UserOrderTask {
+
+	
+	private String orderNo;
+	private List<UserTask> list;
+	public String getOrderNo() {
+		return orderNo;
+	}
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+	public List<UserTask> getList() {
+		return list;
+	}
+	public void setList(List<UserTask> list) {
+		this.list = list;
+	}
+}
+ class UserTask{
+	private Integer id;
+	private String commodityName;
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
+	public String getCommodityName() {
+		return commodityName;
+	}
+	public void setCommodityName(String commodityName) {
+		this.commodityName = commodityName;
+	}
+}

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

@@ -85,8 +85,9 @@ public interface TOrderLogMapper {
 	 * @param aid 转交id
 	 * @param oid 操作id
 	 * @param date 时间
+	 * @param remarks 
 	 */
-	void insertOrderLog(@Param("aid")String aid, @Param("oid")String oid, @Param("date")Date date);
+	void insertOrderLog(@Param("aid")String aid, @Param("oid")String oid, @Param("date")Date date, @Param("remarks")String remarks);
 
 
 }

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

@@ -1,5 +1,6 @@
 package com.goafanti.common.dao;
 
+import com.goafanti.common.bo.UserOrderTask;
 import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.model.TOrderTaskExample;
 import com.goafanti.order.bo.TOrderTaskBo;
@@ -78,6 +79,6 @@ public interface TOrderTaskMapper {
 
 	List<String> getLockId(@Param("orderNo")String orderNo, @Param("aid")String aid, @Param("uid")String uid);
 
-	List<TOrderTask> selectUidByproject(String uid);
+	List<UserOrderTask> selectUidByproject(String uid);
 
 }

+ 2 - 1
src/main/java/com/goafanti/common/enums/OrderLogProcess.java

@@ -7,7 +7,7 @@ import org.apache.commons.lang3.StringUtils;
 
 
 public enum OrderLogProcess {
-//	流程 0发起退单 1提交 2审核 3驳回  4特批 5财务派单 6财务首付 7项目订单派单 8项目派单 9项目完成 10 退单完成 11财务全款 12发起外包 13外包通过 14外包拒绝
+//	流程 0发起退单 1提交 2审核 3驳回  4特批 5财务派单 6财务首付 7项目订单派单 8项目派单 9项目完成 10 退单完成 11财务全款 12发起外包 13外包通过 14外包拒绝15项目外包通过16项目外包驳回17订单离职转交
 	TJ(1, "营销员提交"),
 	SH(2, "管理员审核"),
 	BH(3, "驳回"),
@@ -25,6 +25,7 @@ public enum OrderLogProcess {
 	WBBH(14,"订单外包驳回"),
 	XMWBTG(15,"项目外包通过"),
 	XMWBBH(16,"项目外包驳回"),
+	DDLZZJ(17,"订单离职转交"),
 	NOT(99,"未知"),
 	;
 	

+ 2 - 2
src/main/java/com/goafanti/common/mapper/TOrderLogMapper.xml

@@ -319,7 +319,7 @@
       </foreach>
   </insert>
   <insert id="insertOrderLog">
-  INSERT INTO t_order_log (order_no, process, create_time, aid)
-	select order_no ,12,#{date},#{oid} from t_order_new where salesman_id = #{aid}
+  INSERT INTO t_order_log (order_no, process, create_time, aid,remarks)
+	select order_no ,17,#{date},#{oid},#{remarks} from t_order_new where salesman_id = #{aid}
   </insert>
 </mapper>

+ 10 - 1
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1992,7 +1992,16 @@ left join department de on x.department_id=de.id left join business_category bc
     and a.task_distribution_time between #{startTime} and #{endTime}
      </if>
   </select>
-  <select id="selectUidByproject" resultType="com.goafanti.common.model.TOrderTask">
+  
+  
+   <resultMap id="userOrder" type="com.goafanti.common.bo.UserOrderTask">
+    <id column="orderNo" jdbcType="VARCHAR" property="orderNo" />
+    <collection property="list" ofType="com.goafanti.common.bo.UserTask">
+    	<id column="id" jdbcType="VARCHAR" property="id" />
+    	<result column="commodityName" jdbcType="VARCHAR" property="commodityName" />
+    </collection>
+  </resultMap>
+  <select id="selectUidByproject" resultMap="userOrder">
   select a.order_no orderNo ,b.id,b.commodity_name commodityName from t_order_new a 
 	left join t_order_task b on a.order_no =b.order_no 
 	where a.buyer_id = #{uid}

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

@@ -202,11 +202,11 @@
     where id = #{id,jdbcType=INTEGER}
   </update>
   <select id="listUseServiceFollow" resultType="com.goafanti.user.bo.OutUserServiceFollow">
-	select id, `uid`, aid, add_wechat addWechat, wechat, renewal, renewal_time renewalTime, sign_project_id signProjectId,
- sign_project signProject,  create_time createTime ,date_format(renewal_time,'%Y-%m-%d') as renewalTimes,
- date_format(create_time,'%Y-%m-%d %H:%i:%S') as createTimes,remarks
-  from user_service_follow
+	select a.id, a.`uid`, a.aid, a.add_wechat addWechat, a.wechat, renewal, a.renewal_time renewalTime, a.sign_project_id signProjectId,
+ a.sign_project signProject,  a.create_time createTime ,date_format(a.renewal_time,'%Y-%m-%d') as renewalTimes,
+ date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as createTimes,a.remarks,b.name adminName
+  from user_service_follow a left join admin b on a.aid =b.id
     where uid = #{uid}
-    order by create_time desc
+    order by a.create_time desc
   </select>
 </mapper>

+ 17 - 16
src/main/java/com/goafanti/common/mapper/UserServiceMapper.xml

@@ -224,35 +224,36 @@
       <result property="contractNo" column="contractNo"/>
       <result property="depName" column="depName"/>
       <result property="userName" column="userName"/>
+      <result property="uid" column="uid"/>
       <result property="signTimes" column="signTimes"/>
+      <result property="orderTimes" column="orderTimes"/>
       <result property="newTimes" column="newTimes"/>
       <result property="adminName" column="adminName"/>
       <result property="addWechat" column="addWechat"/>
       <result property="wechat" column="wechat"/>
+      <result property="deleteSign" column="deleteSign"/>
       <result property="renewal" column="renewal"/>
       <result property="signProject" column="signProject"/>
       <result property="remarks" column="remarks"/>
       <result property="renewalTimes" column="renewalTimes"/>
-      <collection property="list" javaType="java.util.ArrayList" ofType="com.goafanti.user.bo.OrderProject">
-        <id property="id" column="id"/>
-        <result property="commodityName" column="commodityName"/>
-        <result property="receiverName" column="receiverName"/>
-        <result property="declarationBatch" column="declarationBatch"/>
-        <result property="certificateNumber" column="certificateNumber"/>
-      </collection>
+      <association property="list" column="orderNo" javaType="java.util.ArrayList" select="getTask"/>
     </resultMap>
+    <select id="getTask" resultType="com.goafanti.user.bo.OrderProject">
+    	select id,commodity_name commodityName ,declaration_batch declarationBatch ,
+		receiver_name receiverName ,certificate_number  certificateNumber
+		from t_order_task where split_status in (0,1) and order_no = #{orderNo}
+    </select>
   
   
   <select id="OrderUseServiceList" resultMap="userService">
-  select a.order_no orderNo,a.contract_no contractNo,b.dep_name depName ,a.create_time ,b.buyer_name userName,c.new_time ,
-date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as signTimes, date_format(c.new_time,'%Y-%m-%d %H:%i:%S') as newTimes,
-date_format(c.renewal_time,'%Y-%m-%d') as renewalTimes,d.name adminName,c.add_wechat addWechat,c.wechat ,c.renewal ,
-c.renewal_time ,c.sign_project signProject ,c.remarks ,e.certificate_number certificateNumber,e.id,
-e.commodity_name commodityName,e.receiver_name receiverName,  e.declaration_batch declarationBatch 
+select a.order_no orderNo,a.contract_no contractNo,b.dep_name depName ,a.buyer_id uid,a.create_time ,b.buyer_name userName,c.new_time ,
+date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as orderTimes, date_format(c.new_time,'%Y-%m-%d %H:%i:%S') as newTimes,
+date_format(c.renewal_time,'%Y-%m-%d') as renewalTimes, date_format(a.sign_time,'%Y-%m-%d') as signTimes,a.delete_sign deleteSign ,
+d.name adminName,c.add_wechat addWechat,c.wechat ,c.renewal ,c.renewal_time ,c.sign_project signProject ,c.remarks 
 from t_order_new a
 left join t_order_mid b on a.order_no =b.order_no  left join user_service c on a.buyer_id =c.uid 
-left join admin d on c.aid =d.id  left join t_order_task e on a.order_no=e.order_no
-where 1=1
+left join admin d on c.aid =d.id  
+where a.delete_sign in(0,2,3)
 <if test="userName != null">
 and b.buyer_name like CONCAT('%', #{userName},'%') 
 </if>
@@ -271,7 +272,7 @@ and c.new_time  BETWEEN #{startFollowTimes} and #{endFollowTimes}
 <if test="startSignTimes != null">
 and a.create_time BETWEEN #{startSignTimes} and #{endSignTimes}
 </if>
-order by c.new_time 
+order by c.new_time,a.create_time
   <if test="page_sql != null">
     		${page_sql}
    </if>
@@ -282,7 +283,7 @@ order by c.new_time
 from t_order_new a
 left join t_order_mid b on a.order_no =b.order_no  left join user_service c on a.buyer_id =c.uid 
 left join admin d on c.aid =d.id 
-where 1=1
+where a.delete_sign in(0,2,3)
 <if test="userName != null">
 and b.buyer_name like CONCAT('%', #{userName},'%') 
 </if>

+ 4 - 2
src/main/java/com/goafanti/common/task/OrderDunTask.java

@@ -35,8 +35,8 @@ import com.goafanti.common.model.TArrearsDun;
 import com.goafanti.common.model.TOrderDun;
 import com.goafanti.common.model.TOrderMid;
 import com.goafanti.common.model.TOrderNew;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.LoggerUtils;
-import com.goafanti.common.utils.SendEmailUtil;
 import com.goafanti.order.bo.InputNewOrderDunBo;
 import com.goafanti.order.bo.OrderDunTaskBo;
 import com.goafanti.order.bo.OutNewOrderDunBo;
@@ -66,6 +66,8 @@ public class OrderDunTask {
 	private PaymentNodeMapper	paymentNodeMapper;
 	@Autowired
 	private OrderProjectService	orderProjectService;
+	@Autowired
+	private AsyncUtils	asyncUtils;
 	Logger							logger	= LoggerFactory.getLogger(OrderDunTask.class);
 	
 	/**
@@ -174,7 +176,7 @@ public class OrderDunTask {
   		} catch (Exception e) {
   			EmailBo emailBo = new EmailBo( "催款处理失败",  AFTConstants.ADMIN_EMAIL,  "超管", "平台",  "系统", "催款处理失败");
 			try {
-				SendEmailUtil.getInstance().send(emailBo);
+				asyncUtils.send(emailBo);
 			} catch (UnsupportedEncodingException | MessagingException e1) {
 				e1.printStackTrace();
 			}

+ 4 - 1
src/main/java/com/goafanti/common/task/PatentTask.java

@@ -29,6 +29,7 @@ import com.goafanti.common.model.Admin;
 import com.goafanti.common.model.Notice;
 import com.goafanti.common.model.PatentNew;
 import com.goafanti.common.model.PatentNewLog;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.SendEmailUtil;
 import com.goafanti.patent.service.PatentNewService;
@@ -45,6 +46,8 @@ public class PatentTask {
 	private AdminService adminService;
 	@Autowired
 	private NoticeMapper	noticeMapper;
+	@Autowired
+	private AsyncUtils	asyncUtils;
 	
 	
 	
@@ -121,7 +124,7 @@ public class PatentTask {
 						 String title="专利提醒";
 						 p.setStatus(1);//提醒中
 						try {
-							SendEmailUtil.getInstance().patentSend(emailBo);
+							asyncUtils.patentSend(emailBo);
 						} catch (SendFailedException e) {
 							//如果邮件发送失败提醒
 							 n.setNoticeType(NoticeStatus.TASK_PATENT_ERROR.getCode());

+ 4 - 1
src/main/java/com/goafanti/common/task/ReleaseUserTask.java

@@ -23,6 +23,7 @@ import com.goafanti.common.dao.NoticeMapper;
 import com.goafanti.common.enums.NoticeStatus;
 import com.goafanti.common.model.Notice;
 import com.goafanti.common.model.User;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.SendEmailUtil;
 import com.goafanti.common.utils.StringUtils;
@@ -39,6 +40,8 @@ public class ReleaseUserTask {
 	private UserService userService;
 	@Autowired
 	private NoticeMapper noticeMapper;
+	@Autowired
+	private AsyncUtils	asyncUtils;
 
 	int pointsDataLimit = 50;
 
@@ -197,7 +200,7 @@ public class ReleaseUserTask {
 			noticeMapper.insert(n);
 			EmailBo emailBo = new EmailBo("释放客户失败", AFTConstants.ADMIN_EMAIL, "超管", "平台", "系统", "释放客户失败");
 			try {
-				SendEmailUtil.getInstance().send(emailBo);
+				asyncUtils.send(emailBo);
 			} catch (UnsupportedEncodingException | MessagingException e1) {
 				e1.printStackTrace();
 			}

+ 24 - 0
src/main/java/com/goafanti/common/utils/AsyncUtils.java

@@ -0,0 +1,24 @@
+package com.goafanti.common.utils;
+
+import java.io.UnsupportedEncodingException;
+
+import javax.mail.MessagingException;
+
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import com.goafanti.common.bo.EmailBo;
+
+@Component
+public class AsyncUtils {
+
+	@Async
+	public void patentSend(EmailBo bo) throws UnsupportedEncodingException, MessagingException {
+		SendEmailUtil.getInstance().patentSend(bo);
+	}
+	
+	@Async
+	public void send(EmailBo bo) throws UnsupportedEncodingException, MessagingException {
+		SendEmailUtil.getInstance().send(bo);
+	}
+}

+ 0 - 1
src/main/java/com/goafanti/common/utils/SendEmailUtil.java

@@ -114,7 +114,6 @@ public class SendEmailUtil {
 	public void patentSend(EmailBo emailBo)
 			throws MessagingException, UnsupportedEncodingException {
 		// Session session = getSession();
-		// Instantiate a message
 		Message msg = new MimeMessage(session);
 
 		// Set message attributes

+ 0 - 1
src/main/java/com/goafanti/order/controller/OrderProjectApiController.java

@@ -10,7 +10,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
-import org.apache.poi.hssf.util.HSSFColor.TURQUOISE;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.BindingResult;

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

@@ -2,7 +2,7 @@ package com.goafanti.order.service;
 
 import java.util.List;
 
-import com.goafanti.common.model.TOrderTask;
+import com.goafanti.common.bo.UserOrderTask;
 import com.goafanti.common.model.TTaskHours;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.order.bo.OutTaskProgressLog;
@@ -77,7 +77,7 @@ public interface OrderProjectService {
 	List<taskAttributionLogBo> taskAttributionLog(Integer tid);
 
 
-	List<TOrderTask> selectUidByproject(String uid);
+	List<UserOrderTask> selectUidByproject(String uid);
 
 
 }

+ 8 - 3
src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java

@@ -42,6 +42,7 @@ import com.goafanti.common.model.TOrderLog;
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.common.model.TOrderRefund;
 import com.goafanti.common.model.TOrderTask;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.SendEmailUtil;
 import com.goafanti.common.utils.StringUtils;
@@ -84,6 +85,10 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	private OrderNewService orderNewService;
 	@Autowired
 	private OrganizationManagementMapper	organizationManagementMapper;
+	@Autowired
+	private AsyncUtils	asyncUtils;
+	
+	
 	Logger	logger	= LoggerFactory.getLogger(FundManagerOrderServiceImpl.class);
 	@SuppressWarnings("unchecked")
 	@Override
@@ -348,7 +353,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 				
 				EmailBo emailBo = new EmailBo("同意退单", o.getEmail(), o.getSalesmanName(), a.getDepartmentName(), a.getName(), content);
 				try {
-					SendEmailUtil.getInstance().send(emailBo);
+					asyncUtils.send(emailBo);
 				} catch (UnsupportedEncodingException e) {
 					e.printStackTrace();
 				} catch (MessagingException e) {
@@ -366,7 +371,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 					if(StringUtils.isNotBlank(tOrderTask.getEmail())){
 						EmailBo emailBo = new EmailBo("同意退单", tOrderTask.getEmail(), tOrderTask.getName(), a.getDepartmentName(), a.getName(), content);
 						try {
-							SendEmailUtil.getInstance().send(emailBo);
+							asyncUtils.send(emailBo);
 						} catch (UnsupportedEncodingException e) {
 							e.printStackTrace();
 						} catch (MessagingException e) {
@@ -392,7 +397,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 				if(email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")){//email格式校验
 					EmailBo emailBo = new EmailBo("拒绝退单",email, sale, a.getDepartmentName(), a.getName(), content);
 					try {
-						SendEmailUtil.getInstance().send(emailBo);
+						asyncUtils.send(emailBo);
 					} catch (UnsupportedEncodingException e) {
 						e.printStackTrace();
 					} catch (MessagingException e) {

+ 7 - 6
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -88,6 +88,7 @@ import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.model.TTaskMid;
 import com.goafanti.common.model.User;
 import com.goafanti.common.model.UserMid;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.ExportExcelUtil;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.SendEmailUtil;
@@ -178,6 +179,9 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	private TTaskMidMapper	tTaskMidMapper;
 	@Autowired
 	private UserMidMapper	userMidMapper;
+	@Autowired
+	private AsyncUtils	asyncUtils;
+	
 	@Value(value = "${mobileRemindCodeTemplate}")
 	private String					mobileRemindCodeTemplate	= null;
 	@Value(value = "${upload.path}")
@@ -697,7 +701,6 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	
 	
 	public void  NewDunsendEmail(String orderNo,Integer dunId,AdminListBo a,TOrderNewBo b) throws UnsupportedEncodingException, MessagingException{
-		LoggerUtils.debug(logger, "======================邮件信息发送===================");
 		NewOrderDun ob=newOrderDunMapper.selectByPrimaryKey(dunId);
 		AdminListBo a2 = adminMapper.getDeptNameByAid(b.getSalesmanId());
 		String dunTypeName="";
@@ -711,9 +714,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	    	 EmailBo bo = new EmailBo("催收通知", b.getEmail(), a.getDepartmentName(), a.getName(),
 						"", orderNo,new SimpleDateFormat("yyyy-MM-dd").format(ob.getCreateTime()),dunTypeName,a2.getName(),b.getUserName(),1,0);
 				if(StringUtils.isNotBlank(b.getEmail())) {
-					SendEmailUtil.getInstance().patentSend(bo);
+					asyncUtils.patentSend(bo);
 				}
-				LoggerUtils.debug(logger, "=========================================发送邮件成功"); 
 	     }
 			
 
@@ -1181,7 +1183,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			//发送驳回邮件
 			EmailBo bo = new EmailBo(tite, b.getEmail(), b.getSalesmanName(), a.getDepartmentName(), a.getName(), content);
 			if(StringUtils.isNotBlank(b.getEmail())) {
-				SendEmailUtil.getInstance().send(bo);
+				asyncUtils.send(bo);
 			}
 			LoggerUtils.debug(logger, "=========================================发送邮件成功");
 	}
@@ -1210,7 +1212,6 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
     @Async
 	public  void pushGeneralSendNoticeAndEmail(List<String> alist, Integer type,String orderNo,String adminId,Integer approval) {
-    	
 		AdminListBo a = adminMapper.getDeptNameByAid(adminId);
 		String approvalType="";
 		if (approval!=ApprovalNewState.FTP.getCode()) approvalType="[特批]";
@@ -1236,7 +1237,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 					,null,null,null,null,null,0,approval);
 			try {
 				//使用专利邮件模板
-				SendEmailUtil.getInstance().patentSend(bo);
+				asyncUtils.patentSend(bo);
 			} catch (UnsupportedEncodingException | MessagingException e) {
 				throw new BusinessException(new Error( "邮件发送错误","邮件发送错误"));
 			}

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

@@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.goafanti.common.bo.EmailBo;
 import com.goafanti.common.bo.Error;
+import com.goafanti.common.bo.UserOrderTask;
 import com.goafanti.common.bo.paymentNodeEmailBo;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.constant.ErrorConstants;
@@ -77,6 +78,7 @@ import com.goafanti.common.model.TaskProgressLog;
 import com.goafanti.common.model.UserBusiness;
 import com.goafanti.common.model.UserChannel;
 import com.goafanti.common.model.UserLockRelease;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.SendEmailUtil;
@@ -159,6 +161,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	private UserChannelMapper	userChannelMapper;
 	@Autowired
 	private TaskAttributionLogMapper	taskAttributionLogMapper;
+	@Autowired
+	private AsyncUtils	asyncUtils;
 	@Value(value = "${upload.path}")
 	private String 					uploadPath 			= null;
 	
@@ -668,7 +672,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 						dunTypeName,pnb.getSalesmanName(),pnb.getUserName(),2,0);
 				if(StringUtils.isNotBlank(pnb.getEmail())) {
 					try {
-						SendEmailUtil.getInstance().patentSend(bo);
+						asyncUtils.patentSend(bo);
 					} catch (UnsupportedEncodingException | MessagingException e) {
 						LoggerUtils.debug(logger, "=========================================发送邮件异常"); 
 						e.printStackTrace();
@@ -982,7 +986,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 
 
 	@Override
-	public List<TOrderTask> selectUidByproject(String uid) {
+	public List<UserOrderTask> selectUidByproject(String uid) {
 		
 		return tOrderTaskMapper.selectUidByproject(uid);
 	}

+ 4 - 3
src/main/java/com/goafanti/organization/service/impl/ThirdPartyCompanyServiceImpl.java

@@ -42,8 +42,8 @@ import com.goafanti.common.model.SoftWritingPrice;
 import com.goafanti.common.model.TOrderPayment;
 import com.goafanti.common.model.TOrderTask;
 import com.goafanti.common.model.ThirdPartyCompany;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.DateUtils;
-import com.goafanti.common.utils.SendEmailUtil;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
@@ -95,7 +95,8 @@ public class ThirdPartyCompanyServiceImpl extends  BaseMybatisDao<ThirdPartyComp
 	private PatentPriceMapper	patentPriceMapper;
 	@Autowired
 	private TOrderOutsourceMapper	tOrderOutsourceMapper;
-	
+	@Autowired
+	private AsyncUtils	asyncUtils;
 	
 
 
@@ -469,7 +470,7 @@ public class ThirdPartyCompanyServiceImpl extends  BaseMybatisDao<ThirdPartyComp
 		noticeMapper.insertSelective(n);
 		if(StringUtils.isNotBlank(a.getEmail())) {
 			try {
-				SendEmailUtil.getInstance().send(bo);
+				asyncUtils.send(bo);
 			} catch (UnsupportedEncodingException | MessagingException e) {
 				e.printStackTrace();
 			}

+ 5 - 1
src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java

@@ -228,7 +228,11 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 				roleResourcesMapper.updateLockRelease("1",aid,transferId);//将业务锁转给指定人
 			}
 			if (s == roleResources.YQDD.getCode()) {
-				tOrderLogMapper.insertOrderLog(aid,TokenManager.getAdminId(),date);
+				Admin ad=adminMapper.selectAllByid(aid);
+				Admin ad2=adminMapper.selectAllByid(transferId);
+				StringBuffer str=new StringBuffer();
+				str.append(ad.getName()).append("离职转交到").append(ad2.getName());
+				tOrderLogMapper.insertOrderLog(aid,TokenManager.getAdminId(),date,str.toString());
 				tOrderNewMapper.updateSalesmanId(aid, transferId);
 				tOrderMidMapper.updateSalesmanId(aid, transferId);
 			}

+ 49 - 37
src/main/java/com/goafanti/user/bo/OutOrderUserService.java

@@ -2,26 +2,66 @@ package com.goafanti.user.bo;
 
 import java.util.List;
 
+import com.goafanti.common.utils.excel.Excel;
+
 
 public class OutOrderUserService {
+	@Excel(name = "订单编号")
 	private String orderNo;
+	@Excel(name = "合同编号")
 	private String contractNo;
+	@Excel(name = "状态",readConverterExp = "0=正常, 1=作废, 2=锁定, 3=变更中")
+	private Integer deleteSign;
+	@Excel(name = "签单时间")
 	private String signTimes;
+	@Excel(name = "下单时间")
+	private String orderTimes;
+	@Excel(name = "订单部门")
 	private String depName;
+	@Excel(name = "客户名称")
 	private String userName;
+	@Excel(name = "申报项目")
 	private String projects;
+	@Excel(name = "咨询师")
 	private String consultants;
+	@Excel(name = "申报批次")
 	private String declareBatchs;
+	@Excel(name = "证书编号")
 	private String certificationNos;
+	@Excel(name = "最新跟进时间")
+	private String newTimes;
+	@Excel(name = "跟进客服")
 	private String adminName;
+	@Excel(name = "是否添加微信",readConverterExp = "0=否,1=是")
 	private Integer addWechat;
+	@Excel(name = "微信号")
 	private String wechat;
+	@Excel(name = "续签", readConverterExp = "0=其他,1=否,企业已签其他机构,2=否,企业自己申报,3=否,企业不打算申报/注销,"
+			+ "4=否,客户考虑中,无报价,5=否,客户考虑中,已报价,6=是,已续签/复审")
 	private Integer renewal;
+	@Excel(name = "续签时间")
 	private String renewalTimes;
+	@Excel(name = "签单项目")
 	private String signProject;
+	@Excel(name = "备注")
 	private String remarks;
-	private String newTimes;
+	private String uid;
 	private List<OrderProject> list;
+	
+	
+	
+	public Integer getDeleteSign() {
+		return deleteSign;
+	}
+	public void setDeleteSign(Integer deleteSign) {
+		this.deleteSign = deleteSign;
+	}
+	public String getOrderTimes() {
+		return orderTimes;
+	}
+	public void setOrderTimes(String orderTimes) {
+		this.orderTimes = orderTimes;
+	}
 	public String getOrderNo() {
 		return orderNo;
 	}
@@ -47,54 +87,20 @@ public class OutOrderUserService {
 		this.userName = userName;
 	}
 	public String getProjects() {
-		StringBuffer s =new StringBuffer();
-		if (!list.isEmpty()) {
-			for (OrderProject p : list) {
-				if (p.getCommodityName()!=null) {
-					s.append(p.getCommodityName());
-				}else {
-					s.append("无");
-				}
-				s.append("/");
-			}
-			return s.substring(0, s.length()-1);
-		}
 		return projects;
 	}
 	public void setProjects(String projects) {
 		this.projects = projects;
 	}
 	public String getConsultants() {
-		StringBuffer s =new StringBuffer();
-		if (!list.isEmpty()) {
-			for (OrderProject p : list) {
-				if (p.getReceiverName()!=null) {
-					s.append(p.getReceiverName());
-				}else {
-					s.append("无");
-				}
-				s.append("/");
-			}
-			return s.substring(0, s.length()-1);
-		}
+		
 		return consultants;
 	}
 	public void setConsultants(String consultants) {
 		this.consultants = consultants;
 	}
 	public String getDeclareBatchs() {
-		StringBuffer s =new StringBuffer();
-		if (!list.isEmpty()) {
-			for (OrderProject p : list) {
-				if (p.getDeclarationBatch()!=null) {
-					s.append(p.getDeclarationBatch());
-				}else {
-					s.append("无");
-				}
-				s.append("/");
-			}
-			return s.substring(0, s.length()-1);
-		}
+		
 		return declareBatchs;
 	}
 	public void setDeclareBatchs(String declareBatchs) {
@@ -179,6 +185,12 @@ public class OutOrderUserService {
 	public void setSignProject(String signProject) {
 		this.signProject = signProject;
 	}
+	public String getUid() {
+		return uid;
+	}
+	public void setUid(String uid) {
+		this.uid = uid;
+	}
 	
 	
 	

+ 7 - 0
src/main/java/com/goafanti/user/bo/OutUserServiceFollow.java

@@ -9,6 +9,7 @@ public class OutUserServiceFollow  extends UserServiceFollow{
 	 */
 	private static final long serialVersionUID = 1L;
 	
+	private String adminName;
 	private String renewalTimes;
 	private String createTimes;
 	public String getRenewalTimes() {
@@ -23,6 +24,12 @@ public class OutUserServiceFollow  extends UserServiceFollow{
 	public void setCreateTimes(String createTimes) {
 		this.createTimes = createTimes;
 	}
+	public String getAdminName() {
+		return adminName;
+	}
+	public void setAdminName(String adminName) {
+		this.adminName = adminName;
+	}
 	
 	
 

+ 18 - 1
src/main/java/com/goafanti/user/controller/UserServiceApiController.java

@@ -1,8 +1,10 @@
 package com.goafanti.user.controller;
 
+import java.util.List;
+
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 
-import org.apache.poi.ss.formula.constant.ErrorConstant;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -10,8 +12,10 @@ import org.springframework.web.bind.annotation.RestController;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.BaseApiController;
+import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.user.bo.InputListOrderUserService;
 import com.goafanti.user.bo.InputUserServiceFollow;
+import com.goafanti.user.bo.OutOrderUserService;
 import com.goafanti.user.service.UserServiceService;
 
 @RestController
@@ -54,5 +58,18 @@ public class UserServiceApiController extends BaseApiController {
 		return res;
 	}
 	
+	/**导出客服跟进列表
+	 * 
+	 * @param i
+	 * @param response
+	 * @return
+	 */
+	@RequestMapping(value = "/userServiceExport",method = RequestMethod.GET)
+	public Result userServiceExport(InputListOrderUserService i,HttpServletResponse response) {
+		List<OutOrderUserService> list=userServiceService.listOrderUseServiceGetList(i);
+		NewExcelUtil<OutOrderUserService>excel=new NewExcelUtil<>(OutOrderUserService.class);
+ 		 return  excel.exportExcel(list,"客服订单跟进列表",response);
+	}
+	
 
 }

+ 3 - 0
src/main/java/com/goafanti/user/service/UserServiceService.java

@@ -19,5 +19,8 @@ public interface UserServiceService {
 	Pagination<OutOrderUserService> listOrderUseService(InputListOrderUserService i);
 
 
+	List<OutOrderUserService> listOrderUseServiceGetList(InputListOrderUserService i);
+
+
 
 }

+ 68 - 4
src/main/java/com/goafanti/user/service/impl/UserServiceServiceImpl.java

@@ -14,11 +14,13 @@ import com.goafanti.common.dao.UserServiceFollowMapper;
 import com.goafanti.common.dao.UserServiceMapper;
 import com.goafanti.common.model.UserService;
 import com.goafanti.common.utils.DateUtils;
+import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.user.bo.InputListOrderUserService;
 import com.goafanti.user.bo.InputUserServiceFollow;
+import com.goafanti.user.bo.OrderProject;
 import com.goafanti.user.bo.OutOrderUserService;
 import com.goafanti.user.bo.OutUserServiceFollow;
 import com.goafanti.user.service.UserServiceService;
@@ -34,7 +36,7 @@ public class  UserServiceServiceImpl extends BaseMybatisDao<UserServiceMapper> i
 	@Override
 	public int addUseService(InputUserServiceFollow us) {
 		us.setAid(TokenManager.getAdminId());
-		if (us.getRenewal()==1) {
+		if (us.getRenewal()==6) {
 			us.setRenewalTime(DateUtils.StringToDate(us.getRenewalTimes(), AFTConstants.YYYYMMDD));	
 		}
 		Date date=new Date();
@@ -62,15 +64,77 @@ public class  UserServiceServiceImpl extends BaseMybatisDao<UserServiceMapper> i
 	@SuppressWarnings("unchecked")
 	@Override
 	public Pagination<OutOrderUserService> listOrderUseService(InputListOrderUserService i) {
+		Map<String, Object> map = setParams(i);
+		Pagination<OutOrderUserService> p=(Pagination<OutOrderUserService>) findPage("OrderUseServiceList", "OrderUseServiceCount", map, i.getPageNo(), i.getPageSize());
+		List<OutOrderUserService> list= (List<OutOrderUserService>) p.getList();
+		setOrderUserService(list);
+		return p;
+	}
+
+	private Map<String, Object> setParams(InputListOrderUserService i) {
 		Map<String, Object>map =new HashMap<String, Object>();
 		if(i.getUserName()!=null)map.put("userName", i.getUserName());
 		if(i.getDepId()!=null)map.put("depId", i.getDepId());
 		if(i.getStartFollowTimes()!=null)map.put("startFollowTimes", i.getStartFollowTimes());
-		if(i.getEndFollowTimes()!=null)map.put("endFollowTimes", i.getEndFollowTimes());
+		if(i.getEndFollowTimes()!=null)map.put("endFollowTimes", i.getEndFollowTimes()+" 23:59:59");
 		if(i.getStartSignTimes()!=null)map.put("startSignTimes", i.getStartSignTimes());
-		if(i.getEndSignTimes()!=null)map.put("endSignTimes", i.getEndSignTimes());
+		if(i.getEndSignTimes()!=null)map.put("endSignTimes", i.getEndSignTimes()+" 23:59:59");
+		if(i.getAddWechat()!=null)map.put("addWechat", i.getAddWechat());
 		if(i.getRenewal()!=null)map.put("renewal", i.getRenewal());
-		return (Pagination<OutOrderUserService>) findPage("OrderUseServiceList", "OrderUseServiceCount", map, i.getPageNo(), i.getPageSize());
+		return map;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public List<OutOrderUserService> listOrderUseServiceGetList(InputListOrderUserService i) {
+		Map<String, Object> map = setParams(i);
+		if (i.getPageSize()==null) i.setPageSize(99999);
+		List<OutOrderUserService> list=(List<OutOrderUserService>) findList("OrderUseServiceList", map,i.getPageNo(), i.getPageSize());
+		setOrderUserService(list);
+		return list;
+	}
+
+	private void setOrderUserService(List<OutOrderUserService> list) {
+		for (OutOrderUserService ou: list) {
+			StringBuffer projects=new StringBuffer();
+			StringBuffer consultants=new StringBuffer();
+			StringBuffer declareBatchs=new StringBuffer();
+			StringBuffer certificationNos=new StringBuffer();
+			for (OrderProject o : ou.getList()) {
+				if (StringUtils.isNotBlank(o.getCommodityName())) {
+					projects.append(o.getCommodityName());
+				} else {
+					projects.append("无");
+				}
+				projects.append("/");
+				
+				if (StringUtils.isNotBlank(o.getReceiverName())) {
+					consultants.append(o.getReceiverName());
+				} else {
+					consultants.append("无");
+				}
+				consultants.append("/");
+				
+				if (o.getDeclarationBatch() != null) {
+					declareBatchs.append(o.getDeclarationBatch());
+				} else {
+					declareBatchs.append("无");
+				}
+				declareBatchs.append("/");
+				
+				if (StringUtils.isNotBlank(o.getCertificateNumber())) {
+					certificationNos.append(o.getCertificateNumber());
+				} else {
+					certificationNos.append("无");
+				}
+				certificationNos.append("/");
+				
+			}
+			if(projects.length()>1)ou.setProjects(projects.substring(0, projects.length()-1));
+			if(consultants.length()>1)ou.setConsultants(consultants.substring(0, consultants.length()-1));
+			if(declareBatchs.length()>1)ou.setDeclareBatchs(declareBatchs.substring(0, declareBatchs.length()-1));
+			if(certificationNos.length()>1)ou.setCertificationNos(certificationNos.substring(0, certificationNos.length()-1));
+		}
 	}
 
 }

+ 1 - 1
src/main/resources/props/config_local.properties

@@ -1,7 +1,7 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
 #本地
-#jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#jdbc.url=jdbc\:mysql://localhost:3306/aft20210514?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.username=root
 #jdbc.password=123456
 #测试

+ 4 - 1
src/main/resources/spring/spring-mvc.xml

@@ -15,7 +15,10 @@
 	<!-- Scan controller -->
 		
 	<context:component-scan
-		base-package="com.goafanti.*.controller;com.goafanti.*.*.controller;com.goafanti.common.task;com.goafanti.core.websocket" />
+		base-package="com.goafanti.*.controller;com.goafanti.*.*.controller;com.goafanti.common.task;com.goafanti.common.utils;
+		com.goafanti.core.websocket" />
+		
+
 
 	<bean name="springContextUtils" class="com.goafanti.common.utils.SpringContextUtils" scope="singleton"></bean>