Explorar o código

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

anderx %!s(int64=3) %!d(string=hai) anos
pai
achega
4e6fc0bc79
Modificáronse 34 ficheiros con 967 adicións e 468 borrados
  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, "当前用户已注册!"));
 				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"));
 				return res;
 			}
@@ -157,18 +157,19 @@ public class AdminSuperviserApiController extends CertifyApiController {
 			}
 			Admin ad = new Admin();
 			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);
 			if (!res.getError().isEmpty()) {
 				return res;
 			}
 			//如果锁定,清楚登陆者的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());
 			}
-			res.setData(newAdminService.updateByPrimaryKeySelective(ad, roles));
+			res.setData(newAdminService.updateByPrimaryKeySelective(ad,useAdmin, roles));
 		}
 		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 updateByPrimaryKeySelective(Admin ad, List<String> roleIds);
+	int updateByPrimaryKeySelective(Admin ad,Admin useAdmin, List<String> roleIds );
 
 	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")
 	@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<>();
 		params.put("uid", ad.getId());
 		params.put("roles", roleIds);
-		Set<String> useRole = roleMapper.findRoleByUserId(ad.getId());
+		List<Role>  useRole = roleMapper.selectByAid(ad.getId());
 		if (ad.getId() != "1") {
 			userRoleMapper.deleteByUserId(ad.getId());
 			if (!roleIds.isEmpty()) {
@@ -104,11 +104,11 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 			}
 			TokenManager.clearUserAuthByUserId(ad.getId());
 		}
-
 		ad.setType(sumType(roleIds));
 		int count=adminMapper.updateByPrimaryKey(ad);
+		//
+		asyncUtils.pushRoleUpdateExamine(ad,useAdmin,roleIds,useRole);
 		pushAmbRole(ad);
-		pushAdminRole(ad.getId(),roleIds,useRole);
 		if (count>0&&ad.getAmbId()!=null){
 			//进行巴人数计算
 //			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(","));
 //
 //			}
-
-
 		}
 		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) {
 		int type=0;
@@ -327,10 +254,12 @@ public class NewAdminServiceImpl extends BaseMybatisDao<AdminMapper> implements
 		}
 		if(ad.getAmbId()!=null)pushAmbRole(ad);
 		adminMapper.insert(ad);
-		pushAdminRole(ad.getId(),roleIds,null);
+
 		return 1;
 	}
 
+
+
 	/**
 	 * 计算巴权限
 	 * @param ad

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

@@ -42,15 +42,7 @@ public interface NewOrderChangeMapper {
 
     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);
 
@@ -60,5 +52,15 @@ public interface NewOrderChangeMapper {
      * @param orderNo
      * @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);
 
+    /**
+     *
+     * @param aid
+     * @param transferId
+     * @param type 0咨询师 1经理 2咨询师转交经理 3经理转交咨询师
+     */
 	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);
 
+	List<Role> selectByAid(String userId);
+
 	List<RolePermissionBo> findRolePermissions();
 
 	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 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);
 
     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.TOrderNew;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -56,17 +57,9 @@ public interface TOrderNewMapper {
 
     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();
 
@@ -76,4 +69,8 @@ public interface TOrderNewMapper {
      * @return
      */
     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 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  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 id="updateTaskExamineName">
       update new_order_change n left join (select c.id
@@ -772,11 +761,70 @@ select
       set n.examine_name =a.name
       where n.process_state =#{type}
     </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,
            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
            left join t_order_new b on a.order_no =b.order_no
            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 a.id= #{id}
   </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>

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

@@ -335,10 +335,23 @@
   </update>
    <update id="updateDimissionTransfer">
   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}
-    <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>
 
   <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
     where tur.uid = #{userId,jdbcType=VARCHAR}
   </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 from role
     where id in
@@ -187,4 +194,5 @@
             #{item,jdbcType=VARCHAR}
         </foreach>
     </select>
+
 </mapper>

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

@@ -485,4 +485,5 @@
     set a.service_year =x.counts
     where a.id =x.change_split_super
   </update>
+    <update id="updateDimissionTransfer"></update>
 </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
   </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>

+ 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},
                            refund_amount=#{refundAmount,jdbcType=DECIMAL}	where order_no=#{orderNo}
   </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">
@@ -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}
     order by create_time desc
   </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 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,
@@ -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}
     </if>
     )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 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>
 
 
-  <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 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}
   </select>
 
