Browse Source

Merge branch 'test' of jishutao/kede-server into prod

anderx 3 years ago
parent
commit
4e6fc0bc79
34 changed files with 967 additions and 468 deletions
  1. 8 7
      src/main/java/com/goafanti/admin/controller/AdminSuperviserApiController.java
  2. 1 1
      src/main/java/com/goafanti/admin/service/NewAdminService.java
  3. 7 78
      src/main/java/com/goafanti/admin/service/impl/NewAdminServiceImpl.java
  4. 12 10
      src/main/java/com/goafanti/common/dao/NewOrderChangeMapper.java
  5. 6 0
      src/main/java/com/goafanti/common/dao/OrderExamineMapper.java
  6. 2 0
      src/main/java/com/goafanti/common/dao/RoleMapper.java
  7. 2 0
      src/main/java/com/goafanti/common/dao/TChangeTaskMapper.java
  8. 0 17
      src/main/java/com/goafanti/common/dao/TOrderInvoiceMapper.java
  9. 7 10
      src/main/java/com/goafanti/common/dao/TOrderNewMapper.java
  10. 2 0
      src/main/java/com/goafanti/common/dao/TOrderTaskMapper.java
  11. 83 20
      src/main/java/com/goafanti/common/mapper/NewOrderChangeMapper.xml
  12. 16 3
      src/main/java/com/goafanti/common/mapper/OrderExamineMapper.xml
  13. 8 0
      src/main/java/com/goafanti/common/mapper/RoleMapper.xml
  14. 1 0
      src/main/java/com/goafanti/common/mapper/TChangeTaskMapper.xml
  15. 0 60
      src/main/java/com/goafanti/common/mapper/TOrderInvoiceMapper.xml
  16. 80 25
      src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml
  17. 14 2
      src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml
  18. 337 60
      src/main/java/com/goafanti/common/utils/AsyncUtils.java
  19. 7 1
      src/main/java/com/goafanti/common/utils/excel/NewExcelUtil.java
  20. 19 0
      src/main/java/com/goafanti/order/bo/OutProcessName.java
  21. 207 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutOrderSalesSourceAmount.java
  22. 1 1
      src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java
  23. 1 1
      src/main/java/com/goafanti/order/controller/OrderProjectApiController.java
  24. 17 3
      src/main/java/com/goafanti/order/controller/StatisticsApiController.java
  25. 12 0
      src/main/java/com/goafanti/order/service/OrderChangeService.java
  26. 1 1
      src/main/java/com/goafanti/order/service/OrderStatisticsService.java
  27. 62 66
      src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java
  28. 8 5
      src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java
  29. 5 1
      src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java
  30. 12 3
      src/main/java/com/goafanti/order/service/impl/OrderStatisticsServiceImpl.java
  31. 16 6
      src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java
  32. 11 85
      src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java
  33. 1 1
      src/main/resources/props/config_local.properties
  34. 1 1
      src/main/resources/props/config_test.properties

+ 8 - 7
src/main/java/com/goafanti/admin/controller/AdminSuperviserApiController.java

@@ -146,8 +146,8 @@ public class AdminSuperviserApiController extends CertifyApiController {
 				res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
 				res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "当前用户已注册!"));
 				return res;
 				return res;
 			}
 			}
-			Admin a = newAdminService.selectByPrimaryKey(admin.getId());
-			if (null == a) {
+			Admin useAdmin = newAdminService.selectByPrimaryKey(admin.getId());
+			if (null == useAdmin) {
 				res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
 				res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "用户id"));
 				return res;
 				return res;
 			}
 			}
@@ -157,18 +157,19 @@ public class AdminSuperviserApiController extends CertifyApiController {
 			}
 			}
 			Admin ad = new Admin();
 			Admin ad = new Admin();
 			BeanUtils.copyProperties(admin, ad);
 			BeanUtils.copyProperties(admin, ad);
-			ad.setNumber(a.getNumber());
-			ad.setPassword(a.getPassword());
-			ad.setCreateTime(a.getCreateTime());
+			ad.setNumber(useAdmin.getNumber());
+			ad.setPassword(useAdmin.getPassword());
+			ad.setCreateTime(useAdmin.getCreateTime());
+			ad.setLastLoginTime(useAdmin.getLastLoginTime());
 			res = disposeAdminLocationList(res, jo, ad);
 			res = disposeAdminLocationList(res, jo, ad);
 			if (!res.getError().isEmpty()) {
 			if (!res.getError().isEmpty()) {
 				return res;
 				return res;
 			}
 			}
 			//如果锁定,清楚登陆者的token
 			//如果锁定,清楚登陆者的token
-			if (!a.getStatus().equals(ad.getStatus())&&!ad.getStatus().equals("0")){
+			if (!useAdmin.getStatus().equals(ad.getStatus())&&!ad.getStatus().equals("0")){
 				redisUtil.deleteAid(aa.getId());
 				redisUtil.deleteAid(aa.getId());
 			}
 			}
-			res.setData(newAdminService.updateByPrimaryKeySelective(ad, roles));
+			res.setData(newAdminService.updateByPrimaryKeySelective(ad,useAdmin, roles));
 		}
 		}
 		return res;
 		return res;
 	}
 	}

+ 1 - 1
src/main/java/com/goafanti/admin/service/NewAdminService.java

@@ -19,7 +19,7 @@ public interface NewAdminService {
 
 
 	int insert(Admin ad);
 	int insert(Admin ad);
 
 
-	int updateByPrimaryKeySelective(Admin ad, List<String> roleIds);
+	int updateByPrimaryKeySelective(Admin ad,Admin useAdmin, List<String> roleIds );
 
 
 	int updateByPrimaryKey(Admin a);
 	int updateByPrimaryKey(Admin a);
 
 

+ 7 - 78
src/main/java/com/goafanti/admin/service/impl/NewAdminServiceImpl.java

@@ -92,11 +92,11 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 
 
 	@SuppressWarnings("unused")
 	@SuppressWarnings("unused")
 	@Override
 	@Override
-	public int updateByPrimaryKeySelective(Admin ad, List<String> roleIds) {
+	public int updateByPrimaryKeySelective(Admin ad,Admin useAdmin, List<String> roleIds) {
 		Map<String, Object> params = new HashMap<>();
 		Map<String, Object> params = new HashMap<>();
 		params.put("uid", ad.getId());
 		params.put("uid", ad.getId());
 		params.put("roles", roleIds);
 		params.put("roles", roleIds);
-		Set<String> useRole = roleMapper.findRoleByUserId(ad.getId());
+		List<Role>  useRole = roleMapper.selectByAid(ad.getId());
 		if (ad.getId() != "1") {
 		if (ad.getId() != "1") {
 			userRoleMapper.deleteByUserId(ad.getId());
 			userRoleMapper.deleteByUserId(ad.getId());
 			if (!roleIds.isEmpty()) {
 			if (!roleIds.isEmpty()) {
@@ -104,11 +104,11 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 			}
 			}
 			TokenManager.clearUserAuthByUserId(ad.getId());
 			TokenManager.clearUserAuthByUserId(ad.getId());
 		}
 		}
-
 		ad.setType(sumType(roleIds));
 		ad.setType(sumType(roleIds));
 		int count=adminMapper.updateByPrimaryKey(ad);
 		int count=adminMapper.updateByPrimaryKey(ad);
+		//
+		asyncUtils.pushRoleUpdateExamine(ad,useAdmin,roleIds,useRole);
 		pushAmbRole(ad);
 		pushAmbRole(ad);
-		pushAdminRole(ad.getId(),roleIds,useRole);
 		if (count>0&&ad.getAmbId()!=null){
 		if (count>0&&ad.getAmbId()!=null){
 			//进行巴人数计算
 			//进行巴人数计算
 //			AmbSystem ambSystem = ambSystemMapper.selectByPrimaryKey(Long.valueOf(ad.getAmbId()));
 //			AmbSystem ambSystem = ambSystemMapper.selectByPrimaryKey(Long.valueOf(ad.getAmbId()));
@@ -116,85 +116,12 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 //				List<String> list = Arrays.asList(ambSystem.getAncestors().split(","));
 //				List<String> list = Arrays.asList(ambSystem.getAncestors().split(","));
 //
 //
 //			}
 //			}
-
-
 		}
 		}
 		return count;
 		return count;
 	}
 	}
 
 
 
 
 
 
-	private void pushAdminRole(String id,List<String>roleIds, Set<String> useRole) {
-		Integer flag=0;
-		String roleType="";
-		//加入以前有也要重新计算
-		if (useRole!=null){
-			for (String s : useRole) {
-				if (AFTConstants.SALESMAN_ADMIN.equals(s)){
-					flag=1;
-					roleType=AFTConstants.SALESMAN_ADMIN;
-					break;
-				}else if (AFTConstants.COMPANY_MANAGER.equals(s)){
-					flag=2;
-					roleType=AFTConstants.COMPANY_MANAGER;
-					break;
-				}else if (AFTConstants.FINANCE_ADMIN.equals(s)){
-					flag=3;
-					roleType=AFTConstants.FINANCE_ADMIN;
-					break;
-				}else if (AFTConstants.TECH_ADMIN.equals(s)){
-					flag=4;
-					roleType=AFTConstants.TECH_ADMIN;
-					break;
-				}else if (AFTConstants.TECH.equals(s)){
-					flag=5;
-					roleType=AFTConstants.TECH;
-					break;
-				}else if (AFTConstants.TECH_MANAGER.equals(s)){
-					flag=6;
-					roleType=AFTConstants.TECH_MANAGER;
-					break;
-				}
-			}
-		}
-		List<Role> roleList = roleMapper.selectByIdList(roleIds);
-		if (roleList!=null){
-			for (Role role : roleList) {
-				if (AFTConstants.SALESMAN_ADMIN.equals(role.getRoleType().toString())){
-					flag=1;
-					roleType=AFTConstants.SALESMAN_ADMIN;
-					break;
-				}else if (AFTConstants.COMPANY_MANAGER.equals(role.getRoleType().toString())){
-					flag=2;
-					roleType=AFTConstants.COMPANY_MANAGER;
-					break;
-				}else if (AFTConstants.FINANCE_ADMIN.equals(role.getRoleType().toString())){
-					flag=3;
-					roleType=AFTConstants.FINANCE_ADMIN;
-					break;
-				}else if (AFTConstants.TECH_ADMIN.equals(role.getRoleType().toString())){
-					flag=4;
-					roleType=AFTConstants.TECH_ADMIN;
-					break;
-				}else if (AFTConstants.TECH.equals(role.getRoleType().toString())){
-					flag=5;
-					roleType=AFTConstants.TECH;
-					break;
-				}else if (AFTConstants.TECH_MANAGER.equals(role.getRoleType().toString())){
-					flag=6;
-					roleType=AFTConstants.TECH_MANAGER;
-					break;
-				}
-			}
-		}
-		if (flag!=0){
-
-			asyncUtils.updateListExamineName(flag,id,roleType);
-		}
-
-
-	}
-
 
 
 	private int sumType(List<String > roleIds) {
 	private int sumType(List<String > roleIds) {
 		int type=0;
 		int type=0;
@@ -327,10 +254,12 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 		}
 		}
 		if(ad.getAmbId()!=null)pushAmbRole(ad);
 		if(ad.getAmbId()!=null)pushAmbRole(ad);
 		adminMapper.insert(ad);
 		adminMapper.insert(ad);
-		pushAdminRole(ad.getId(),roleIds,null);
+
 		return 1;
 		return 1;
 	}
 	}
 
 
+
+
 	/**
 	/**
 	 * 计算巴权限
 	 * 计算巴权限
 	 * @param ad
 	 * @param ad

+ 12 - 10
src/main/java/com/goafanti/common/dao/NewOrderChangeMapper.java

@@ -42,15 +42,7 @@ public interface NewOrderChangeMapper {
 
 
     NewOrderChangeBo selectByorderNoAndStatus(String orderNo);
     NewOrderChangeBo selectByorderNoAndStatus(String orderNo);
 
 
-    /**
-     * 切换审核人员
-     * @param type 3财务
-     * @param depId 部门编号
-     * @param aid 切换后审核人
-     * @return
-     */
-    int updateExamineName(@Param("type")Integer type, @Param("depId")String depId, @Param("aid")String aid,
-                          @Param("names")String names);
+
 
 
     int updateTaskExamineName(@Param("aid") String aid, @Param("taskReceiverId") String taskReceiverId,@Param("type") Integer type);
     int updateTaskExamineName(@Param("aid") String aid, @Param("taskReceiverId") String taskReceiverId,@Param("type") Integer type);
 
 
@@ -60,5 +52,15 @@ public interface NewOrderChangeMapper {
      * @param orderNo
      * @param orderNo
      * @return
      * @return
      */
      */
-    OutProcessName gerProcessName(@Param("id") Integer id, @Param("orderNo") String orderNo);
+    OutProcessName getProcessName(@Param("id") Integer id, @Param("orderNo") String orderNo);
+
+    /**
+     *
+     * @param type 3咨询师 4咨询师经理
+     * @param aid
+     * @return
+     */
+    List<Integer> selectProcess(@Param("type")Integer type, @Param("aid")String aid);
+
+    void updateExamineById(@Param("id") String id,@Param("type")Integer type);
 }
 }

+ 6 - 0
src/main/java/com/goafanti/common/dao/OrderExamineMapper.java

@@ -106,6 +106,12 @@ public interface OrderExamineMapper {
 
 
 	void updateByOrderNo(@Param("orderNo") String orderNo,@Param("status")Integer status,@Param("type")Integer type);
 	void updateByOrderNo(@Param("orderNo") String orderNo,@Param("status")Integer status,@Param("type")Integer type);
 
 
+    /**
+     *
+     * @param aid
+     * @param transferId
+     * @param type 0咨询师 1经理 2咨询师转交经理 3经理转交咨询师
+     */
 	void updateDimissionTransfer(@Param("aid")String aid, @Param("transferId")String transferId, @Param("type")Integer type);
 	void updateDimissionTransfer(@Param("aid")String aid, @Param("transferId")String transferId, @Param("type")Integer type);
 
 
     /**
     /**

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

@@ -21,6 +21,8 @@ public interface RoleMapper {
 
 
 	Set<String> findRoleByUserId(String userId);
 	Set<String> findRoleByUserId(String userId);
 
 
+	List<Role> selectByAid(String userId);
+
 	List<RolePermissionBo> findRolePermissions();
 	List<RolePermissionBo> findRolePermissions();
 
 
 	int insertBatch(List<Role> records);
 	int insertBatch(List<Role> records);

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

@@ -56,4 +56,6 @@ public interface TChangeTaskMapper {
     void updateSuperServiceYear(TChangeTask tChangeTask);
     void updateSuperServiceYear(TChangeTask tChangeTask);
 
 
     void updateChangeSuperServiceYear(TChangeTask tChangeTask);
     void updateChangeSuperServiceYear(TChangeTask tChangeTask);
+
+
 }
 }

+ 0 - 17
src/main/java/com/goafanti/common/dao/TOrderInvoiceMapper.java

@@ -34,21 +34,4 @@ public interface TOrderInvoiceMapper {
     TOrderInvoiceDetails getInvoiceDetails(String orderNo);
     TOrderInvoiceDetails getInvoiceDetails(String orderNo);
 
 
     List<OutInvoiceLog>  selectInvoiceLog(Integer id);
     List<OutInvoiceLog>  selectInvoiceLog(Integer id);
-
-    /**
-     * 切换审核人员
-     * @param type 0财务  1营销管理员 3公司管理
-     * @param depId 部门编号
-     * @param aid 切换后审核人
-     * @return
-     */
-    int updateExamineName(@Param("type")Integer type, @Param("depId")String depId, @Param("aid")String aid
-        ,@Param("names")String names);
-
-    /**
-     * @param roleType
-     * @param depId
-     * @return
-     */
-    int updateListExamineName(@Param("type")Integer type, @Param("depId")String depId,@Param("roleType")String roleType);
 }
 }

+ 7 - 10
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -3,6 +3,7 @@ package com.goafanti.common.dao;
 import com.goafanti.common.model.TOrderBillNew;
 import com.goafanti.common.model.TOrderBillNew;
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -56,17 +57,9 @@ public interface TOrderNewMapper {
 
 
     List<OutOrderSalesSource> orderSalesSource(InputOrderSalesSource in);
     List<OutOrderSalesSource> orderSalesSource(InputOrderSalesSource in);
 
 
-    TOrderNew  checkOrderProcessStatus(Integer tid);
+    List<OutOrderSalesSourceAmount> orderSalesSourceAmount(InputOrderSalesSource in);
 
 
-    /**
-     * 切换审核人员
-     * @param type 3财务
-     * @param depId 部门编号
-     * @param aid 切换后审核人
-     * @return
-     */
-    int updateExamineName(@Param("type")Integer type, @Param("depId")String depId, @Param("aid")String aid,
-                          @Param("names")String names);
+    TOrderNew  checkOrderProcessStatus(Integer tid);
 
 
     List<TOrderNew> selectgetAll();
     List<TOrderNew> selectgetAll();
 
 
@@ -76,4 +69,8 @@ public interface TOrderNewMapper {
      * @return
      * @return
      */
      */
     OrderProcessName getProcessName(String orderNo);
     OrderProcessName getProcessName(String orderNo);
+
+
+    void updateExamineById(@Param("id") String id,@Param("type")Integer type);
+
 }
 }

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

@@ -85,4 +85,6 @@ public interface TOrderTaskMapper {
     void updateBySuperId(TOrderTask t);
     void updateBySuperId(TOrderTask t);
 
 
     void deleteBySplitId(Integer id);
     void deleteBySplitId(Integer id);
+
+    void updateDimissionTransferManager(@Param("aid")String aid, @Param("transferId")String transferId);
 }
 }

+ 83 - 20
src/main/java/com/goafanti/common/mapper/NewOrderChangeMapper.xml

@@ -735,24 +735,13 @@ select
 
 
 
 
   <update id="updateExamineName">
   <update id="updateExamineName">
-    update  new_order_change a
-    <if test="names ==null">
-      ,t_order_new b,admin c
-      set a.examine_name=c.name
-      where a.process_state = #{type} and a.order_no =b.order_no
-      <if test="type==1">
-        and b.order_dep = #{depId}
-      </if>
-      and c.id= #{aid}
-    </if>
-      <if test="names !=null">
-        ,t_order_new b
-        set a.examine_name=#{names}
-        where a.process_state = #{type} and a.order_no =b.order_no
-        <if test="type==1">
-          and b.order_dep = #{depId}
-        </if>
-      </if>
+    update new_order_change a , t_order_new b ,(select a.department_id depId,group_concat(a.name) name
+                                                from admin a left join user_role b on a.id=b.uid
+                                                             left join `role` c on b.rid =c.id
+                                                where c.role_type ='9996' and a.status ='0' and a.department_id = #{depId}
+                                                group by a.department_id ) c
+    set a.examine_name =c.name
+    where a.order_no =b.order_no and b.order_dep = #{depId} and b.order_dep =c.depId
   </update>
   </update>
     <update id="updateTaskExamineName">
     <update id="updateTaskExamineName">
       update new_order_change n left join (select c.id
       update new_order_change n left join (select c.id
@@ -772,11 +761,70 @@ select
       set n.examine_name =a.name
       set n.examine_name =a.name
       where n.process_state =#{type}
       where n.process_state =#{type}
     </update>
     </update>
+  <update id="updateExamineById">
+    update new_order_change a left join t_order_new b on a.order_no =b.order_no
+    <if test="type==0 or type==1">
+      left join admin c on b.salesman_id =c.id
+      left join admin d on c.manager_id =d.id
+      set a.examine_name=d.name
+      where a.process_state =1 and d.id = #{id}
+    </if>
+    <if test="type==1">
+      left join admin c on b.salesman_id =c.id
+      set a.examine_name=c.name
+      where a.process_state =1 and c.manager_id = #{id}
+    </if>
+    <if test="type==2">
+      left join (select a.department_id depId,group_concat(a.name) name
+      from admin a left join admin b on a.department_id =b.department_id
+      left join user_role c on a.id=c.uid left join `role` d on c.rid =d.id
+      where  b.id= #{id} and d.role_type ='9996'
+      and a.status ='0' group by b.department_id )x on b.order_dep=x.depId
+      set a.examine_name=x.name
+      where a.process_state =2
+    </if>
+    <if test="type==3">
+      left join t_order_task c on a.order_no =c.order_no
+      left join (select a.order_no ,a.`type` ,GROUP_CONCAT(distinct b.name) name
+      from order_examine a left join admin b on a.aid=b.id where  a.`type` =0
+      group by order_no ,type)d on a.order_no =d.order_no
+      set a.examine_name =d.name
+      where a.process_state =3 and c.manager_id = #{id}
+    </if>
+    <if test="type==4">
+      left join t_order_task c on a.order_no =c.order_no
+      left join (select a.order_no ,a.`type` ,GROUP_CONCAT(distinct b.name) name
+      from order_examine a left join admin b on a.aid=b.id where  a.`type` =1
+      group by order_no ,type)d on a.order_no =d.order_no
+      set a.examine_name =d.name
+      where a.process_state =3 and c.consultant_id = #{id}
+    </if>
+    <if test="type==6">
+      left join department c on b.order_dep =c.id
+      left join admin d on c.finance_id =d.id
+      set a.examine_name=d.name
+      where a.process_state =6 and d.id = #{id}
+    </if>
+    <if test="type==5 or type==7">
+      left join (select group_concat(a.name) name
+      from admin a left join user_role b on a.id=b.uid
+      left join `role` c on b.rid =c.id
+        <if test="type==5">
+      where c.role_type in ('9998') and a.status ='0'
+        </if>
+      <if test="type==7">
+      where c.role_type in ('9997') and a.status ='0'
+        </if>
+        )c on 1=1
+      set a.examine_name =c.name
+      where a.process_state = #{type}
+    </if>
+  </update>
 
 
-  <select id="gerProcessName" resultType="com.goafanti.order.bo.OutProcessName">
+  <select id="getProcessName" resultType="com.goafanti.order.bo.OutProcessName">
     select a.id,a.order_no orderNo ,a.`type`,a.change_amount changeAmount ,a.status,a.process_state processState,
     select a.id,a.order_no orderNo ,a.`type`,a.change_amount changeAmount ,a.status,a.process_state processState,
            c.name yxy,mg.name yxjl, yxgly.name yxgly,zxs.name zxs,zxsjl.name zxsjl, zxsgly.name zxsgly,
            c.name yxy,mg.name yxjl, yxgly.name yxgly,zxs.name zxs,zxsjl.name zxsjl, zxsgly.name zxsgly,
-           fm.name cwzy,cwgly.name cwgly, zc.name zc,dsz.name dsz
+           fm.name cwzy,cwgly.name cwgly, zc.name zc,dsz.name dsz,b.salesman_id salesmanId
     from new_order_change a
     from new_order_change a
            left join t_order_new b on a.order_no =b.order_no
            left join t_order_new b on a.order_no =b.order_no
            left join admin c on b.salesman_id =c.id
            left join admin c on b.salesman_id =c.id
@@ -811,4 +859,19 @@ select
                       where c.role_type in ('9997') and a.status ='0' ) cwgly on 1=1
                       where c.role_type in ('9997') and a.status ='0' ) cwgly on 1=1
     where a.id= #{id}
     where a.id= #{id}
   </select>
   </select>
+    <select id="selectProcess" resultType="java.lang.Integer">
+      select t0.id from (select x.id
+            from (select a.id from new_order_change a left join t_order_task c on a.order_no =c.order_no
+             where a.process_state= #{type}
+             <if test="type==3">
+             and c.consultant_id = #{aid}
+             </if>
+             <if test="type==4">
+             and c.manager_id = #{aid}
+             </if>
+             group by a.id)x
+                    left join new_order_change z on x.id=z.id
+                    left join order_examine y on z.order_no=y.order_no
+             where y.`type` =0 group by x.id)t0
+    </select>
 </mapper>
 </mapper>

+ 16 - 3
src/main/java/com/goafanti/common/mapper/OrderExamineMapper.xml

@@ -335,10 +335,23 @@
   </update>
   </update>
    <update id="updateDimissionTransfer">
    <update id="updateDimissionTransfer">
   update order_examine set aid= #{transferId}
   update order_examine set aid= #{transferId}
+     <if test="type==3">
+       ,type=1
+     </if>
+     <if test="type==4">
+       ,type=0
+     </if>
+
 	where status=0 and aid= #{aid}
 	where status=0 and aid= #{aid}
-    <if test="type!=null">
-      and type= #{type}
-    </if>
+     <if test="type==0 or type==1">
+       and type= #{type}
+     </if>
+     <if test="type==3 ">
+       and type= 0
+     </if>
+     <if test="type==4 ">
+       and type= 1
+     </if>
   </update>
   </update>
 
 
   <delete id="deleteByAidAndStatus">
   <delete id="deleteByAidAndStatus">

+ 8 - 0
src/main/java/com/goafanti/common/mapper/RoleMapper.xml

@@ -108,6 +108,13 @@
     left join user_role tur on tur.rid=tr.id
     left join user_role tur on tur.rid=tr.id
     where tur.uid = #{userId,jdbcType=VARCHAR}
     where tur.uid = #{userId,jdbcType=VARCHAR}
   </select>
   </select>
+
+    <select id="selectByAid" resultType="com.goafanti.common.model.Role">
+        select tr.id, tr.role_name roleName, tr.role_type roleType ,tr.creater,tr.create_time as createTime
+        from role tr
+        left join user_role tur on tur.rid=tr.id
+        where tur.uid = #{userId,jdbcType=VARCHAR}
+    </select>
   <delete id="deleteByPrimaryKeys" parameterType="java.lang.String">
   <delete id="deleteByPrimaryKeys" parameterType="java.lang.String">
     delete from role
     delete from role
     where id in
     where id in
@@ -187,4 +194,5 @@
             #{item,jdbcType=VARCHAR}
             #{item,jdbcType=VARCHAR}
         </foreach>
         </foreach>
     </select>
     </select>
+
 </mapper>
 </mapper>

+ 1 - 0
src/main/java/com/goafanti/common/mapper/TChangeTaskMapper.xml

@@ -485,4 +485,5 @@
     set a.service_year =x.counts
     set a.service_year =x.counts
     where a.id =x.change_split_super
     where a.id =x.change_split_super
   </update>
   </update>
+    <update id="updateDimissionTransfer"></update>
 </mapper>
 </mapper>