+
+
 </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
   </select>
   <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">
       ,consultant_id=#{transferId,jdbcType=VARCHAR}
     </if>
@@ -1197,11 +1199,16 @@
     </if>
     <if test="type==3">
       ,consultant_id= null
+      ,manager_id=#{transferId,jdbcType=VARCHAR}
+    </if>
+    <if test="type==4">
+      ,consultant_id=#{transferId,jdbcType=VARCHAR}
+      ,manager_id= null
     </if>
     <if test="type==1">
       ,manager_id= null
     </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>
 
   <select id="selectEstimateCost" resultType="java.lang.String">
@@ -2292,5 +2299,10 @@
     delete from t_order_task
     where split_super = #{id,jdbcType=INTEGER}
   </delete>
+  <update id="updateDimissionTransferManager">
+    update t_order_task
+    set manager_id= #{transferId}
+    where manager_id = #{aid}
+  </update>
 
 </mapper>

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

@@ -1,14 +1,12 @@
 package com.goafanti.common.utils;
 
 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 com.goafanti.admin.bo.AdminListBo;
+import com.goafanti.common.bo.OrderExamineBo;
 import com.goafanti.common.bo.OrderOperator;
 import com.goafanti.common.constant.AFTConstants;
 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.TOrderNewBo;
 import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.enums.OrderChangeType;
 import com.goafanti.order.enums.ProcessStatus;
+import com.goafanti.organization.bo.OrganizationListOut;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -37,11 +37,24 @@ public class AsyncUtils {
 	@Autowired
 	private TOrderNewMapper tOrderNewMapper;
 	@Autowired
+	private TOrderTaskMapper tOrderTaskMapper;
+	@Autowired
 	private NewOrderChangeMapper newOrderChangeMapper;
 	@Autowired
-	private TOrderInvoiceMapper tOrderInvoiceMapper;
+	private OrderExamineMapper orderExamineMapper;
 	@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;
 	}
 
+
+
 	/**
 	 * 设置单元格信息
 	 *
@@ -473,7 +475,11 @@ public class NewExcelUtil<T> {
 			if (attr.percentage()==1){
 				if (value!=null){
 					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 {
 					value="0%";
 				}

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

@@ -6,8 +6,10 @@ public class OutProcessName {
     private Integer type;
     private String changeAmount;
     private Integer status;
+    private Integer special;
     private Integer processState;
     private String yxy;
+    private String salesmanId;
     private String yxjl;
     private String yxgly;
     private String zxs;
@@ -18,6 +20,23 @@ public class OutProcessName {
     private String zc;
     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() {
         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;
 	}
 	/**
-	 * 订单详情
+	 * 订单审核列表
 	 * @param orderNo
 	 * @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;
 
 	/**
-	 * 项目分配、项目派单
+	 * 项目分配、项目派单、项目转交
 	 * taskId 项目ID
 	 * taskReceiverId 受理人ID
 	 * 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.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import com.goafanti.order.service.OrderStatisticsService;
 import com.goafanti.order.service.UserStaticticsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -94,8 +95,21 @@ public class StatisticsApiController extends CertifyApiController {
 	 */
 	@RequestMapping(value="/orderSalesSource/export" ,method = RequestMethod.GET)
 	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);