+ 0 - 60
src/main/java/com/goafanti/common/mapper/TOrderInvoiceMapper.xml

@@ -593,64 +593,4 @@ where a.status=2 and a.order_no=  #{orderNo,jdbcType=VARCHAR}
     where a.invoice_id =#{id} order by a.create_time
     where a.invoice_id =#{id} order by a.create_time
   </select>
   </select>
 
 
-  <update id="updateExamineName">
-    update  t_order_invoice a,t_order_new b
-    <if test="names ==null">
-      ,admin c
-      set a.examine_name=c.name
-      where 1=1
-      <if test="type==0">
-        and a.type=0 and a.status =1 and a.approval in (0,2)
-      </if>
-      <if test="type==1">
-        and a.type=1 and a.status =1 and a.approval in (0,2)
-      </if>
-      <if test="type==2">
-        and  a.`type` =1 and a.status =1 and a.approval =1
-      </if>
-      and a.order_no =b.order_no
-      <if test="type==1">
-        and b.order_dep = #{depId}
-      </if>
-      and c.id= #{aid}
-    </if>
-    <if test="names !=null">
-      set a.examine_name= #{names}
-      where 1=1
-      <if test="type==0">
-        and a.type=0 and a.status =1 and a.approval in (0,2)
-      </if>
-      <if test="type==1">
-        and a.type=1 and a.status =1 and a.approval in (0,2)
-      </if>
-      <if test="type==2">
-        and  a.`type` =1 and a.status =1 and a.approval =1
-      </if>
-      and a.order_no =b.order_no
-      <if test="type==1">
-        and b.order_dep = #{depId}
-      </if>
-    </if>
-  </update>
-  <update id="updateListExamineName">
-    <if test="type==1">
-      update t_order_invoice t0,(select a.id , ifnull(GROUP_CONCAT(x.name) ,'暂无人员')name
-      from t_order_invoice a left join t_order_new b on a.order_no =b.order_no left join (select name ,department_id
-      from admin a left join user_role b on a.id =b.uid left join `role` c on b.rid =c.id where a.status ='0'
-      and c.role_type in (#{roleType}))x on b.order_dep =x.department_id where a.`type` =1
-      and a.status =1 and a.approval =0  and b.order_dep= #{depId}  group by a.id)t1
-      set t0.examine_name =t1.name
-      where t0.id=t1.id
-    </if>
-    <if test="type==2">
-      update t_order_invoice t0,(select a.id , ifnull(GROUP_CONCAT(x.name) ,'暂无人员')name
-      from t_order_invoice a left join t_order_new b on a.order_no =b.order_no left join (select name ,department_id
-      from admin a left join user_role b on a.id =b.uid left join `role` c on b.rid =c.id where a.status ='0'
-      and c.role_type in (#{roleType}))x on b.order_dep =x.department_id where a.`type` =1 and a.status =1
-      and a.approval =1 and b.order_dep= #{depId}  group by a.id)t1
-      set t0.examine_name =t1.name
-      where t0.id=t1.id
-    </if>
-
-  </update>
 </mapper>
 </mapper>

+ 80 - 25
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1630,6 +1630,48 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     update t_order_new set settlement_amount=settlement_amount-#{refundAmount,jdbcType=DECIMAL},
     update t_order_new set settlement_amount=settlement_amount-#{refundAmount,jdbcType=DECIMAL},
                            refund_amount=#{refundAmount,jdbcType=DECIMAL}	where order_no=#{orderNo}
                            refund_amount=#{refundAmount,jdbcType=DECIMAL}	where order_no=#{orderNo}
   </update>
   </update>
+    <update id="updateDepExamine">
+      update t_order_new a ,(select a.department_id depId,group_concat(a.name) name
+                             from admin a left join user_role b on a.id=b.uid
+                                          left join `role` c on b.rid =c.id
+                             where c.role_type ='9996' and a.status ='0' and a.department_id = #{departmentId}
+                             group by a.department_id ) b
+      set a.examine_name =b.name
+      where a.order_dep = #{departmentId} and a.order_dep =b.depId
+    </update>
+  <update id="updateExamineById">
+    update t_order_new a
+    <if test="type==0 or type==1">
+      left join admin b on a.salesman_id =b.id
+      left join admin c on b.manager_id =c.id
+      set a.examine_name =c.name
+      where a.process_status =1 and c.id= #{id}
+    </if>
+    <if test="type==2">
+      left join (select a.department_id depId,group_concat(a.name) name
+      from admin a left join admin b on a.department_id =b.department_id
+      left join user_role c on a.id=c.uid left join `role` d on c.rid =d.id
+      where  b.id= #{id} and d.role_type ='9996'
+      and a.status ='0' group by b.department_id )x on a.order_dep=x.depId
+      set a.examine_name=x.name
+      where a.process_status =2
+    </if>
+    <if test="type==3">
+      left join department b on a.order_dep =b.id
+      left join admin c on b.finance_id =c.id
+      set a.examine_name =c.name
+      where a.process_status =3 and c.id =#{id}
+    </if>
+    <if test="type==5">
+      update t_order_new a left join (select group_concat(a.name) name
+      from admin a left join user_role b on a.id=b.uid
+      left join `role` c on b.rid =c.id
+      where c.role_type in ('9998') and a.status ='0' )b on 1=1
+      set a.examine_name =b.name
+      where a.process_status =5
+    </if>
+  </update>
+
 
 
 
 
   <select id="selectArrearsDunListByPage" resultType="com.goafanti.order.bo.OutArrearsDunListBo">
   <select id="selectArrearsDunListByPage" resultType="com.goafanti.order.bo.OutArrearsDunListBo">
@@ -1797,6 +1839,40 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     from t_order_new  where delete_sign in (0,2) and  buyer_id = #{uid}
     from t_order_new  where delete_sign in (0,2) and  buyer_id = #{uid}
     order by create_time desc
     order by create_time desc
   </select>
   </select>
+  <select id="orderSalesSourceAmount" resultType="com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount">
+    select y.province,dg.name ,y.total_amount totalAmount,y.counts,y.dhxkf,
+        y.dhxkf/y.total_amount dhxkfl, y.dhzdzy,y.dhzdzy/y.total_amount dhzdzyl,y.wl,y.wl/y.total_amount wll,
+    y.qd,y.qd/y.total_amount qdl,y.zjs,y.zjs/y.total_amount zjsl,y.qt,y.qt/y.total_amount qtl,
+    y.gxfg,y.gxfg/y.total_amount gxfgl,y.qtfg,y.qtfg/y.total_amount qtfgl
+    from (select x.province,sum(x.total_amount)total_amount,sum(x.counts)counts,
+    sum(x.dhxkf)dhxkf,sum(x.dhzdzy)dhzdzy,sum(x.wl)wl,sum(x.qd)qd, sum(x.zjs)zjs, sum(x.qt)qt,
+    sum(x.gxfg)gxfg, sum(x.qtfg)qtfg
+      from ( select b.province ,1 counts,a.total_amount,a.sales_type ,
+      case a.sales_type when 0 then a.total_amount else 0 end dhxkf,
+      case a.sales_type when 1 then a.total_amount else 0 end dhzdzy,
+      case a.sales_type when 2 then a.total_amount else 0 end wl,
+      case a.sales_type when 3 then a.total_amount else 0 end qd,
+      case a.sales_type when 4 then a.total_amount else 0 end zjs,
+      case a.sales_type when 5 then a.total_amount else 0 end qt,
+      case a.sales_type when 6 then a.total_amount else 0 end gxfg,
+      case a.sales_type when 7 then a.total_amount else 0 end qtfg
+    from t_order_new a left join department b on a.order_dep =b.id
+    where a.delete_sign in (0,2) and a.process_status  &gt; 0  and a.approval in (0,1,2)
+    <if test=" startDate !=null and endDate != null">
+      and a.create_time between #{startDate} and #{endDate}
+    </if>
+    <if test=" deps !=null">
+      and a.order_dep in
+      <foreach close=")" collection="listDep" item="depId" open="(" separator=",">
+        #{depId}
+      </foreach>
+    </if>
+    <if test=" province !=null">
+      and b.province = #{province}
+    </if>
+    )x group by x.province)y left join district_glossory dg on y.province=dg.id
+      order by y.total_amount desc
+  </select>
   <select id="orderSalesSource" resultType="com.goafanti.order.bo.OutOrderSalesSource">
   <select id="orderSalesSource" resultType="com.goafanti.order.bo.OutOrderSalesSource">
     select y.province,dg.name ,y.total_amount totalAmount,y.counts,y.dhxkf,y.dhxkf/y.counts dhxkfl,
     select y.province,dg.name ,y.total_amount totalAmount,y.counts,y.dhxkf,y.dhxkf/y.counts dhxkfl,
     y.dhzdzy,y.dhzdzy/y.counts dhzdzyl,y.wl,y.wl/y.counts wll,
     y.dhzdzy,y.dhzdzy/y.counts dhzdzyl,y.wl,y.wl/y.counts wll,
@@ -1829,12 +1905,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       and b.province = #{province}
       and b.province = #{province}
     </if>
     </if>
     )x group by x.province)y left join district_glossory dg on y.province=dg.id
     )x group by x.province)y left join district_glossory dg on y.province=dg.id
-    <if test=" sort ==0">
-      order by y.total_amount desc
-    </if>
-    <if test=" sort ==1">
-      order by y.counts desc
-    </if>
+    order by y.counts desc
   </select>
   </select>
 
 
   <select id="selectstatisticsOrderListPage" resultType="com.goafanti.order.bo.TOrderNewBo">
   <select id="selectstatisticsOrderListPage" resultType="com.goafanti.order.bo.TOrderNewBo">
@@ -1958,25 +2029,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   </select>
   </select>
 
 
 
 
-  <update id="updateExamineName">
-    update  t_order_new a
-    <if test="names==null">
-      ,admin b
-      set a.examine_name=b.name
-      where a.process_status = #{type}
-      <if test="type==1">
-        and a.order_dep = #{depId}
-      </if>
-      and b.id= #{aid}
-    </if>
-    <if test="names!=null">
-      set a.examine_name= #{names}
-      where a.process_status = #{type}
-      <if test="type==1">
-        and a.order_dep = #{depId}
-      </if>
-    </if>
-    </update>
+
 
 
   <select id="selectgetAll" resultType="com.goafanti.common.model.TOrderNew">
   <select id="selectgetAll" resultType="com.goafanti.common.model.TOrderNew">
     select order_no orderNo,contract_picture_url contractPictureUrl ,agreement_url agreementUrl ,service_content serviceContent
     select order_no orderNo,contract_picture_url contractPictureUrl ,agreement_url agreementUrl ,service_content serviceContent
@@ -2004,4 +2057,6 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     where a.order_no = #{orderNo}
     where a.order_no = #{orderNo}
   </select>
   </select>
 
 
+
+
 </mapper>
 </mapper>

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

@@ -1188,7 +1188,9 @@
     where order_no = #{orderNo,jdbcType=VARCHAR} and task_status &gt; 0 and super_id is null
     where order_no = #{orderNo,jdbcType=VARCHAR} and task_status &gt; 0 and super_id is null
   </select>
   </select>
   <update id="updateDimissionTransfer" parameterType="java.lang.String">
   <update id="updateDimissionTransfer" parameterType="java.lang.String">
-    update t_order_task set task_allocator= #{aid,jdbcType=VARCHAR},task_receiver= #{transferId,jdbcType=VARCHAR}
+    update t_order_task a,admin b,t_change_task c
+    set task_allocator= #{aid,jdbcType=VARCHAR},task_receiver= #{transferId,jdbcType=VARCHAR},
+        a.receiver_name=b.name,c.receiver_name=b.name
     <if test="type==0">
     <if test="type==0">
       ,consultant_id=#{transferId,jdbcType=VARCHAR}
       ,consultant_id=#{transferId,jdbcType=VARCHAR}
     </if>
     </if>
@@ -1197,11 +1199,16 @@
     </if>
     </if>
     <if test="type==3">
     <if test="type==3">
       ,consultant_id= null
       ,consultant_id= null
+      ,manager_id=#{transferId,jdbcType=VARCHAR}
+    </if>
+    <if test="type==4">
+      ,consultant_id=#{transferId,jdbcType=VARCHAR}
+      ,manager_id= null
     </if>
     </if>
     <if test="type==1">
     <if test="type==1">
       ,manager_id= null
       ,manager_id= null
     </if>
     </if>
-    where task_receiver=#{aid,jdbcType=VARCHAR}
+    where task_receiver=#{aid,jdbcType=VARCHAR} and b.id=#{transferId,jdbcType=VARCHAR} and a.id=c.tid
   </update>
   </update>
 
 
   <select id="selectEstimateCost" resultType="java.lang.String">
   <select id="selectEstimateCost" resultType="java.lang.String">
@@ -2292,5 +2299,10 @@
     delete from t_order_task
     delete from t_order_task
     where split_super = #{id,jdbcType=INTEGER}
     where split_super = #{id,jdbcType=INTEGER}
   </delete>
   </delete>
+  <update id="updateDimissionTransferManager">
+    update t_order_task
+    set manager_id= #{transferId}
+    where manager_id = #{aid}
+  </update>
 
 
 </mapper>
 </mapper>

+ 337 - 60
src/main/java/com/goafanti/common/utils/AsyncUtils.java

@@ -1,14 +1,12 @@
 package com.goafanti.common.utils;
 package com.goafanti.common.utils;
 
 
 import java.io.UnsupportedEncodingException;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 
 import javax.mail.MessagingException;
 import javax.mail.MessagingException;
 
 
 import com.goafanti.admin.bo.AdminListBo;
 import com.goafanti.admin.bo.AdminListBo;
+import com.goafanti.common.bo.OrderExamineBo;
 import com.goafanti.common.bo.OrderOperator;
 import com.goafanti.common.bo.OrderOperator;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.*;
 import com.goafanti.common.dao.*;
@@ -18,7 +16,9 @@ import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.NewOrderChangeBo;
 import com.goafanti.order.bo.NewOrderChangeBo;
 import com.goafanti.order.bo.TOrderNewBo;
 import com.goafanti.order.bo.TOrderNewBo;
 import com.goafanti.order.enums.OrderChangeProcess;
 import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.enums.OrderChangeType;
 import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.order.enums.ProcessStatus;
+import com.goafanti.organization.bo.OrganizationListOut;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
@@ -37,11 +37,24 @@ public class AsyncUtils {
 	@Autowired
 	@Autowired
 	private TOrderNewMapper tOrderNewMapper;
 	private TOrderNewMapper tOrderNewMapper;
 	@Autowired
 	@Autowired
+	private TOrderTaskMapper tOrderTaskMapper;
+	@Autowired
 	private NewOrderChangeMapper newOrderChangeMapper;
 	private NewOrderChangeMapper newOrderChangeMapper;
 	@Autowired
 	@Autowired
-	private TOrderInvoiceMapper tOrderInvoiceMapper;
+	private OrderExamineMapper orderExamineMapper;
 	@Autowired
 	@Autowired
-	private TOrderTaskMapper tOrderTaskMapper;
+	private TaskAttributionLogMapper taskAttributionLogMapper;
+	@Autowired
+	private TTaskLogMapper tTaskLogMapper;
+	@Autowired
+	private DepartmentMapper departmentMapper;
+	@Autowired
+	private OrderChangeLogMapper orderChangeLogMapper;
+	@Autowired
+	private TChangeTaskMapper tChangeTaskMapper;
+	@Autowired
+	private RoleMapper roleMapper;
+
 
 
 
 
 
 
@@ -135,62 +148,11 @@ public class AsyncUtils {
     }
     }
 
 
 
 
-	/**
-	 * 切换审核人员
-	 * @param depId 部门编号
-	 * @param aid 切换后审核人
-	 * @return
-	 */
-    public void updateExamineName( String depId, String aid) {
-			tOrderNewMapper.updateExamineName(3,depId,aid,null);
-			newOrderChangeMapper.updateExamineName(OrderChangeProcess.JSZJ.getCode(),depId,aid,null);
-			tOrderInvoiceMapper.updateExamineName(0,depId,aid,null);
-	}
 
 
-	/**
-	 *
-	 * @param type 1营销管理 2公司管理 3财务管理 4咨询管理 5咨询师更换名称 6咨询师经理更换名称
-	 * @param id 管理员id
-	 * @param roleType
-	 */
-	public void updateListExamineName(Integer type, String id, String roleType) {
-		Admin admin = adminMapper.selectByPrimaryKey(id);
-		String depId=admin.getDepartmentId();
-		String names="";
-		if (type==1){
-			names=getNames(type,depId, roleType);
-			tOrderNewMapper.updateExamineName(ProcessStatus.YPYXGLY.getCode(),depId,null,names);
-			newOrderChangeMapper.updateExamineName(OrderChangeProcess.YXGLY.getCode(),depId,null,names);
-			tOrderInvoiceMapper.updateExamineName(1,depId,null,names);
-		}else if (type==2){
-			tOrderInvoiceMapper.updateListExamineName(type,depId,roleType);
-		}else if (type==3){
-			names=getNames(type,depId, roleType);
-			newOrderChangeMapper.updateExamineName(OrderChangeProcess.CWZJ.getCode(),depId,null,names);
-		}else if (type==4){
-			names=getNames(type,depId, roleType);
-			tOrderNewMapper.updateExamineName(ProcessStatus.YPZXSGLY.getCode(),depId,null,names);
-			newOrderChangeMapper.updateExamineName(OrderChangeProcess.JSZJ.getCode(),depId,null,names);
-		}else if (type==5){
-			newOrderChangeMapper.updateTaskExamineName(admin.getId(),admin.getId(),OrderChangeProcess.JSY.getCode());
-		}else if (type==6){
-			newOrderChangeMapper.updateTaskExamineName(admin.getId(),admin.getId(),OrderChangeProcess.JSJL.getCode());
-		}
-	}
 
 
-	private String getNames(Integer type,String depId, String roleType) {
-		StringBuffer str=new StringBuffer();
-		List<Admin> admins = adminMapper.selectAdminByRoleType(roleType);
-		for (Admin admin : admins) {
-			if (type==1&&admin.getDepartmentId().equals(depId)){
-				str = str.append(admin.getName()).append(",");
-			}else if(type!=1){
-				str = str.append(admin.getName()).append(",");
-			}
-		}
-		if (str.length()>1)return str.substring(0,str.length()-1);
-		else return "暂无";
-	}
+
+
+
 
 
 	/**
 	/**
 	 *
 	 *
@@ -290,4 +252,319 @@ public class AsyncUtils {
 	}
 	}
 
 
 
 
+	/**
+	 * @param date 日期
+	 * @param admin 原本管理员
+	 * @param tadmin 转交管理员
+	 */
+	public  void pushTechTransfer(Admin admin,Admin tadmin,Date date) {
+		//获取旧人员与新人员的角色
+		List<String>  useType=adminMapper.getAdminRoleListByAid(admin.getId());
+		List<String>  newType=adminMapper.getAdminRoleListByAid(tadmin.getId());
+		String aid=admin.getId();
+		String transferId=tadmin.getId();
+		if (useType.contains(AFTConstants.TECH)&&newType.contains(AFTConstants.TECH)){
+			//System.out.println("同咨询师");
+			List<Integer> list = newOrderChangeMapper.selectProcess(3, aid);
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 0);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,0);
+			pushChangeProcessZXS(list);
+		}else if (useType.contains(AFTConstants.TECH)&&newType.contains(AFTConstants.TECH_MANAGER)){
+//			System.out.println("不同职业");
+			List<Integer> list = newOrderChangeMapper.selectProcess(3, aid);
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 3);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,3);
+			List<Integer> list2 = newOrderChangeMapper.selectProcess(4, transferId);
+			//如果转交后订单全通过了,则变更+1
+			pushChangeProcessZXS(list);
+			pushChangeProcessZXSJL(list2);
+		}
+		if (useType.contains(AFTConstants.TECH_MANAGER)&&newType.contains(AFTConstants.TECH_MANAGER)){
+//			System.out.println("同咨询师经理");
+			List<Integer> list = newOrderChangeMapper.selectProcess(4, aid);
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 1);
+			tOrderTaskMapper.updateDimissionTransferManager(aid, transferId);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,1);
+			pushChangeProcessZXSJL(list);
+		}else if (useType.contains(AFTConstants.TECH_MANAGER)&&newType.contains(AFTConstants.TECH)){
+//			System.out.println("不同职业");
+			//获取转交前的
+			List<Integer> list = newOrderChangeMapper.selectProcess(4, aid);
+			tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 4);
+			tOrderTaskMapper.updateDimissionTransferManager(aid, null);
+			orderExamineMapper.updateDimissionTransfer(aid, transferId,4);
+			List<Integer> list2 = newOrderChangeMapper.selectProcess(3, transferId);
+			pushChangeProcessZXSJL(list);
+			pushChangeProcessZXS(list2);
+		}
+		taskAttributionLogMapper.insertList(aid, transferId, date);
+		tTaskLogMapper.updateDimissionTransfer(aid, transferId);
+	}
+
+	private void pushChangeProcessZXSJL(List<Integer> list) {
+		if(!list.isEmpty()){
+			Date date =new Date();
+			for (Integer i : list) {
+				NewOrderChangeBo changeBo = newOrderChangeMapper.selectById(i);
+				pushZXSJL(changeBo,date,1);
+				pushOrderCangeProcess(changeBo);
+				newOrderChangeMapper.updateByPrimaryKeySelective(changeBo);
+			}
+		}
+	}
+	public void pushZXS(NewOrderChangeBo nb,  Date date,Integer type) {
+		int zxs=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,null);
+		if (zxs>0){
+			nb.setProcessState(OrderChangeProcess.JSY.getCode());
+		}else {
+			if(type==1){
+				date.setTime(date.getTime()+100);
+				addOrderChangeLog("无咨询师自动通过", 2, nb.getOrderNo(), nb.getId(), date);
+			}
+			pushZXSJL(nb,date,1);
+		}
+	}
+	public void pushZXSJL(NewOrderChangeBo nb,Date date,Integer type) {
+		int zxsjl=orderExamineMapper.checkCountStatus(nb.getOrderNo(),1,0);
+		if (nb.getType()== OrderChangeType.XMJJEBG.getCode()||
+				nb.getType()==OrderChangeType.TDTK.getCode()||
+				nb.getType()==OrderChangeType.TDBTK.getCode()||
+				nb.getType()==OrderChangeType.CB.getCode()||
+				nb.getType()==OrderChangeType.JXMBG.getCode()){
+			if (zxsjl>0){
+				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
+			}else {
+				if (type==1){
+					date.setTime(date.getTime()+100);
+					addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+				}
+				//重报 没有技术员跳入财务
+				if (nb.getType()==OrderChangeType.CB.getCode()){
+					nb.setProcessState(OrderChangeProcess.CWZY.getCode());
+					//项目变更没有跳入技术总监
+				}else{
+					nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
+				}
+			}
+		}
+	}
+
+	private void addOrderChangeLog(String remarks, Integer status, String orderNo, Integer id,Date date) {
+		if (date ==null)date=new Date();
+		OrderChangeLog ocl = new OrderChangeLog();
+		ocl.setAuditor(TokenManager.getAdminId());
+		ocl.setOrderNo(orderNo);
+		ocl.setRemarks(remarks);
+		ocl.setChangeId(id);
+		ocl.setStatus(status);
+		ocl.setCreateTime(date);
+		orderChangeLogMapper.insertSelective(ocl);
+	}
+
+
+	private void pushChangeProcessZXS(List<Integer> list) {
+		if(!list.isEmpty()){
+			Date date =new Date();
+			for (Integer i : list) {
+				NewOrderChangeBo changeBo = newOrderChangeMapper.selectById(i);
+				pushZXS(changeBo,date,1);
+				pushOrderCangeProcess(changeBo);
+				newOrderChangeMapper.updateByPrimaryKeySelective(changeBo);
+			}
+		}
+	}
+
+
+	public  void pushOrderCangeProcess(NewOrderChange noc) {
+		if (noc.getProcessState()== OrderChangeProcess.YXY.getCode()){
+			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+			noc.setExamineName(ton.getSalesmanName());
+		}else if (noc.getProcessState()== OrderChangeProcess.YXJL.getCode()){
+			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+			Admin saleman = adminMapper.selectByPrimaryKey(ton.getSalesmanId());
+			Admin manager = adminMapper.selectByPrimaryKey(saleman.getManagerId());
+			noc.setExamineName(manager.getName());
+		}else if (noc.getProcessState()== OrderChangeProcess.YXGLY.getCode()){
+			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+			StringBuffer str=new StringBuffer();
+			List<Admin> admins = adminMapper.listAdminBydepIdAndRoleType(ton.getOrderDep(),AFTConstants.SALESMAN_ADMIN);
+			if (admins.isEmpty()){
+				OrganizationListOut dep = departmentMapper.selectAllById(ton.getOrderDep());
+				admins = adminMapper.listAdminBydepIdAndRoleType(dep.getSuperId(),AFTConstants.SALESMAN_ADMIN);
+			}
+			for (Admin admin : admins) {
+				if (!str.toString().contains(admin.getName()))str.append(admin.getName()).append(",");
+			}
+			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
+		}else if (noc.getProcessState()== OrderChangeProcess.JSY.getCode()){
+			List<OrderExamineBo> os = orderExamineMapper.selectByOrderNo(noc.getOrderNo(), 0);
+			StringBuffer str=new StringBuffer();
+			for (OrderExamineBo o : os) {
+				if (o.getStatus()==0){
+					if (!str.toString().contains(o.getName()))str.append(o.getName()).append(",");
+				}
+			}
+			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
+
+
+		}else if (noc.getProcessState()== OrderChangeProcess.JSJL.getCode()){
+			List<OrderExamineBo> os = orderExamineMapper.selectByOrderNo(noc.getOrderNo(), 1);
+			StringBuffer str=new StringBuffer();
+			for (OrderExamineBo o : os) {
+				if (o.getStatus()==0){
+					if (!str.toString().contains(o.getName()))str.append(o.getName()).append(",");
+				}
+			}
+			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
+		}else if (noc.getProcessState()== OrderChangeProcess.JSZJ.getCode()){
+			StringBuffer str=new StringBuffer();
+			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN);
+			for (Admin a : admins) {
+				str=str.append(a.getName()).append(",");
+			}
+			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
+
+		}else if (noc.getProcessState()== OrderChangeProcess.CWZY.getCode()){
+			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+			OrganizationListOut dep = departmentMapper.selectAllById(ton.getOrderDep());
+			noc.setExamineName(dep.getFinanceName());
+		}else if (noc.getProcessState()== OrderChangeProcess.CWZJ.getCode()){
+			StringBuffer str=new StringBuffer();
+			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.FINANCE_ADMIN);
+			for (Admin a : admins) {
+				str=str.append(a.getName()).append(",");
+			}
+			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
+
+		}else if (noc.getProcessState()== OrderChangeProcess.ZC.getCode()||noc.getProcessState()== OrderChangeProcess.DSZ.getCode()){
+			if(noc.getStatus()==2){
+				TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+				OrganizationListOut dep = departmentMapper.selectAllById(ton.getOrderDep());
+				noc.setExamineName(dep.getFinanceName());
+			}else {
+				noc.setExamineName("");
+			}
+		}
+	}
+
+	/**
+	 * 处理修改角色对于订单、变更审核人员的修改
+	 * @param ad
+	 * @param usead
+	 * @param roleIds
+	 */
+	public  void pushRoleUpdateExamine(Admin ad, Admin usead, List<String> roleIds, List<Role>  useRole) {
+		List<Role> roles = roleMapper.selectByIdList(roleIds);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.SALESMAN);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.SALESMAN_MANAGER);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.SALESMAN_ADMIN);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.TECH);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.TECH_MANAGER);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.TECH_ADMIN);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.FINANCE);
+		updateExamineByRole(ad, usead, useRole, roles,AFTConstants.FINANCE_ADMIN);
+	}
+
+	private void updateExamineByRole(Admin ad, Admin usead, List<Role> useRole, List<Role> roles, String roleType) {
+		boolean updateParam=false;
+		int updatedep =0;
+		if (!ad.getName().equals(usead.getName())){
+			updateParam=true;
+		}
+		boolean newDEP=Rolescontains(roles,roleType);
+		boolean useDep=Rolescontains(useRole,roleType);
+		if (newDEP||useDep){
+			if (roleType.equals(AFTConstants.SALESMAN_ADMIN)){
+				if (ad.getDepartmentId().equals(usead.getDepartmentId())){
+					updatedep=1;
+				}else{
+					updatedep=2;
+				}
+				if (newDEP&&useDep){
+					//新旧为同一个,修改当前就可以了
+					if (updatedep ==1&& updateParam){
+						updateOrderAndChangeExamine(ad, roleType);
+						//新旧不是同一个,俩个都要修改
+					}else if (updatedep ==2){
+						updateOrderAndChangeExamine(ad, roleType);
+						updateOrderAndChangeExamine(usead, roleType);
+					}
+				}else if (!newDEP&&useDep){
+					updateOrderAndChangeExamine(usead, roleType);
+				}
+			}else if (roleType.equals(AFTConstants.SALESMAN)){
+				if (!ad.getManagerId().equals(usead.getManagerId())){
+					updateOrderAndChangeExamine(ad, roleType);
+				}
+			}else {
+				if (updateParam){
+					updateOrderAndChangeExamine(ad, roleType);
+				}
+			}
+
+		}
+
+
+	}
+
+
+	private boolean Rolescontains(List<Role> roles, String roleType) {
+		for (Role role : roles) {
+			if (role.getRoleType().equals(Integer.valueOf(roleType))){
+				return true;
+			}
+		}
+		return false;
+	}
+	/**
+	 *
+	 * @param ad
+	 * @param roleType
+	 */
+	public void updateOrderAndChangeExamine(Admin ad, String roleType) {
+		if (roleType.equals(AFTConstants.SALESMAN_ADMIN)){
+			updateSalesmanAdminExamine(ad.getId());
+		}else if (roleType.equals(AFTConstants.SALESMAN)){
+			updateSalesmanExamine(ad.getManagerId());
+		}else if (roleType.equals(AFTConstants.SALESMAN_MANAGER)){
+//			订单 0=营销员,1=经理,2=营销管理员,3=财务专员,4=总裁,5=技术总监,6部分分配,7全部分配
+//			变更 流程状态 0=营销员,1=营销经理,2=营销管理员,3=技术员,4=技术经理,5=技术总监,6=财务专员,7=财务总监,8=总裁,9=董事长
+			updateSalesmanManagerExamine(ad);
+		}else if (roleType.equals(AFTConstants.FINANCE)){
+			updateFinanceExamine(ad.getId());
+		}else if (roleType.equals(AFTConstants.TECH)) {
+			newOrderChangeMapper.updateExamineById(ad.getId(), OrderChangeProcess.JSY.getCode());
+		}else if (roleType.equals(AFTConstants.TECH_MANAGER)) {
+			newOrderChangeMapper.updateExamineById(ad.getId(), OrderChangeProcess.JSJL.getCode());
+		}else if (roleType.equals(AFTConstants.TECH_ADMIN)) {
+			tOrderNewMapper.updateExamineById(null, ProcessStatus.YPZXSGLY.getCode());
+			newOrderChangeMapper.updateExamineById(null, OrderChangeProcess.JSZJ.getCode());
+		}else if (roleType.equals(AFTConstants.FINANCE_ADMIN)) {
+			newOrderChangeMapper.updateExamineById(null, OrderChangeProcess.CWZJ.getCode());
+		}
+	}
+
+	private void updateSalesmanExamine(String id) {
+		tOrderNewMapper.updateExamineById(id,ProcessStatus.YPYXY.getCode());
+		newOrderChangeMapper.updateExamineById(id,OrderChangeProcess.YXY.getCode());
+	}
+
+	private void updateSalesmanAdminExamine(String id) {
+		tOrderNewMapper.updateExamineById(id,ProcessStatus.YPYXGLY.getCode());
+		newOrderChangeMapper.updateExamineById(id,OrderChangeProcess.YXGLY.getCode());
+	}
+
+	private void updateSalesmanManagerExamine(Admin ad) {
+		updateSalesmanManagerExamine(ad.getId());
+	}
+
+	private void updateSalesmanManagerExamine(String id) {
+		tOrderNewMapper.updateExamineById(id, ProcessStatus.YPYXJL.getCode());
+		newOrderChangeMapper.updateExamineById(id, OrderChangeProcess.YXJL.getCode());
+	}
+
+	public void updateFinanceExamine(String id) {
+		tOrderNewMapper.updateExamineById(id,ProcessStatus.YPCWZY.getCode());
+		newOrderChangeMapper.updateExamineById(id,OrderChangeProcess.CWZY.getCode());
+	}
 }
 }

+ 7 - 1
src/main/java/com/goafanti/common/utils/excel/NewExcelUtil.java

@@ -461,6 +461,8 @@ public class NewExcelUtil<T> {
 		return cell;
 		return cell;
 	}
 	}
 
 
+
+
 	/**
 	/**
 	 * 设置单元格信息
 	 * 设置单元格信息
 	 *
 	 *
@@ -473,7 +475,11 @@ public class NewExcelUtil<T> {
 			if (attr.percentage()==1){
 			if (attr.percentage()==1){
 				if (value!=null){
 				if (value!=null){
 					BigDecimal v=new BigDecimal(value.toString());
 					BigDecimal v=new BigDecimal(value.toString());
-					value=v.multiply(new BigDecimal(100)).stripTrailingZeros().toPlainString()+"%";
+					v=v.multiply(new BigDecimal(100));
+					if (attr.scale()>0){
+					v=v.setScale(attr.scale(),BigDecimal.ROUND_HALF_EVEN);
+					}
+					value=v.stripTrailingZeros().toPlainString()+"%";
 				}else {
 				}else {
 					value="0%";
 					value="0%";
 				}
 				}

+ 19 - 0
src/main/java/com/goafanti/order/bo/OutProcessName.java

@@ -6,8 +6,10 @@ public class OutProcessName {
     private Integer type;
     private Integer type;
     private String changeAmount;
     private String changeAmount;
     private Integer status;
     private Integer status;
+    private Integer special;
     private Integer processState;
     private Integer processState;
     private String yxy;
     private String yxy;
+    private String salesmanId;
     private String yxjl;
     private String yxjl;
     private String yxgly;
     private String yxgly;
     private String zxs;
     private String zxs;
@@ -18,6 +20,23 @@ public class OutProcessName {
     private String zc;
     private String zc;
     private String dsz;
     private String dsz;
 
 
+    public Integer getSpecial() {
+        if (special==null)return 0;
+        return special;
+    }
+
+    public void setSpecial(Integer special) {
+        this.special = special;
+    }
+
+    public String getSalesmanId() {
+        return salesmanId;
+    }
+
+    public void setSalesmanId(String salesmanId) {
+        this.salesmanId = salesmanId;
+    }
+
     public Integer getType() {
     public Integer getType() {
         return type;
         return type;
     }
     }

+ 207 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutOrderSalesSourceAmount.java

@@ -0,0 +1,207 @@
+package com.goafanti.order.bo.outStatistics;
+
+import com.goafanti.common.utils.excel.Excel;
+
+import java.math.BigDecimal;
+
+public class OutOrderSalesSourceAmount {
+    private Integer province;
+    @Excel(name = "省份",width = 10)
+    private String name;
+    @Excel(name = "签单金额(万元)",scale=6)
+    private BigDecimal totalAmount;
+    @Excel(name = "签单数(个)",width = 10)
+    private Integer counts;
+    @Excel(name = "电话新开发",width = 10)
+    private BigDecimal dhxkf;
+    @Excel(name = "电话新开发占比",percentage = 1,width = 10,scale = 2)
+    private String dhxkfl;
+    @Excel(name = "电话自带资源",width = 10)
+    private BigDecimal dhzdzy;
+    @Excel(name = "电话自带资源占比",percentage = 1,width = 10,scale = 2)
+    private String dhzdzyl;
+    @Excel(name = "网络",width = 10)
+    private BigDecimal wl;
+    @Excel(name = "网络占比",percentage = 1,width = 10,scale = 2)
+    private String wll;
+    @Excel(name = "渠道",width = 10)
+    private BigDecimal qd;
+    @Excel(name = "渠道占比",percentage = 1,width = 10,scale = 2)
+    private String qdl;
+    @Excel(name = "转介绍",width = 10)
+    private BigDecimal zjs;
+    @Excel(name = "转介绍占比",percentage = 1,width = 10,scale = 2)
+    private String zjsl;
+    @Excel(name = "其他",width = 10)
+    private BigDecimal qt;
+    @Excel(name = "其他占比",percentage = 1,width = 10,scale = 2)
+    private String qtl;
+    @Excel(name = "高新复购",width = 10)
+    private BigDecimal gxfg;
+    @Excel(name = "高新复购占比",percentage = 1,width = 10,scale = 2)
+    private String gxfgl;
+    @Excel(name = "其他复购",width = 10)
+    private BigDecimal qtfg;
+    @Excel(name = "其他复购占比",percentage = 1,width = 10,scale = 2)
+    private String qtfgl;
+
+    public Integer getProvince() {
+        return province;
+    }
+
+    public void setProvince(Integer province) {
+        this.province = province;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public BigDecimal getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(BigDecimal totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public Integer getCounts() {
+        return counts;
+    }
+
+    public void setCounts(Integer counts) {
+        this.counts = counts;
+    }
+
+    public BigDecimal getDhxkf() {
+        return dhxkf;
+    }
+
+    public void setDhxkf(BigDecimal dhxkf) {
+        this.dhxkf = dhxkf;
+    }
+
+    public String getDhxkfl() {
+        return dhxkfl;
+    }
+
+    public void setDhxkfl(String dhxkfl) {
+        this.dhxkfl = dhxkfl;
+    }
+
+    public BigDecimal getDhzdzy() {
+        return dhzdzy;
+    }
+
+    public void setDhzdzy(BigDecimal dhzdzy) {
+        this.dhzdzy = dhzdzy;
+    }
+
+    public String getDhzdzyl() {
+        return dhzdzyl;
+    }
+
+    public void setDhzdzyl(String dhzdzyl) {
+        this.dhzdzyl = dhzdzyl;
+    }
+
+    public BigDecimal getWl() {
+        return wl;
+    }
+
+    public void setWl(BigDecimal wl) {
+        this.wl = wl;
+    }
+
+    public String getWll() {
+        return wll;
+    }
+
+    public void setWll(String wll) {
+        this.wll = wll;
+    }
+
+    public BigDecimal getQd() {
+        return qd;
+    }
+
+    public void setQd(BigDecimal qd) {
+        this.qd = qd;
+    }
+
+    public String getQdl() {
+        return qdl;
+    }
+
+    public void setQdl(String qdl) {
+        this.qdl = qdl;
+    }
+
+    public BigDecimal getZjs() {
+        return zjs;
+    }
+
+    public void setZjs(BigDecimal zjs) {
+        this.zjs = zjs;
+    }
+
+    public String getZjsl() {
+        return zjsl;
+    }
+
+    public void setZjsl(String zjsl) {
+        this.zjsl = zjsl;
+    }
+
+    public BigDecimal getQt() {
+        return qt;
+    }
+
+    public void setQt(BigDecimal qt) {
+        this.qt = qt;
+    }
+
+    public String getQtl() {
+        return qtl;
+    }
+
+    public void setQtl(String qtl) {
+        this.qtl = qtl;
+    }
+
+    public BigDecimal getGxfg() {
+        return gxfg;
+    }
+
+    public void setGxfg(BigDecimal gxfg) {
+        this.gxfg = gxfg;
+    }
+
+    public String getGxfgl() {
+        return gxfgl;
+    }
+
+    public void setGxfgl(String gxfgl) {
+        this.gxfgl = gxfgl;
+    }
+
+    public BigDecimal getQtfg() {
+        return qtfg;
+    }
+
+    public void setQtfg(BigDecimal qtfg) {
+        this.qtfg = qtfg;
+    }
+
+    public String getQtfgl() {
+        return qtfgl;
+    }
+
+    public void setQtfgl(String qtfgl) {
+        this.qtfgl = qtfgl;
+    }
+}

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

@@ -242,7 +242,7 @@ public class AdminNewOrderApiController extends CertifyApiController {
 		return res;
 		return res;
 	}
 	}
 	/**
 	/**
-	 * 订单详情
+	 * 订单审核列表
 	 * @param orderNo
 	 * @param orderNo
 	 * @return
 	 * @return
 	 */
 	 */

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