+		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("搜索条件=》");
 		if (in.getDepName()!=null){
 			str=str.append("部门:").append(in.getDepName()).append(";");
@@ -106,11 +120,11 @@ public class StatisticsApiController extends CertifyApiController {
 		if (in.getSort()!=null){
 			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("~")
 					.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;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import com.goafanti.common.model.NewOrderChange;
 import com.goafanti.common.model.OrderRefundInvoice;
 import com.goafanti.common.model.TChangeDun;
 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,
 			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);
@@ -122,4 +127,11 @@ public interface OrderChangeService {
 	Object gerProcessName(Integer id);
 
     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 {
 
 
-	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
 	public List<NewOrderChangeBo> orderChangeDetails(String 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());
 //			if (noc.getVoucherUrl()!=null) {
 //				TOrderNew t=tOrderNewMapper.selectByPrimaryKey(noc.getOrderNo());
 //				noc.setVoucherUrl(pushOrderService.changeProcessStatusConstant(noc.getVoucherUrl(),t.getSalesmanId(),noc.getProcessState(),noc.getStatus()));
 //			}
 //			noc.setIsExamine(isExamine);
-//		}
+		}
 		return list;
 	}
+
+	private String getExamineName(NewOrderChangeBo noc) {
+		String names="";
+		return names;
+	}
+
 	@Override
 	public NewOrderChangeBo orderChangeDetailsById(Integer id) {
 		NewOrderChangeBo nb=newOrderChangeMapper.selectById(id);
@@ -256,8 +263,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		if (nb.getStatus()==4) {
 			throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
 		}
-		boolean zxsFlag=false;
-		boolean zxsjlFlag=false;
+		Date date =new Date();
 		//2通过 3驳回
 		if (status==2) {
 			//变更类型 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.TDTK.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()){
 							nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
 						}else if (nb.getType()==OrderChangeType.ZS.getCode()){
 							nb.setProcessState(OrderChangeProcess.CWZY.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()){
 						//咨询师经理审核,将自己审核的全部标记已审核
 						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()){
 						nb.setProcessState(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);
 				int wsh=orderExamineMapper.checkCountStatus(nb.getOrderNo(),0,0);
 				if (wsh==0){
-					zxsFlag=true;
-					zxsjlFlag= pushZXSJLprocess( nb);
+					pushZXSJL( nb,date,1);
 				}
 			}else if(rejectState==4){
-				zxsjlFlag=pushZXSJLprocess(nb);
+				pushZXSJL(nb,date,1);
 			}
 		}
 		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);
 		pushOrderCangeProcess(nb);
@@ -397,27 +385,34 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	}
 
 	/**
-	 *  判断zxs是否全审核,全审核就去判断咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
+	 *
 	 * @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,在后续添加日志放到先审核,后添加日志
 	 * @param nb
+	 * @param type 0正常审核  1跨流程需要通知
 	 * @return
 	 */
-	private boolean pushZXSJLprocess(NewOrderChangeBo nb) {
+	@Override
+	public void pushZXSJL(NewOrderChangeBo nb,Date date,Integer type) {
 		int zxsjl=orderExamineMapper.checkCountStatus(nb.getOrderNo(),1,0);
-		boolean zxsjlFlag=false;
 		if (nb.getType()==OrderChangeType.XMJJEBG.getCode()||
 				nb.getType()==OrderChangeType.TDTK.getCode()||
 				nb.getType()==OrderChangeType.TDBTK.getCode()||
@@ -426,7 +421,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			if (zxsjl>0){
 				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
 			}else {
-				zxsjlFlag=true;
+				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());
@@ -436,7 +434,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				}
 			}
 		}
-		return zxsjlFlag;
 	}
 
 	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.setStatus(1);//订单置为正常
 			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);
 			TOrderNew ton=new TOrderNew();
 			ton.setOrderNo(noc.getOrderNo());