@@ -49,7 +49,7 @@ public class OrderProjectApiController extends CertifyApiController {
 	private String	uploadPath			= null;
 	private String	uploadPath			= null;
 
 
 	/**
 	/**
-	 * 项目分配、项目派单
+	 * 项目分配、项目派单、项目转交
 	 * taskId 项目ID
 	 * taskId 项目ID
 	 * taskReceiverId 受理人ID
 	 * taskReceiverId 受理人ID
 	 * type 0管理员派单 1经理转交 2经理派单 3咨询师转交 4回退
 	 * type 0管理员派单 1经理转交 2经理派单 3咨询师转交 4回退

+ 17 - 3
src/main/java/com/goafanti/order/controller/StatisticsApiController.java

@@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import com.goafanti.order.service.OrderStatisticsService;
 import com.goafanti.order.service.OrderStatisticsService;
 import com.goafanti.order.service.UserStaticticsService;
 import com.goafanti.order.service.UserStaticticsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -94,8 +95,21 @@ public class StatisticsApiController extends CertifyApiController {
 	 */
 	 */
 	@RequestMapping(value="/orderSalesSource/export" ,method = RequestMethod.GET)
 	@RequestMapping(value="/orderSalesSource/export" ,method = RequestMethod.GET)
 	public Result orderSalesSourceExport(InputOrderSalesSource in){
 	public Result orderSalesSourceExport(InputOrderSalesSource in){
-		List<OutOrderSalesSource>  list =orderStatisticsService.orderSalesSource(in);
+		if (in.getSort()==null||in.getSort()==1){
+		List<OutOrderSalesSource>  list = (List<OutOrderSalesSource>) orderStatisticsService.orderSalesSource(in);
 		NewExcelUtil<OutOrderSalesSource> excelUtil=new NewExcelUtil<>(OutOrderSalesSource.class);
 		NewExcelUtil<OutOrderSalesSource> excelUtil=new NewExcelUtil<>(OutOrderSalesSource.class);
+		StringBuffer str = getStringBuffer(in);
+		return excelUtil.exportExcel(list,"订单销售来源统计表",uploadPath,str.toString());
+		}else if (in.getSort()==0){
+			List<OutOrderSalesSourceAmount>  list = (List<OutOrderSalesSourceAmount>) orderStatisticsService.orderSalesSource(in);
+			NewExcelUtil<OutOrderSalesSourceAmount> excelUtil=new NewExcelUtil<>(OutOrderSalesSourceAmount.class);
+			StringBuffer str = getStringBuffer(in);
+			return excelUtil.exportExcel(list,"订单销售来源统计表",uploadPath,str.toString());
+		}
+		return new Result();
+	}
+
+	private StringBuffer getStringBuffer(InputOrderSalesSource in) {
 		StringBuffer str=new StringBuffer("搜索条件=》");
 		StringBuffer str=new StringBuffer("搜索条件=》");
 		if (in.getDepName()!=null){
 		if (in.getDepName()!=null){
 			str=str.append("部门:").append(in.getDepName()).append(";");
 			str=str.append("部门:").append(in.getDepName()).append(";");
@@ -106,11 +120,11 @@ public class StatisticsApiController extends CertifyApiController {
 		if (in.getSort()!=null){
 		if (in.getSort()!=null){
 			str=str.append("排序:").append(in.getSort()==1?"签单数":"签单金额").append(";");
 			str=str.append("排序:").append(in.getSort()==1?"签单数":"签单金额").append(";");
 		}
 		}
-		if (in.getStartDate()!=null &&in.getEndDate()!=null){
+		if (in.getStartDate()!=null && in.getEndDate()!=null){
 			str=str.append("时间:").append(in.getStartDate()).append("~")
 			str=str.append("时间:").append(in.getStartDate()).append("~")
 					.append(in.getEndDate()).append(";");
 					.append(in.getEndDate()).append(";");
 		}
 		}
-		return excelUtil.exportExcel(list,"订单销售来源统计表",uploadPath,str.toString());
+		return str;
 	}
 	}
 
 
 	/**
 	/**

+ 12 - 0
src/main/java/com/goafanti/order/service/OrderChangeService.java

@@ -1,11 +1,13 @@
 package com.goafanti.order.service;
 package com.goafanti.order.service;
 
 
 import java.io.IOException;
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
+import com.goafanti.common.model.NewOrderChange;
 import com.goafanti.common.model.OrderRefundInvoice;
 import com.goafanti.common.model.OrderRefundInvoice;
 import com.goafanti.common.model.TChangeDun;
 import com.goafanti.common.model.TChangeDun;
 import com.goafanti.common.model.TChangeTask;
 import com.goafanti.common.model.TChangeTask;
@@ -72,6 +74,9 @@ public interface OrderChangeService {
 			String startTime, String endTime, String deps, String salesmanName, Integer complete,String orderNo, String contractNo,Integer type, Integer pageSize,
 			String startTime, String endTime, String deps, String salesmanName, Integer complete,String orderNo, String contractNo,Integer type, Integer pageSize,
 			Integer pageNo) throws IOException ;
 			Integer pageNo) throws IOException ;
 
 
+	void pushOrderCangeProcess(NewOrderChange noc);
+	void pushZXS(NewOrderChangeBo nb, Date date, Integer type);
+	void pushZXSJL(NewOrderChangeBo nb,  Date date,Integer type);
 
 
 
 
 	Object addChangeTask(TChangeTask t);
 	Object addChangeTask(TChangeTask t);
@@ -122,4 +127,11 @@ public interface OrderChangeService {
 	Object gerProcessName(Integer id);
 	Object gerProcessName(Integer id);
 
 
     boolean checkTaskMain(TChangeTask t);
     boolean checkTaskMain(TChangeTask t);
+
+	/**
+	 *
+	 * @param taskReceiverId 转交接受人
+	 * @param type  3咨询师 4咨询师经理
+	 */
+	void pushChangeProcess(String taskReceiverId, Integer type);
 }
 }

+ 1 - 1
src/main/java/com/goafanti/order/service/OrderStatisticsService.java

@@ -12,7 +12,7 @@ import java.util.List;
 public interface OrderStatisticsService {
 public interface OrderStatisticsService {
 
 
 
 
-	List<OutOrderSalesSource> orderSalesSource(InputOrderSalesSource in);
+	Object orderSalesSource(InputOrderSalesSource in);
 
 
 
 
 }
 }

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

@@ -224,16 +224,23 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	@Override
 	@Override
 	public List<NewOrderChangeBo> orderChangeDetails(String orderNo) {
 	public List<NewOrderChangeBo> orderChangeDetails(String orderNo) {
 		List<NewOrderChangeBo> list=newOrderChangeMapper.selectByorderNo(orderNo);
 		List<NewOrderChangeBo> list=newOrderChangeMapper.selectByorderNo(orderNo);
-//		for (NewOrderChangeBo noc : list) {
+		for (NewOrderChangeBo noc : list) {
+			noc.setExamineName(getExamineName(noc));
 //			int isExamine=orderExamineMapper.selectByOrderNoAndAid(noc.getOrderNo(),TokenManager.getAdminId());
 //			int isExamine=orderExamineMapper.selectByOrderNoAndAid(noc.getOrderNo(),TokenManager.getAdminId());
 //			if (noc.getVoucherUrl()!=null) {
 //			if (noc.getVoucherUrl()!=null) {
 //				TOrderNew t=tOrderNewMapper.selectByPrimaryKey(noc.getOrderNo());
 //				TOrderNew t=tOrderNewMapper.selectByPrimaryKey(noc.getOrderNo());
 //				noc.setVoucherUrl(pushOrderService.changeProcessStatusConstant(noc.getVoucherUrl(),t.getSalesmanId(),noc.getProcessState(),noc.getStatus()));
 //				noc.setVoucherUrl(pushOrderService.changeProcessStatusConstant(noc.getVoucherUrl(),t.getSalesmanId(),noc.getProcessState(),noc.getStatus()));
 //			}
 //			}
 //			noc.setIsExamine(isExamine);
 //			noc.setIsExamine(isExamine);
-//		}
+		}
 		return list;
 		return list;
 	}
 	}
+
+	private String getExamineName(NewOrderChangeBo noc) {
+		String names="";
+		return names;
+	}
+
 	@Override
 	@Override
 	public NewOrderChangeBo orderChangeDetailsById(Integer id) {
 	public NewOrderChangeBo orderChangeDetailsById(Integer id) {
 		NewOrderChangeBo nb=newOrderChangeMapper.selectById(id);
 		NewOrderChangeBo nb=newOrderChangeMapper.selectById(id);
@@ -256,8 +263,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		if (nb.getStatus()==4) {
 		if (nb.getStatus()==4) {
 			throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
 			throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
 		}
 		}
-		boolean zxsFlag=false;
-		boolean zxsjlFlag=false;
+		Date date =new Date();
 		//2通过 3驳回
 		//2通过 3驳回
 		if (status==2) {
 		if (status==2) {
 			//变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送 6退单不退款 7仅变更合同
 			//变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送 6退单不退款 7仅变更合同
@@ -287,28 +293,20 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 								nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 								nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 								nb.getType()==OrderChangeType.TDTK.getCode()||
 								nb.getType()==OrderChangeType.TDTK.getCode()||
 								nb.getType()==OrderChangeType.TDBTK.getCode()){
 								nb.getType()==OrderChangeType.TDBTK.getCode()){
-							int zxs=orderExamineMapper.checkCountStatus(orderNo,0,null);
-							if (zxs>0){
-								nb.setProcessState(OrderChangeProcess.JSY.getCode());
-							}else {
-								zxsFlag=true;
-								zxsjlFlag=pushZXSJLprocess(nb);
-							}
+							pushZXS(nb, date,1);
 						}else if (nb.getType()==OrderChangeType.JJEBG.getCode()){
 						}else if (nb.getType()==OrderChangeType.JJEBG.getCode()){
 							nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
 							nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
 						}else if (nb.getType()==OrderChangeType.ZS.getCode()){
 						}else if (nb.getType()==OrderChangeType.ZS.getCode()){
 							nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 							nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 						}
 						}
 					}else if (nb.getProcessState()==OrderChangeProcess.JSY.getCode()){
 					}else if (nb.getProcessState()==OrderChangeProcess.JSY.getCode()){
-						zxsFlag=pushZXSprocess(nb);
+						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),0);
+						pushZXS(nb,date,0);
 						//咨询师审核,将自己审核的全部标记已审核
 						//咨询师审核,将自己审核的全部标记已审核
 					}else if (nb.getProcessState()==OrderChangeProcess.JSJL.getCode()){
 					}else if (nb.getProcessState()==OrderChangeProcess.JSJL.getCode()){
 						//咨询师经理审核,将自己审核的全部标记已审核
 						//咨询师经理审核,将自己审核的全部标记已审核
 						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),1);
 						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),1);
-						int wsh=orderExamineMapper.checkCountStatus(orderNo,1,0);
-						if (wsh==0){
-							pushZXSJLprocess(nb);
-						}
+						pushZXSJL(nb,date,0);
 					}else if (nb.getProcessState()==OrderChangeProcess.JSZJ.getCode()){
 					}else if (nb.getProcessState()==OrderChangeProcess.JSZJ.getCode()){
 						nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 						nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 					}else if (nb.getProcessState()==OrderChangeProcess.CWZY.getCode()){
 					}else if (nb.getProcessState()==OrderChangeProcess.CWZY.getCode()){
@@ -371,24 +369,14 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				orderExamineMapper.updateByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId(),0);
 				orderExamineMapper.updateByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId(),0);
 				int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
 				int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
 				if (wsh==0){
 				if (wsh==0){
-					zxsFlag=true;
-					zxsjlFlag= pushZXSJLprocess( nb);
+					pushZXSJL( nb,date,1);
 				}
 				}
 			}else if(rejectState==4){
 			}else if(rejectState==4){
-				zxsjlFlag=pushZXSJLprocess(nb);
+				pushZXSJL(nb,date,1);
 			}
 			}
 		}
 		}
 		addOrderChangeLog(remarks, status, orderNo, nb.getId());
 		addOrderChangeLog(remarks, status, orderNo, nb.getId());