@@ -694,7 +692,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			tOrderNewMapper.updateByPrimaryKeySelective(ton);
 			TOrderNewBo tOrderNew = tOrderNewMapper.getSaleIdByOno(t.getOrderNo());
 			if (t.getType()!=OrderChangeType.JBGGT.getCode()){
-				Date date =new Date();
 				if (tOrderNew.getManagerName()!=null){
 					noc.setProcessState(OrderChangeProcess.YXJL.getCode());
 				}else {
@@ -709,8 +706,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					}
 					//如果自己是审核人员则跳过
 					if (flag){
-						boolean zxsFlag=false;
-						boolean zxsjlFlag=false;
 						if (t.getType()==OrderChangeType.CB.getCode()||
 								t.getType()==OrderChangeType.JXMBG.getCode()||
 								t.getType()==OrderChangeType.XMJJEBG.getCode()||
@@ -718,26 +713,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 								t.getType()==OrderChangeType.TDBTK.getCode()){
 							//将所有审核重置
 							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()){
 							noc.setProcessState(OrderChangeProcess.CWZY.getCode());
 						}else if(t.getType()==OrderChangeType.JJEBG.getCode()){
@@ -763,6 +739,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		return 1;
 	}
 
+	@Override
 	public  void pushOrderCangeProcess(NewOrderChange noc) {
 		if (noc.getProcessState()== OrderChangeProcess.YXY.getCode()){
 			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
@@ -1582,7 +1559,11 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	@Override
 	public Object gerProcessName(Integer 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
@@ -1609,4 +1590,19 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 
 		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 admin = adminMapper.selectByPrimaryKey(a.getManagerId());
 			t.setExamineName(admin.getName());
-		}else if (t.getProcessStatus()==ProcessStatus.YPCWZY.getCode()){
+		}else if (t.getProcessStatus()==ProcessStatus.YPYXGLY.getCode()){
 			if (t.getOrderDep()!=null){
 				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){
 				OrganizationListOut dep = departmentMapper.selectAllById(t.getOrderDep());
-				t.setExamineName(dep.getManagerName());
+				t.setExamineName(dep.getFinanceName());
 			}
 		}else if (t.getProcessStatus()==ProcessStatus.YPZXSGLY.getCode()){
 			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN);
@@ -1937,7 +1937,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 
 	@Override
 	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.controller.InputTaskStopLog;
 import com.goafanti.order.enums.*;
+import com.goafanti.order.service.OrderChangeService;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -120,6 +121,8 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	private TaskStopMapper taskStopMapper;
 	@Autowired
 	private TaskStopLogMapper taskStopLogMapper;
+	@Autowired
+	private OrderChangeService orderChangeService;
 
 
 
@@ -160,11 +163,12 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		}else if(type==2) {
 			addOrderLog(t.getOrderNo(), OrderLogProcess.XMJLPD.getCode(),remarks);
 			t.setConsultantId(taskReceiverId);
+		}else if(type==3) {
+			t.setConsultantId(taskReceiverId);
 		}else if(type==4) {
 			t.setConsultantId(null);
 			t.setManagerId(taskReceiverId);
 		}
-
 		t.setReceiverName(a.getName());
 		tOrderTaskMapper.updateByPrimaryKey(t);
 		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.core.mybatis.BaseMybatisDao;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import com.goafanti.order.service.OrderStatisticsService;
 import groovy.util.logging.Log4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 @Service
@@ -18,14 +20,21 @@ public class OrderStatisticsServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	private TOrderNewMapper tOrderNewMapper;
 
 	@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.getDeps()!=null){
 			List<String> ls= JSON.parseArray(in.getDeps(),String.class);
 			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.NewOrderChangeMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
+import com.goafanti.common.enums.OrderState;
 import com.goafanti.common.model.Department;
 import com.goafanti.common.utils.AsyncUtils;
+import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.organization.bo.DepOut;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -196,16 +198,24 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		dep.setProvince(province);
 		dep.setHideSign(hideSign);
 		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);
 		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
 	public boolean checkDepNo(String depNo,Integer type) {
 		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.dao.*;
 import com.goafanti.common.model.*;
+import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.order.bo.NewOrderChangeBo;
 import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.enums.ChangeState;
 import com.goafanti.order.enums.NewProjectStatus;
 import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.service.OrderChangeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -69,12 +71,12 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 	@Autowired
 	private TOrderLogMapper	tOrderLogMapper;
 	@Autowired
-	private TChangeTaskMapper tChangeTaskMapper;
+	private AsyncUtils asyncUtils;
 	@Autowired
 	private NewOrderChangeMapper newOrderChangeMapper;
 
 	@Autowired
-	private OrderChangeLogMapper	orderChangeLogMapper;
+	private OrderChangeService	orderChangeService;
 
 
 	@Override
@@ -217,110 +219,34 @@ public class NewRoleServiceImpl extends BaseMybatisDao<RoleMapper> implements Ne
 				organizationContactBookMapper.updateDimissionTransfer(aid,transferId);
 				//所有客户转交给接受者
 				userMapper.updateDimissionTransfer(aid,transferId);
-			}
-			if (s==roleResources.QDYW.getCode()) {
+			}else if (s==roleResources.QDYW.getCode()) {
 				userTransferLogMapper.insertUserLockLog(aid,transferId,date);
 				patentNewMapper.updateAdmin(aid,transferId);
 				roleResourcesMapper.updateLockRelease("1",aid,transferId);//将业务锁转给指定人
 
-			}
-			if (s == roleResources.YQDD.getCode()) {
-
+			}else if (s == roleResources.YQDD.getCode()) {
 				StringBuffer str=new StringBuffer();
 				str.append(admin.getName()).append("离职转交到").append(tadmin.getName());
 				tOrderLogMapper.insertOrderLog(aid,TokenManager.getAdminId(),date,str.toString());
 				tOrderNewMapper.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);
 			}
 		}
 		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
 	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
 
 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
 #avatar.host=//172.16.0.255:3000
 #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
 
-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
 avatar.host=//static.jishutao.com
 rd.static.host=//static.jishutao.com/RD/1.0.00