-		if (zxsFlag||zxsjlFlag){
-			Date date =new Date();
-			date.setTime(date.getTime()+1000);
-			if (zxsFlag){
-				addOrderChangeLog("无咨询师自动通过", 2, orderNo, nb.getId(),date);
-			}
-			if (zxsjlFlag){
-				addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
-			}
-		}
+
 
 
 		sendNotice(status,nb);
 		sendNotice(status,nb);
 		pushOrderCangeProcess(nb);
 		pushOrderCangeProcess(nb);
@@ -397,27 +385,34 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	}
 	}
 
 
 	/**
 	/**
-	 *  判断zxs是否全审核,全审核就去判断咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
+	 *
 	 * @param nb
 	 * @param nb
-	 * @return
+	 * @param date
+	 * @param type 0正常审核  1跨流程需要通知
 	 */
 	 */
-	private boolean pushZXSprocess(NewOrderChangeBo nb) {
-		orderExamineMapper.updateByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId(),0);
-		int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
-		if (wsh==0){
-			return pushZXSJLprocess( nb);
+	@Override
+	public void pushZXS(NewOrderChangeBo nb,  Date date,Integer type) {
+		int zxs=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,null);
+		if (zxs>0){
+			nb.setProcessState(OrderChangeProcess.JSY.getCode());
+		}else {
+			if(type==1){
+				date.setTime(date.getTime()+100);
+				addOrderChangeLog("无咨询师自动通过", 2, nb.getOrderNo(), nb.getId(), date);
+			}
+			pushZXSJL(nb,date,1);
 		}
 		}
-		return false;
 	}
 	}
 
 
 	/**
 	/**
 	 * 咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
 	 * 咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
 	 * @param nb
 	 * @param nb
+	 * @param type 0正常审核  1跨流程需要通知
 	 * @return
 	 * @return
 	 */
 	 */
-	private boolean pushZXSJLprocess(NewOrderChangeBo nb) {
+	@Override
+	public void pushZXSJL(NewOrderChangeBo nb,Date date,Integer type) {
 		int zxsjl=orderExamineMapper.checkCountStatus(nb.getOrderNo(),1,0);
 		int zxsjl=orderExamineMapper.checkCountStatus(nb.getOrderNo(),1,0);
-		boolean zxsjlFlag=false;
 		if (nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 		if (nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 				nb.getType()==OrderChangeType.TDTK.getCode()||
 				nb.getType()==OrderChangeType.TDTK.getCode()||
 				nb.getType()==OrderChangeType.TDBTK.getCode()||
 				nb.getType()==OrderChangeType.TDBTK.getCode()||
@@ -426,7 +421,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			if (zxsjl>0){
 			if (zxsjl>0){
 				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
 				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
 			}else {
 			}else {
-				zxsjlFlag=true;
+				if (type==1){
+					date.setTime(date.getTime()+100);
+					addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+				}
 				//重报 没有技术员跳入财务
 				//重报 没有技术员跳入财务
 				if (nb.getType()==OrderChangeType.CB.getCode()){
 				if (nb.getType()==OrderChangeType.CB.getCode()){
 					nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 					nb.setProcessState(OrderChangeProcess.CWZY.getCode());
@@ -436,7 +434,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				}
 				}
 			}
 			}
 		}
 		}
-		return zxsjlFlag;
 	}
 	}
 
 
 	private void addOrderChangeLog(String remarks, Integer status, String orderNo, Integer id) {
 	private void addOrderChangeLog(String remarks, Integer status, String orderNo, Integer id) {
@@ -686,7 +683,8 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			noc.setApplicant(t.getApplicant());
 			noc.setApplicant(t.getApplicant());
 			noc.setStatus(1);//订单置为正常
 			noc.setStatus(1);//订单置为正常
 			noc.setDepName(t.getDepName());
 			noc.setDepName(t.getDepName());
-			addOrderChangeLog(startRemarks==null?"":startRemarks, 0, t.getOrderNo(), noc.getId());
+			Date date =new Date();
+			addOrderChangeLog(startRemarks==null?"":startRemarks, 0, t.getOrderNo(), noc.getId(),date);
 			if(t.getType()!=0)chekeAmout(t);
 			if(t.getType()!=0)chekeAmout(t);
 			TOrderNew ton=new TOrderNew();
 			TOrderNew ton=new TOrderNew();
 			ton.setOrderNo(noc.getOrderNo());
 			ton.setOrderNo(noc.getOrderNo());
@@ -694,7 +692,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			tOrderNewMapper.updateByPrimaryKeySelective(ton);
 			tOrderNewMapper.updateByPrimaryKeySelective(ton);
 			TOrderNewBo tOrderNew = tOrderNewMapper.getSaleIdByOno(t.getOrderNo());
 			TOrderNewBo tOrderNew = tOrderNewMapper.getSaleIdByOno(t.getOrderNo());
 			if (t.getType()!=OrderChangeType.JBGGT.getCode()){
 			if (t.getType()!=OrderChangeType.JBGGT.getCode()){
-				Date date =new Date();
 				if (tOrderNew.getManagerName()!=null){
 				if (tOrderNew.getManagerName()!=null){
 					noc.setProcessState(OrderChangeProcess.YXJL.getCode());
 					noc.setProcessState(OrderChangeProcess.YXJL.getCode());
 				}else {
 				}else {
@@ -709,8 +706,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					}
 					}
 					//如果自己是审核人员则跳过
 					//如果自己是审核人员则跳过
 					if (flag){
 					if (flag){
-						boolean zxsFlag=false;
-						boolean zxsjlFlag=false;
 						if (t.getType()==OrderChangeType.CB.getCode()||
 						if (t.getType()==OrderChangeType.CB.getCode()||
 								t.getType()==OrderChangeType.JXMBG.getCode()||
 								t.getType()==OrderChangeType.JXMBG.getCode()||
 								t.getType()==OrderChangeType.XMJJEBG.getCode()||
 								t.getType()==OrderChangeType.XMJJEBG.getCode()||
@@ -718,26 +713,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 								t.getType()==OrderChangeType.TDBTK.getCode()){
 								t.getType()==OrderChangeType.TDBTK.getCode()){
 							//将所有审核重置
 							//将所有审核重置
 							orderExamineMapper.updateByOrderNo(t.getOrderNo(),null,null);
 							orderExamineMapper.updateByOrderNo(t.getOrderNo(),null,null);
-							int wsh=orderExamineMapper.checkCountStatus(t.getOrderNo(),0,0);
-							if (wsh==0){
-								zxsFlag=true;
-								zxsjlFlag= pushZXSJLprocess( t);
-							}
-							if (zxsFlag||zxsjlFlag){
-								date.setTime(date.getTime()+1000);
-								if (zxsFlag){
-									addOrderChangeLog("无咨询师自动通过", 2, t.getOrderNo(), t.getId(),date);
-									noc.setProcessState(OrderChangeProcess.JSJL.getCode());
-								}
-								if (zxsjlFlag){
-									addOrderChangeLog("无咨询师经理自动通过", 2, t.getOrderNo(), t.getId(),date);
-									if (t.getType()==OrderChangeType.CB.getCode()){
-										noc.setProcessState(OrderChangeProcess.CWZY.getCode());
-									}else {
-										noc.setProcessState(OrderChangeProcess.JSZJ.getCode());
-									}
-								}
-							}
+							pushZXS(t,date,1);
 						}else if(t.getType()==OrderChangeType.ZS.getCode()){
 						}else if(t.getType()==OrderChangeType.ZS.getCode()){
 							noc.setProcessState(OrderChangeProcess.CWZY.getCode());
 							noc.setProcessState(OrderChangeProcess.CWZY.getCode());
 						}else if(t.getType()==OrderChangeType.JJEBG.getCode()){
 						}else if(t.getType()==OrderChangeType.JJEBG.getCode()){
@@ -763,6 +739,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		return 1;
 		return 1;
 	}
 	}
 
 
+	@Override
 	public  void pushOrderCangeProcess(NewOrderChange noc) {
 	public  void pushOrderCangeProcess(NewOrderChange noc) {
 		if (noc.getProcessState()== OrderChangeProcess.YXY.getCode()){
 		if (noc.getProcessState()== OrderChangeProcess.YXY.getCode()){
 			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
 			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
@@ -1582,7 +1559,11 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	@Override
 	@Override
 	public Object gerProcessName(Integer id) {
 	public Object gerProcessName(Integer id) {
 		NewOrderChange newOrderChange=newOrderChangeMapper.selectByPrimaryKey(id);
 		NewOrderChange newOrderChange=newOrderChangeMapper.selectByPrimaryKey(id);
-		return newOrderChangeMapper.gerProcessName(id,newOrderChange.getOrderNo());
+		OutProcessName processName = newOrderChangeMapper.getProcessName(id, newOrderChange.getOrderNo());
+		if (processName.getSalesmanId().equals(AFTConstants.CAOJIN_AID)){
+			processName.setSpecial(1);
+		}
+		return processName;
 	}
 	}
 
 
 	@Override
 	@Override
@@ -1609,4 +1590,19 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 
 
 		return false;
 		return false;
 	}
 	}
+
+	@Override
+	public void pushChangeProcess(String taskReceiverId, Integer type) {
+		List<Integer> list = newOrderChangeMapper.selectProcess(type, taskReceiverId);
+		if(!list.isEmpty()){
+			Date date =new Date();
+			for (Integer i : list) {
+				NewOrderChangeBo changeBo = orderChangeDetailsById(i);
+				if (type==3)pushZXS(changeBo,date,1);
+				if (type==4)pushZXSJL(changeBo,date,1);
+				newOrderChangeMapper.updateByPrimaryKeySelective(changeBo);
+			}
+		}
+	}
+
 }
 }

+ 8 - 5
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -1011,15 +1011,15 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			Admin a = adminMapper.selectByPrimaryKey(t.getSalesmanId());
 			Admin a = adminMapper.selectByPrimaryKey(t.getSalesmanId());
 			Admin admin = adminMapper.selectByPrimaryKey(a.getManagerId());
 			Admin admin = adminMapper.selectByPrimaryKey(a.getManagerId());
 			t.setExamineName(admin.getName());
 			t.setExamineName(admin.getName());
-		}else if (t.getProcessStatus()==ProcessStatus.YPCWZY.getCode()){
+		}else if (t.getProcessStatus()==ProcessStatus.YPYXGLY.getCode()){
 			if (t.getOrderDep()!=null){
 			if (t.getOrderDep()!=null){
 				OrganizationListOut dep = departmentMapper.selectAllById(t.getOrderDep());
 				OrganizationListOut dep = departmentMapper.selectAllById(t.getOrderDep());
-				t.setExamineName(dep.getFinanceName());
+				t.setExamineName(dep.getManagerName());
 			}
 			}
-		}else if (t.getProcessStatus()==ProcessStatus.YPYXGLY.getCode()){
+		}else if (t.getProcessStatus()==ProcessStatus.YPCWZY.getCode()){
 			if (t.getOrderDep()!=null){
 			if (t.getOrderDep()!=null){
 				OrganizationListOut dep = departmentMapper.selectAllById(t.getOrderDep());
 				OrganizationListOut dep = departmentMapper.selectAllById(t.getOrderDep());
-				t.setExamineName(dep.getManagerName());
+				t.setExamineName(dep.getFinanceName());
 			}
 			}
 		}else if (t.getProcessStatus()==ProcessStatus.YPZXSGLY.getCode()){
 		}else if (t.getProcessStatus()==ProcessStatus.YPZXSGLY.getCode()){
 			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN);
 			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN);
@@ -1937,7 +1937,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
 
 	@Override
 	@Override
 	public OrderProcessName getProcessName(String orderNo) {
 	public OrderProcessName getProcessName(String orderNo) {
-		return tOrderNewMapper.getProcessName(orderNo);
+		OrderProcessName names=tOrderNewMapper.getProcessName(orderNo);
+		return names;
 	}
 	}
 
 
+
+
 }
 }

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

@@ -19,6 +19,7 @@ import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.controller.InputTaskStopLog;
 import com.goafanti.order.controller.InputTaskStopLog;
 import com.goafanti.order.enums.*;
 import com.goafanti.order.enums.*;
+import com.goafanti.order.service.OrderChangeService;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -120,6 +121,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	private TaskStopMapper taskStopMapper;
 	private TaskStopMapper taskStopMapper;
 	@Autowired
 	@Autowired
 	private TaskStopLogMapper taskStopLogMapper;
 	private TaskStopLogMapper taskStopLogMapper;
+	@Autowired
+	private OrderChangeService orderChangeService;
 
 
 
 
 
 
@@ -160,11 +163,12 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		}else if(type==2) {
 		}else if(type==2) {
 			addOrderLog(t.getOrderNo(), OrderLogProcess.XMJLPD.getCode(),remarks);
 			addOrderLog(t.getOrderNo(), OrderLogProcess.XMJLPD.getCode(),remarks);
 			t.setConsultantId(taskReceiverId);
 			t.setConsultantId(taskReceiverId);
+		}else if(type==3) {
+			t.setConsultantId(taskReceiverId);
 		}else if(type==4) {
 		}else if(type==4) {
 			t.setConsultantId(null);
 			t.setConsultantId(null);
 			t.setManagerId(taskReceiverId);
 			t.setManagerId(taskReceiverId);
 		}
 		}
-
 		t.setReceiverName(a.getName());
 		t.setReceiverName(a.getName());
 		tOrderTaskMapper.updateByPrimaryKey(t);
 		tOrderTaskMapper.updateByPrimaryKey(t);
 		List<String> aids = new ArrayList<>();
 		List<String> aids = new ArrayList<>();

+ 12 - 3
src/main/java/com/goafanti/order/service/impl/OrderStatisticsServiceImpl.java

@@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON;
 import com.goafanti.common.dao.TOrderNewMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import com.goafanti.order.service.OrderStatisticsService;
 import com.goafanti.order.service.OrderStatisticsService;
 import groovy.util.logging.Log4j;
 import groovy.util.logging.Log4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
 
 
 @Service
 @Service
@@ -18,14 +20,21 @@ public class OrderStatisticsServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	private TOrderNewMapper tOrderNewMapper;
 	private TOrderNewMapper tOrderNewMapper;
 
 
 	@Override
 	@Override
-	public List<OutOrderSalesSource> orderSalesSource(InputOrderSalesSource in) {
-		if (in.getSort()==null)in.setSort(0);
+	public Object orderSalesSource(InputOrderSalesSource in) {
+		if (in.getSort()==null)in.setSort(1);
 		if(in.getEndDate()!=null)in.setEndDate(in.getEndDate()+" 23:59:59");
 		if(in.getEndDate()!=null)in.setEndDate(in.getEndDate()+" 23:59:59");
 		if (in.getDeps()!=null){
 		if (in.getDeps()!=null){
 			List<String> ls= JSON.parseArray(in.getDeps(),String.class);
 			List<String> ls= JSON.parseArray(in.getDeps(),String.class);
 			in.setListDep(ls);
 			in.setListDep(ls);
 		}
 		}
-		return tOrderNewMapper.orderSalesSource(in);
+		if (in.getSort()==1){
+			List<OutOrderSalesSource> outOrderSalesSources = tOrderNewMapper.orderSalesSource(in);
+			return outOrderSalesSources;
+		}else if (in.getSort()==0){
+			List<OutOrderSalesSourceAmount> outOrderSalesSources = tOrderNewMapper.orderSalesSourceAmount(in);
+			return outOrderSalesSources;
+		}
+		return null;
 	}
 	}
 
 
 }
 }

+ 16 - 6
src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java

@@ -5,8 +5,10 @@ import java.util.*;
 import com.goafanti.common.dao.DepartmentMapper;
 import com.goafanti.common.dao.DepartmentMapper;
 import com.goafanti.common.dao.NewOrderChangeMapper;
 import com.goafanti.common.dao.NewOrderChangeMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
+import com.goafanti.common.enums.OrderState;
 import com.goafanti.common.model.Department;
 import com.goafanti.common.model.Department;
 import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.AsyncUtils;
+import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.organization.bo.DepOut;
 import com.goafanti.organization.bo.DepOut;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -196,16 +198,24 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		dep.setProvince(province);
 		dep.setProvince(province);
 		dep.setHideSign(hideSign);
 		dep.setHideSign(hideSign);
 		dep.setWorkingHoursType(workingHoursType);
 		dep.setWorkingHoursType(workingHoursType);
-		Department use = departmentMapper.selectByPrimaryKey(id);
-		if (!use.getFinanceId().equals(financeId)){
-			//切换后更换审核人
-			asyncUtils.updateExamineName(id,financeId);
-		}
-		tOrderMidMapper.updateFinanceId(id,financeId);
+		checkFinaceUpdate(id,financeId);
+
 		int x=departmentMapper.updateByPrimaryKeySelective(dep);
 		int x=departmentMapper.updateByPrimaryKeySelective(dep);
 		return x;
 		return x;
 	}
 	}
 
 
+	/**
+	 * 如果更换了负责人刷新中间表
+	 * @param id
+	 * @param financeId
+	 */
+	private void checkFinaceUpdate(String id, String financeId) {
+		Department dep = departmentMapper.selectByPrimaryKey(id);
+		if (financeId!=null&&financeId.equals(dep.getFinanceId())){
+			asyncUtils.updateFinanceExamine(financeId);
+		}
+	}
+
 	@Override
 	@Override
 	public boolean checkDepNo(String depNo,Integer type) {
 	public boolean checkDepNo(String depNo,Integer type) {
 		String useDepNo=departmentMapper.selectIdByDepNo(depNo);
 		String useDepNo=departmentMapper.selectIdByDepNo(depNo);

+ 11 - 85
src/main/java/com/goafanti/permission/service/impl/NewRoleServiceImpl.java

@@ -13,11 +13,13 @@ import java.util.UUID;
 import com.goafanti.common.bo.OrderExamineBo;
 import com.goafanti.common.bo.OrderExamineBo;
 import com.goafanti.common.dao.*;
 import com.goafanti.common.dao.*;
 import com.goafanti.common.model.*;
 import com.goafanti.common.model.*;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.order.bo.NewOrderChangeBo;
 import com.goafanti.order.bo.NewOrderChangeBo;
 import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.enums.ChangeState;
 import com.goafanti.order.enums.ChangeState;
 import com.goafanti.order.enums.NewProjectStatus;
 import com.goafanti.order.enums.NewProjectStatus;
 import com.goafanti.order.enums.OrderChangeProcess;
 import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.service.OrderChangeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -69,12 +71,12 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 	@Autowired
 	@Autowired
 	private TOrderLogMapper	tOrderLogMapper;
 	private TOrderLogMapper	tOrderLogMapper;
 	@Autowired
 	@Autowired
-	private TChangeTaskMapper tChangeTaskMapper;
+	private AsyncUtils asyncUtils;
 	@Autowired
 	@Autowired
 	private NewOrderChangeMapper newOrderChangeMapper;
 	private NewOrderChangeMapper newOrderChangeMapper;
 
 
 	@Autowired
 	@Autowired
-	private OrderChangeLogMapper	orderChangeLogMapper;
+	private OrderChangeService	orderChangeService;
 
 
 
 
 	@Override
 	@Override
@@ -217,110 +219,34 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 				organizationContactBookMapper.updateDimissionTransfer(aid,transferId);
 				organizationContactBookMapper.updateDimissionTransfer(aid,transferId);
 				//所有客户转交给接受者
 				//所有客户转交给接受者
 				userMapper.updateDimissionTransfer(aid,transferId);
 				userMapper.updateDimissionTransfer(aid,transferId);
-			}
-			if (s==roleResources.QDYW.getCode()) {
+			}else if (s==roleResources.QDYW.getCode()) {
 				userTransferLogMapper.insertUserLockLog(aid,transferId,date);
 				userTransferLogMapper.insertUserLockLog(aid,transferId,date);
 				patentNewMapper.updateAdmin(aid,transferId);
 				patentNewMapper.updateAdmin(aid,transferId);
 				roleResourcesMapper.updateLockRelease("1",aid,transferId);//将业务锁转给指定人
 				roleResourcesMapper.updateLockRelease("1",aid,transferId);//将业务锁转给指定人
 
 
-			}
-			if (s == roleResources.YQDD.getCode()) {
-
+			}else if (s == roleResources.YQDD.getCode()) {
 				StringBuffer str=new StringBuffer();
 				StringBuffer str=new StringBuffer();
 				str.append(admin.getName()).append("离职转交到").append(tadmin.getName());
 				str.append(admin.getName()).append("离职转交到").append(tadmin.getName());
 				tOrderLogMapper.insertOrderLog(aid,TokenManager.getAdminId(),date,str.toString());
 				tOrderLogMapper.insertOrderLog(aid,TokenManager.getAdminId(),date,str.toString());
 				tOrderNewMapper.updateSalesmanId(aid, transferId);
 				tOrderNewMapper.updateSalesmanId(aid, transferId);
 				tOrderMidMapper.updateSalesmanId(aid, transferId);
 				tOrderMidMapper.updateSalesmanId(aid, transferId);
-			}
-			if (s == roleResources.XMRW.getCode()) {
+			}else if (s == roleResources.XMRW.getCode()) {
 				// 获取被转角色判断修改对应任务角色
 				// 获取被转角色判断修改对应任务角色
-				pushTechTransfer(aid,transferId,date,admin,tadmin);
+				asyncUtils.pushTechTransfer(admin,tadmin,date);
 
 
-			}
-			if (s!=roleResources.QDYW.getCode()) {
+			}else if (s==roleResources.QDYW.getCode()) {
 				roleResourcesMapper.updateDimissionTransfer(s,aid,transferId);
 				roleResourcesMapper.updateDimissionTransfer(s,aid,transferId);
 			}
 			}
 		}
 		}
 		return 1;
 		return 1;
 	}
 	}
 
 
-	public  void pushTechTransfer(String aid, String transferId,Date date,Admin admin,Admin tadmin) {
-		//获取旧人员与新人员的角色
-		int useType=getTech(aid);
-		int newType=getTech(transferId);
-		//如果不是咨询或者经理不走项目转交
-		if(useType!=-1&&newType!=-1){
-			//获取所有需要修改角色的变更项目
-			List<TChangeTask> list = tOrderTaskMapper.selectByAid(aid);
-			if ((useType==0&&newType==0)||(useType==1&&newType==1)){
-				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, useType);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,useType);
-			}else if (useType==0&&newType==1){//下转上 下清空
-				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 3);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,newType);
-				orderExamineMapper.deleteByAidAndStatus(null,aid,useType);
-			}else if (useType==1&&newType==0){//上转下  上清空
-				tOrderTaskMapper.updateDimissionTransfer(aid, transferId, 4);
-				orderExamineMapper.updateDimissionTransfer(aid, transferId,newType);
-				orderExamineMapper.deleteByAidAndStatus(null,aid,useType);
-			}
-			List<Integer> clist=new ArrayList<>();
-			for (TChangeTask tct : list) {
-				TChangeTask nt = new TChangeTask();
-				tct.setId(tct.getId());
-				tct.setReceiverName(tadmin.getName());
-				tChangeTaskMapper.updateByPrimaryKeySelective(tct);
-				if (!clist.contains(tct.getCid()))clist.add(tct.getCid());
-			}
-			for (Integer i : clist) {
-				NewOrderChangeBo changeBo = newOrderChangeMapper.selectById(i);
-				int x=1;
-				if (changeBo.getProcessState()== OrderChangeProcess.JSY.getCode()){
-					x=orderExamineMapper.checkCountStatus(changeBo.getOrderNo(), 0,0);
 
 
-				}else if (changeBo.getProcessState()==OrderChangeProcess.JSJL.getCode()){
-					  x=orderExamineMapper.checkCountStatus(changeBo.getOrderNo(), 1,0);
-				}
-				if (x==0){
-					OrderChangeLog log=new OrderChangeLog();
-					log.setChangeId(i);
-					log.setCreateTime(date);
-					log.setOrderNo(changeBo.getOrderNo());
-					log.setStatus(2);
-					log.setRemarks("离职转交自动通过");
-					log.setAuditor("1");
-					orderChangeLogMapper.insertSelective(log);
-					changeBo.setProcessState(changeBo.getProcessState()+1);
-					newOrderChangeMapper.updateByPrimaryKeySelective(changeBo);
-				}
-			}
-			newOrderChangeMapper.updateTaskExamineName(aid,transferId,OrderChangeProcess.JSY.getCode());
-			newOrderChangeMapper.updateTaskExamineName(aid,transferId,OrderChangeProcess.JSJL.getCode());
-			taskAttributionLogMapper.insertList(aid, transferId, date);
-			tTaskLogMapper.updateDimissionTransfer(aid, transferId);
-		}
 
 
-	}
 
 
-	/**
-	 * 判断角色
-	 * @param transferId
-	 * @return 0咨询师 1经理 -1非咨询角色
-	 */
-	private int getTech(String transferId) {
-		List<String>  l=adminMapper.getAdminRoleListByAid(transferId);
-		for (String str : l) {
-			if (str==null){
-				break;
-			}else if (str.equals(AFTConstants.TECH_MANAGER)) {
-				return 1;
-			}else if (str.equals(AFTConstants.TECH)){
-				return 0;
-			}
-		}
 
 
-		return -1;
-	}
+
+
 
 
 	@Override
 	@Override
 	public List<RoleResources> ResourcesDetail(String rid) {
 	public List<RoleResources> ResourcesDetail(String rid) {

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

@@ -52,7 +52,7 @@ yxjl_max=100
 amb.maxLvl=6
 amb.maxLvl=6
 
 
 avatar.host=//static.jishutao.com
 avatar.host=//static.jishutao.com
-static.host=//static.jishutao.com/1.2.59
+static.host=//static.jishutao.com/1.2.60
 rd.static.host=//static.jishutao.com/RD/1.0.00
 rd.static.host=//static.jishutao.com/RD/1.0.00
 #avatar.host=//172.16.0.255:3000
 #avatar.host=//172.16.0.255:3000
 #static.host=//172.16.0.255:3000/1.2.14
 #static.host=//172.16.0.255:3000/1.2.14

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

@@ -49,7 +49,7 @@ yxjl_max=100
 
 
 amb.maxLvl=6
 amb.maxLvl=6
 
 
-static.host=//static.jishutao.com/1.2.59
+static.host=//static.jishutao.com/1.2.60
 portal.host=//static.jishutao.com/portal/2.0.6
 portal.host=//static.jishutao.com/portal/2.0.6
 avatar.host=//static.jishutao.com
 avatar.host=//static.jishutao.com
 rd.static.host=//static.jishutao.com/RD/1.0.00
 rd.static.host=//static.jishutao.com/RD/1.0.00