Просмотр исходного кода

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

anderx 1 год назад
Родитель
Сommit
08dd0f9ea1
43 измененных файлов с 1873 добавлено и 1316 удалено
  1. 9 0
      src/main/java/com/goafanti/admin/bo/AdminListBo.java
  2. 3 0
      src/main/java/com/goafanti/business/controller/RestrictProjectController.java
  3. 2 0
      src/main/java/com/goafanti/business/service/RestrictProjectService.java
  4. 38 0
      src/main/java/com/goafanti/business/service/impl/RestrictProjectServiceImpl.java
  5. 11 2
      src/main/java/com/goafanti/common/dao/AdminMapper.java
  6. 8 0
      src/main/java/com/goafanti/common/dao/DepartmentMapper.java
  7. 6 7
      src/main/java/com/goafanti/common/dao/PermissionMapper.java
  8. 2 0
      src/main/java/com/goafanti/common/dao/RestrictProjectMapper.java
  9. 3 0
      src/main/java/com/goafanti/common/dao/StandardDocumentMapper.java
  10. 4 3
      src/main/java/com/goafanti/common/enums/NoticeStatus.java
  11. 8 2
      src/main/java/com/goafanti/common/enums/NoticeTypes.java
  12. 19 10
      src/main/java/com/goafanti/common/mapper/AdminMapper.xml
  13. 601 691
      src/main/java/com/goafanti/common/mapper/DepartmentMapper.xml
  14. 15 7
      src/main/java/com/goafanti/common/mapper/PermissionMapper.xml
  15. 8 3
      src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml
  16. 7 0
      src/main/java/com/goafanti/common/mapper/RestrictProjectMapper.xml
  17. 6 1
      src/main/java/com/goafanti/common/mapper/StandardDocumentMapper.xml
  18. 652 445
      src/main/java/com/goafanti/common/model/Admin.java
  19. 201 2
      src/main/java/com/goafanti/common/model/Department.java
  20. 1 1
      src/main/java/com/goafanti/common/utils/excel/NewExcelUtil.java
  21. 2 2
      src/main/java/com/goafanti/customer/bo/InputExcelUser.java
  22. 1 1
      src/main/java/com/goafanti/customer/controller/AdminCustomerApiController.java
  23. 19 15
      src/main/java/com/goafanti/customer/service/impl/CustomerServiceImpl.java
  24. 1 1
      src/main/java/com/goafanti/expenseAccount/controller/ExpenseAccountController.java
  25. 3 1
      src/main/java/com/goafanti/expenseAccount/controller/ExpenseCountsController.java
  26. 41 10
      src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java
  27. 1 1
      src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java
  28. 7 7
      src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java
  29. 31 32
      src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java
  30. 4 5
      src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java
  31. 12 0
      src/main/java/com/goafanti/organization/bo/InputDep.java
  32. 18 0
      src/main/java/com/goafanti/organization/bo/OrganizationListOut.java
  33. 2 1
      src/main/java/com/goafanti/organization/controller/AdminOrganizationController.java
  34. 7 3
      src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java
  35. 19 0
      src/main/java/com/goafanti/permission/bo/SubMenu.java
  36. 21 35
      src/main/java/com/goafanti/permission/service/impl/PermissionServiceImpl.java
  37. 8 0
      src/main/java/com/goafanti/standard/controller/StandardApiController.java
  38. 2 0
      src/main/java/com/goafanti/standard/service/StandardService.java
  39. 8 0
      src/main/java/com/goafanti/standard/service/impl/StandardServiceImpl.java
  40. 19 0
      src/main/java/com/goafanti/weChat/bo/InputreleaseAndExpenseCount.java
  41. 38 23
      src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java
  42. 4 4
      src/main/resources/props/config_local.properties
  43. 1 1
      src/main/resources/props/config_test.properties

+ 9 - 0
src/main/java/com/goafanti/admin/bo/AdminListBo.java

@@ -130,6 +130,15 @@ public class AdminListBo {
 	private String ambName;
 	private String ancestorsNames;
 	private String ambRole;
+	private String publicCarbonCopy;
+
+	public String getPublicCarbonCopy() {
+		return publicCarbonCopy;
+	}
+
+	public void setPublicCarbonCopy(String publicCarbonCopy) {
+		this.publicCarbonCopy = publicCarbonCopy;
+	}
 
 	public Integer getExpenseSuperExamine() {
 		return expenseSuperExamine;

+ 3 - 0
src/main/java/com/goafanti/business/controller/RestrictProjectController.java

@@ -33,6 +33,9 @@ public class RestrictProjectController extends CertifyApiController {
                     ParamUtils.getParamName(in,bindingResult.getFieldError().getField())));
             return res;
         }
+        if (restrictProjectService.checkMax(in.getUid())){
+            return res.error(buildError("领取失败!您的“私有客户/私有限定项目”总计已超出最大限制,请移出相关数据后,再来领取!"));
+        }
         return res.data(restrictProjectService.add(in));
     }
 

+ 2 - 0
src/main/java/com/goafanti/business/service/RestrictProjectService.java

@@ -15,4 +15,6 @@ public interface RestrictProjectService {
     Object getFollowDetails(String uid);
 
     Object getRestrictProjectUser(String ids);
+
+    boolean checkMax(String uid);
 }

+ 38 - 0
src/main/java/com/goafanti/business/service/impl/RestrictProjectServiceImpl.java

@@ -16,6 +16,7 @@ import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.customer.bo.BusinessListBo;
 import com.goafanti.customer.bo.FollowBusinessBo;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -39,6 +40,13 @@ public class RestrictProjectServiceImpl extends BaseMybatisDao<RestrictProjectMa
     @Resource
     private BusinessProjectMapper businessProjectMapper;
 
+    @Value(value = "${yxzj_max}")
+    private Integer YXZJ_MAX = null;
+    @Value(value = "${yxy_max}")
+    private Integer YXY_MAX = null;
+    @Value(value = "${yxjl_max}")
+    private Integer YXJL_MAX = null;
+
 
 
 
@@ -263,4 +271,34 @@ public class RestrictProjectServiceImpl extends BaseMybatisDao<RestrictProjectMa
         }
         return list;
     }
+
+    @Override
+    public boolean checkMax(String uid) {
+        int i = userMapper.checkUserMax(TokenManager.getAdminId());
+        int limitMax=101;
+        //加入限定项目的数量
+        int rpCount =restrictProjectMapper.selectPrivateByAid(TokenManager.getAdminId());
+        i=i+rpCount;
+        User user = userMapper.selectByPrimaryKey(uid);
+        if (user.getShareType()==0||user.getShareType()==2){
+            //0私有 2签单
+            if (!user.getAid().equals(TokenManager.getAdminId())){
+                //是自己的
+                i++;
+            }
+       }else if(user.getShareType()==1) {
+            //公共客户
+            i++;
+       }
+        if (TokenManager.hasRole(AFTConstants.SALESMAN_DIRECTOR)){
+            if(limitMax<YXZJ_MAX)limitMax = YXZJ_MAX;
+        } else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)){
+            if(limitMax<YXJL_MAX)limitMax = YXJL_MAX;
+
+        } else if (TokenManager.hasRole(AFTConstants.SALESMAN)){
+            if(limitMax<YXY_MAX)limitMax = YXY_MAX;
+
+        }
+        return i >= limitMax;
+    }
 }

+ 11 - 2
src/main/java/com/goafanti/common/dao/AdminMapper.java

@@ -2,13 +2,22 @@ package com.goafanti.common.dao;
 
 import com.goafanti.admin.bo.*;
 import com.goafanti.common.bo.AdminNoticeBo;
-import com.goafanti.common.model.*;
+import com.goafanti.common.model.Admin;
+import com.goafanti.common.model.AdminUserCount;
+import com.goafanti.common.model.Department;
+import com.goafanti.common.model.Role;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 import java.util.List;
-
+/**
+* @author Administrator
+* @description 针对表【admin】的数据库操作Mapper
+* @createDate 2024-06-12 08:51:13
+* @Entity com.goafanti.common.model.Admin
+*/
 public interface AdminMapper {
+
     int deleteByPrimaryKey(String id);
 
     int insert(Admin record);

+ 8 - 0
src/main/java/com/goafanti/common/dao/DepartmentMapper.java

@@ -10,6 +10,12 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
+/**
+* @author Administrator
+* @description 针对表【department】的数据库操作Mapper
+* @createDate 2024-06-11 17:10:31
+* @Entity com.goafanti.common.model.Department
+*/
 public interface DepartmentMapper {
     int deleteByPrimaryKey(String id);
 
@@ -120,4 +126,6 @@ public interface DepartmentMapper {
 
 
     void updateOrderDepFinanceNotExamine(@Param("newFinanceId") String newFinanceId, @Param("useFinanceId") String useFinanceId);
+
+    void updateExpenseFinanceNotExamine(@Param("newFinanceId") String newFinanceId, @Param("useFinanceId") String useFinanceId);
 }

+ 6 - 7
src/main/java/com/goafanti/common/dao/PermissionMapper.java

@@ -1,14 +1,13 @@
 package com.goafanti.common.dao;
 
-import java.util.List;
-import java.util.Set;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.goafanti.common.model.Permission;
+import com.goafanti.permission.bo.Menu;
 import com.goafanti.permission.bo.Navigation;
 import com.goafanti.permission.bo.PermissionBo;
-import com.goafanti.permission.bo.SubMenu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
 
 public interface PermissionMapper {
     int deleteByPrimaryKey(String id);
@@ -71,7 +70,7 @@ public interface PermissionMapper {
 	
 	List<Navigation> selectNavList(@Param("aid")String aid);
 
-	List<SubMenu> selectMenuList(@Param("superId")String superId,@Param("aid")String aid);
+	List<Menu> selectMenuList(@Param("superId")String superId, @Param("aid")String aid);
 
 	String selectTopNavBySubUrl(@Param("subUrl")String subUrl);
 

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

@@ -46,4 +46,6 @@ public interface RestrictProjectMapper {
 
 
     void deleteByPram(RestrictProject restrictProject);
+
+    int selectPrivateByAid(String aid);
 }

+ 3 - 0
src/main/java/com/goafanti/common/dao/StandardDocumentMapper.java

@@ -24,4 +24,7 @@ public interface StandardDocumentMapper {
     int updateByPrimaryKey(StandardDocument record);
 
     OutStandardDocument selectDetailsById(Integer id);
+
+
+    StandardDocument selectByNumber(StandardDocument in);
 }

+ 4 - 3
src/main/java/com/goafanti/common/enums/NoticeStatus.java

@@ -60,9 +60,9 @@ public enum NoticeStatus {
 	CUSTOMER_LOSE270(51,"客户释放(270天)"),
 	CUSTOMER_CHENNEL_RECOVERY(52,"渠道客户回收"),
 	CUSTOMER_CHENNEL_LOSE(53,"渠道客户丢失"),
-	PUBLIC_RELEASE_START(54,"出打卡申请"),
-	PUBLIC_RELEASE_YES(55,"出打卡通过"),
-	PUBLIC_RELEASE_NO(56,"出打卡驳回"),
+	PUBLIC_RELEASE_START(54,"出打卡申请"),
+	PUBLIC_RELEASE_YES(55,"出打卡通过"),
+	PUBLIC_RELEASE_NO(56,"出打卡驳回"),
 	ITEM_CHECK_START(57,"发起专利核对"),
 	ITEM_CHECK_END(58,"完成专利核对"),
 	MENBER_DUN(59,"会员催款信息"),
@@ -88,6 +88,7 @@ public enum NoticeStatus {
 	RESTRICT_PROJECT_LOSE30_REMIND(78,"限时私有项目释放提醒"),
 	RESTRICT_PROJECT_LOSE270_REMIND(79,"限时签单项目释放提醒"),
 	RECEIVE_RESTRICT_PROJECT(80,"领取限定项目"),
+	PUBLIC_CARBON_COPY(81,"公出抄送"),
 	OTHER(0, "其他");
 
 	private NoticeStatus(Integer code, String desc) {

+ 8 - 2
src/main/java/com/goafanti/common/enums/NoticeTypes.java

@@ -20,6 +20,8 @@ public enum NoticeTypes {
 	DDKP(6,"订单开票"),
 
 	HYCS(7,"会员催收"),
+
+	GCXX(8,"公出"),
 	ELSE(0,"其他");
 
 	/**
@@ -69,11 +71,15 @@ public enum NoticeTypes {
 			return 6;
 		}else if (i == NoticeStatus.MENBER_DUN.getCode()) {
 			return 7;
+		}else if ( i== NoticeStatus.PUBLIC_OTHERS_USER.getCode() || i== NoticeStatus.PUBLIC_RELEASE_START.getCode()
+				|| i== NoticeStatus.PUBLIC_RELEASE_YES.getCode()|| i== NoticeStatus.PUBLIC_RELEASE_NO.getCode()
+				|| i== NoticeStatus.PUBLIC_CARBON_COPY.getCode()) {
+			return 8;
 		}
 		return 0;
 	}
 
-	private static Map<Integer, NoticeTypes> status = new HashMap<Integer, NoticeTypes>();
+	private static final Map<Integer, NoticeTypes> status = new HashMap<Integer, NoticeTypes>();
 
 	static {
 		for (NoticeTypes value : NoticeTypes.values()) {
@@ -97,7 +103,7 @@ public enum NoticeTypes {
     }
 
 	public static Integer getCount(){
-		Integer count=0;
+		int count=0;
         for(NoticeTypes x:NoticeTypes.values()){
          if(x!=null)count++;
         }

+ 19 - 10
src/main/java/com/goafanti/common/mapper/AdminMapper.xml

@@ -35,6 +35,7 @@
             <result property="publicPurview" column="public_purview" jdbcType="INTEGER"/>
             <result property="expenseOpenId" column="expense_open_id" jdbcType="VARCHAR"/>
             <result property="expenseSuperExamine" column="expense_super_examine" jdbcType="INTEGER"/>
+            <result property="publicCarbonCopy" column="public_carbon_copy" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -47,17 +48,18 @@
         last_login_time,open_id,type,
         reviewer,amb_id,amb_role,
         amb_manage,manager_id,senior_staff,
-        public_purview,expense_open_id,expense_super_examine
+        public_purview,expense_open_id,expense_super_examine,
+        public_carbon_copy
     </sql>
 
-    <select id="selectByPrimaryKey"  resultMap="BaseResultMap">
+    <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List" />
         from admin
         where  id = #{id,jdbcType=VARCHAR} 
     </select>
 
-    <delete id="deleteByPrimaryKey" >
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
         delete from admin
         where  id = #{id,jdbcType=VARCHAR} 
     </delete>
@@ -73,7 +75,7 @@
         ,reviewer,amb_id,amb_role
         ,amb_manage,manager_id,senior_staff
         ,public_purview,expense_open_id,expense_super_examine
-        )
+        ,public_carbon_copy)
         values (#{id,jdbcType=VARCHAR},#{mobile,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR}
         ,#{password,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP}
         ,#{number,jdbcType=INTEGER},#{province,jdbcType=VARCHAR},#{position,jdbcType=VARCHAR}
@@ -84,7 +86,7 @@
         ,#{reviewer,jdbcType=VARCHAR},#{ambId,jdbcType=VARCHAR},#{ambRole,jdbcType=VARCHAR}
         ,#{ambManage,jdbcType=INTEGER},#{managerId,jdbcType=VARCHAR},#{seniorStaff,jdbcType=INTEGER}
         ,#{publicPurview,jdbcType=INTEGER},#{expenseOpenId,jdbcType=VARCHAR},#{expenseSuperExamine,jdbcType=INTEGER}
-        )
+        ,#{publicCarbonCopy,jdbcType=VARCHAR})
     </insert>
     <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.Admin" useGeneratedKeys="true">
         insert into admin
@@ -119,6 +121,7 @@
                 <if test="publicPurview != null">public_purview,</if>
                 <if test="expenseOpenId != null">expense_open_id,</if>
                 <if test="expenseSuperExamine != null">expense_super_examine,</if>
+                <if test="publicCarbonCopy != null">public_carbon_copy,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
                 <if test="id != null">#{id,jdbcType=VARCHAR},</if>
@@ -151,6 +154,7 @@
                 <if test="publicPurview != null">#{publicPurview,jdbcType=INTEGER},</if>
                 <if test="expenseOpenId != null">#{expenseOpenId,jdbcType=VARCHAR},</if>
                 <if test="expenseSuperExamine != null">#{expenseSuperExamine,jdbcType=INTEGER},</if>
+                <if test="publicCarbonCopy != null">#{publicCarbonCopy,jdbcType=VARCHAR},</if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.Admin">
@@ -243,6 +247,9 @@
                 <if test="expenseSuperExamine != null">
                     expense_super_examine = #{expenseSuperExamine,jdbcType=INTEGER},
                 </if>
+                <if test="publicCarbonCopy != null">
+                    public_carbon_copy = #{publicCarbonCopy,jdbcType=VARCHAR},
+                </if>
         </set>
         where   id = #{id,jdbcType=VARCHAR} 
     </update>
@@ -277,7 +284,8 @@
             senior_staff =  #{seniorStaff,jdbcType=INTEGER},
             public_purview =  #{publicPurview,jdbcType=INTEGER},
             expense_open_id =  #{expenseOpenId,jdbcType=VARCHAR},
-            expense_super_examine =  #{expenseSuperExamine,jdbcType=INTEGER}
+            expense_super_examine =  #{expenseSuperExamine,jdbcType=INTEGER},
+            public_carbon_copy =  #{publicCarbonCopy,jdbcType=VARCHAR}
         where   id = #{id,jdbcType=VARCHAR} 
     </update>
 
@@ -675,9 +683,10 @@
                a.province, a.`position`,a.reviewer , a.superior_id as superiorId,a.public_purview publicPurview,
                a.department_id as departmentId, a.status,a.user_no as userNo,a.duty,a.district,a.expense_super_examine expenseSuperExamine,
                a.head_portrait_url as headPortraitUrl, a.contact_mobile as contactMobile,a.senior_staff seniorStaff,
-               b.name superior,c.name reviewerName,a.type,a.amb_id ambId,a.manager_id managerId ,d.name managerName
+               b.name superior,c.name reviewerName,a.type,a.amb_id ambId,a.manager_id managerId ,d.name managerName,
+               a.public_carbon_copy publicCarbonCopy,e.name publicCarbonCopyName
         from admin a left join admin b on a.superior_id =b.id left join admin c on a.reviewer =c.id
-                     left join admin d on a.manager_id=d.id
+                     left join admin d on a.manager_id=d.id left join admin e on a.public_carbon_copy=e.id
         where a.id= #{id,jdbcType=VARCHAR}
     </select>
     <select id="selectNameByid" parameterType="java.lang.String" resultType="java.lang.String">
@@ -830,7 +839,8 @@
 
     <select id="getDeptNameByAid" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo">
         select a.id,a.name, d.name as departmentName,a.department_id departmentId,a.email,a.superior_id superiorId,a.open_id openId,
-               a.reviewer,d.manager_id depManager,d.finance_id depFinance,a.public_purview publicPurview,a.expense_super_examine expenseSuperExamine
+               a.reviewer,d.manager_id depManager,d.finance_id depFinance,a.public_purview publicPurview,a.expense_super_examine expenseSuperExamine,
+               a.public_carbon_copy publicCarbonCopy
         from admin a left join department d on a.department_id = d.id
         where a.id = #{_parameter,jdbcType=VARCHAR}
     </select>
@@ -1333,4 +1343,3 @@
     </select>
 
 </mapper>
-

Разница между файлами не показана из-за своего большого размера
+ 601 - 691
src/main/java/com/goafanti/common/mapper/DepartmentMapper.xml


+ 15 - 7
src/main/java/com/goafanti/common/mapper/PermissionMapper.xml

@@ -320,32 +320,40 @@
 		</choose>
 		order by show_order
   </select>
-  <select id="selectMenuList" parameterType="java.lang.String" resultType="com.goafanti.permission.bo.SubMenu">
+  <select id="selectMenuList" parameterType="java.lang.String" resultType="com.goafanti.permission.bo.Menu">
   		<choose>
   			<when test="aid == null">
 		  		select
 					id,
 					name,
-					url
+					url,
+                    super_id superId,
+					type
 				from
 					permission
-				where
-					super_id = #{superId,jdbcType=VARCHAR}
-					and (type = 1 or type = 2)
+				where type in (1,2)
+                <if test="superId != null">
+                    and d.super_id = #{superId,jdbcType=VARCHAR}
+                </if>
+
   			</when>
   			<otherwise>
 				select
 					d.id,
 					d.name,
-					d.url
+					d.url,
+					d.super_id superId,
+					d.type
 				from
 					user_role a left join role b on
 					a.rid = b.id left join role_permission c on
 					b.id = c.rid left join permission d on
 					c.pid = d.id
 				where
-					(d.type = 1 or d.type = 2)
+					d.type in (1,2)
+				  <if test="superId != null">
 					and d.super_id = #{superId,jdbcType=VARCHAR}
+				  </if>
 					and a.uid = #{aid,jdbcType=VARCHAR}
 					group by d.id
   			</otherwise>

+ 8 - 3
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -757,14 +757,19 @@
             c.expenseCount,c.peopleCount,c.notExamine,c.rejectCount,d.paymentAmount,c.days,c.amount expenseAmount
         from t_order_new a left join t_order_mid b on a.order_no =b.order_no
         left join t_order_public_release_count toc on a.order_no =toc.order_no
-        left join (select a.order_no,a.expenseCount,b.peopleCount,c.notExamine, c.rejectCount,a.days,a.amount
+        inner join (select a.order_no,a.expenseCount,b.peopleCount,c.notExamine, c.rejectCount,a.days,a.amount
                 from (select a.order_no,count(a.id)expenseCount,sum(a.amount) amount,sum(ROUND(a.duration/7.5) )days
-                    from expense_account a where a.target_type = 1 and a.status=2 group by order_no )a
+                    from expense_account a where a.target_type = 1 and a.status=2
+                                           <if test="startTime !=null and endTime !=null">
+                                               and a.create_time BETWEEN #{startTime} and #{endTime}
+                                           </if>
+                                           group by order_no )a
                     left join (select order_no,count(aid)peopleCount from (select a.order_no,aid from expense_account a
                     where a.target_type = 1 and a.status=2 group by order_no,aid )a group by order_no)b on a.order_no=b.order_no
                     left join (select a.order_no,sum(notExamine)notExamine,sum(rejectCount)rejectCount
                     from (select a.order_no,status ,IF(status=1,1,0)notExamine,IF(status=3,1,0)rejectCount
-                          from expense_account a where a.target_type=1 )a group by order_no)c on a.order_no=c.order_no )c on a.order_no =c.order_no
+                          from expense_account a where a.target_type=1
+                )a group by order_no)c on a.order_no=c.order_no )c on a.order_no =c.order_no
         left join (    select a.order_no ,sum(c.payment_amount) paymentAmount
             from t_order_new a left join t_order_task b on a.order_no =b.order_no left join  t_order_payment c on b.id =c.tid
             where c.status =3       group by order_no )d on a.order_no=d.order_no

+ 7 - 0
src/main/java/com/goafanti/common/mapper/RestrictProjectMapper.xml

@@ -207,6 +207,13 @@
             and  pid = #{pid,jdbcType=VARCHAR}
         </if>
     </select>
+    <select id="selectPrivateByAid" resultType="java.lang.Integer">
+        select sum(if(a.aid=b.aid ,0,1))counts
+        from restrict_project a left join user b on a.uid =b.id
+        where a.type=1
+          and a.aid = #{aid,jdbcType=VARCHAR}
+    </select>
+
 
     <update id="updateRelease">
         update restrict_project set release_time = now(),type=0

+ 6 - 1
src/main/java/com/goafanti/common/mapper/StandardDocumentMapper.xml

@@ -180,7 +180,12 @@
         where  1=1
         <include refid="standardSql"/>
     </select>
-
+    <select id="selectByNumber"  resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from standard_document
+        where  serial_number= #{serialNumber}
+    </select>
 
 
 </mapper>

Разница между файлами не показана из-за своего большого размера
+ 652 - 445
src/main/java/com/goafanti/common/model/Admin.java


+ 201 - 2
src/main/java/com/goafanti/common/model/Department.java

@@ -5,8 +5,8 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 /**
- * department
- * @author 
+ * 
+ * @TableName department
  */
 public class Department implements Serializable {
     /**
@@ -159,245 +159,444 @@ public class Department implements Serializable {
      */
     private Integer cashierExamine;
 
+    /**
+     * 技术总监审核人
+     */
+    private String techAdminId;
+
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 组织ID
+     */
     public String getId() {
         return id;
     }
 
+    /**
+     * 组织ID
+     */
     public void setId(String id) {
         this.id = id;
     }
 
+    /**
+     * 创建人
+     */
     public String getCreateId() {
         return createId;
     }
 
+    /**
+     * 创建人
+     */
     public void setCreateId(String createId) {
         this.createId = createId;
     }
 
+    /**
+     * 创建时间
+     */
     public Date getCreateTime() {
         return createTime;
     }
 
+    /**
+     * 创建时间
+     */
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 
+    /**
+     * 更新时间
+     */
     public Date getUpdateTime() {
         return updateTime;
     }
 
+    /**
+     * 更新时间
+     */
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
 
+    /**
+     * 删除标识
+     */
     public Integer getDeletedSign() {
         return deletedSign;
     }
 
+    /**
+     * 删除标识
+     */
     public void setDeletedSign(Integer deletedSign) {
         this.deletedSign = deletedSign;
     }
 
+    /**
+     * 组织名称
+     */
     public String getName() {
         return name;
     }
 
+    /**
+     * 组织名称
+     */
     public void setName(String name) {
         this.name = name;
     }
 
+    /**
+     * 组织类型
+     */
     public String getType() {
         return type;
     }
 
+    /**
+     * 组织类型
+     */
     public void setType(String type) {
         this.type = type;
     }
 
+    /**
+     * 组织负责人ID
+     */
     public String getManagerId() {
         return managerId;
     }
 
+    /**
+     * 组织负责人ID
+     */
     public void setManagerId(String managerId) {
         this.managerId = managerId;
     }
 
+    /**
+     * 组织编号
+     */
     public String getDepNo() {
         return depNo;
     }
 
+    /**
+     * 组织编号
+     */
     public void setDepNo(String depNo) {
         this.depNo = depNo;
     }
 
+    /**
+     * 上级组织
+     */
     public String getSuperId() {
         return superId;
     }
 
+    /**
+     * 上级组织
+     */
     public void setSuperId(String superId) {
         this.superId = superId;
     }
 
+    /**
+     * 组织职能说明
+     */
     public String getRemarks() {
         return remarks;
     }
 
+    /**
+     * 组织职能说明
+     */
     public void setRemarks(String remarks) {
         this.remarks = remarks;
     }
 
+    /**
+     * 组织状态
+     */
     public String getStatus() {
         return status;
     }
 
+    /**
+     * 组织状态
+     */
     public void setStatus(String status) {
         this.status = status;
     }
 
+    /**
+     * 缩写
+     */
     public String getAbbreviation() {
         return abbreviation;
     }
 
+    /**
+     * 缩写
+     */
     public void setAbbreviation(String abbreviation) {
         this.abbreviation = abbreviation;
     }
 
+    /**
+     * 财务id(指定跳转的财务)
+     */
     public String getFinanceId() {
         return financeId;
     }
 
+    /**
+     * 财务id(指定跳转的财务)
+     */
     public void setFinanceId(String financeId) {
         this.financeId = financeId;
     }
 
+    /**
+     * 所在省份
+     */
     public Integer getProvince() {
         return province;
     }
 
+    /**
+     * 所在省份
+     */
     public void setProvince(Integer province) {
         this.province = province;
     }
 
+    /**
+     * 工作时间
+     */
     public Integer getWorkingHoursType() {
         return workingHoursType;
     }
 
+    /**
+     * 工作时间
+     */
     public void setWorkingHoursType(Integer workingHoursType) {
         this.workingHoursType = workingHoursType;
     }
 
+    /**
+     * 隐藏 0否 1是
+     */
     public Integer getHideSign() {
         return hideSign;
     }
 
+    /**
+     * 隐藏 0否 1是
+     */
     public void setHideSign(Integer hideSign) {
         this.hideSign = hideSign;
     }
 
+    /**
+     * 层级
+     */
     public Integer getLvl() {
         return lvl;
     }
 
+    /**
+     * 层级
+     */
     public void setLvl(Integer lvl) {
         this.lvl = lvl;
     }
 
+    /**
+     * 当前金额
+     */
     public BigDecimal getCurrentAmount() {
         return currentAmount;
     }
 
+    /**
+     * 当前金额
+     */
     public void setCurrentAmount(BigDecimal currentAmount) {
         this.currentAmount = currentAmount;
     }
 
+    /**
+     * 下级累计金额
+     */
     public BigDecimal getSubordinateAmount() {
         return subordinateAmount;
     }
 
+    /**
+     * 下级累计金额
+     */
     public void setSubordinateAmount(BigDecimal subordinateAmount) {
         this.subordinateAmount = subordinateAmount;
     }
 
+    /**
+     * 总计金额
+     */
     public BigDecimal getTotalAmount() {
         return totalAmount;
     }
 
+    /**
+     * 总计金额
+     */
     public void setTotalAmount(BigDecimal totalAmount) {
         this.totalAmount = totalAmount;
     }
 
+    /**
+     * 复审财务id
+     */
     public String getRetrialFinanceId() {
         return retrialFinanceId;
     }
 
+    /**
+     * 复审财务id
+     */
     public void setRetrialFinanceId(String retrialFinanceId) {
         this.retrialFinanceId = retrialFinanceId;
     }
 
+    /**
+     * 特批审核状态 0=无需特批,1=需要特批
+     */
     public Integer getApproval() {
         return approval;
     }
 
+    /**
+     * 特批审核状态 0=无需特批,1=需要特批
+     */
     public void setApproval(Integer approval) {
         this.approval = approval;
     }
 
+    /**
+     * 特批审核人
+     */
     public String getApprovalAid() {
         return approvalAid;
     }
 
+    /**
+     * 特批审核人
+     */
     public void setApprovalAid(String approvalAid) {
         this.approvalAid = approvalAid;
     }
 
+    /**
+     * 报销财务审核人
+     */
     public String getExpenseFinanceId() {
         return expenseFinanceId;
     }
 
+    /**
+     * 报销财务审核人
+     */
     public void setExpenseFinanceId(String expenseFinanceId) {
         this.expenseFinanceId = expenseFinanceId;
     }
 
+    /**
+     * 财务复审 0-不需要 ,1-需要
+     */
     public Integer getExpenseRetrialFinanceExamine() {
         return expenseRetrialFinanceExamine;
     }
 
+    /**
+     * 财务复审 0-不需要 ,1-需要
+     */
     public void setExpenseRetrialFinanceExamine(Integer expenseRetrialFinanceExamine) {
         this.expenseRetrialFinanceExamine = expenseRetrialFinanceExamine;
     }
 
+    /**
+     * 董事长审核 0-不需要 ,1-需要
+     */
     public Integer getCeoExamine() {
         return ceoExamine;
     }
 
+    /**
+     * 董事长审核 0-不需要 ,1-需要
+     */
     public void setCeoExamine(Integer ceoExamine) {
         this.ceoExamine = ceoExamine;
     }
 
+    /**
+     * 财务总监出纳状态 0-不需要 ,1-需要
+     */
     public Integer getCfoExamine() {
         return cfoExamine;
     }
 
+    /**
+     * 财务总监出纳状态 0-不需要 ,1-需要
+     */
     public void setCfoExamine(Integer cfoExamine) {
         this.cfoExamine = cfoExamine;
     }
 
+    /**
+     * 公司副总出纳状态 0-不需要 ,1-需要
+     */
     public Integer getViceCeoExamine() {
         return viceCeoExamine;
     }
 
+    /**
+     * 公司副总出纳状态 0-不需要 ,1-需要
+     */
     public void setViceCeoExamine(Integer viceCeoExamine) {
         this.viceCeoExamine = viceCeoExamine;
     }
 
+    /**
+     * 出纳审核 0-不需要 ,1-需要
+     */
     public Integer getCashierExamine() {
         return cashierExamine;
     }
 
+    /**
+     * 出纳审核 0-不需要 ,1-需要
+     */
     public void setCashierExamine(Integer cashierExamine) {
         this.cashierExamine = cashierExamine;
     }
+
+    /**
+     * 技术总监审核人
+     */
+    public String getTechAdminId() {
+        return techAdminId;
+    }
+
+    /**
+     * 技术总监审核人
+     */
+    public void setTechAdminId(String techAdminId) {
+        this.techAdminId = techAdminId;
+    }
 }

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

@@ -283,7 +283,7 @@ public class NewExcelUtil<T> {
 					CellRangeAddress region = new CellRangeAddress(0, 0, 0, fields.size()-1);
 					sheet.addMergedRegion(region);
 					cell.setCellStyle(styles.get("total"));
-					if (StringUtils.isNotNull(screen)){
+					if (StringUtils.isNotEmpty(screen)){
 						log.debug(screen);
 						Row r = sheet.createRow(++line);
 						Cell c = r.createCell(0);

+ 2 - 2
src/main/java/com/goafanti/customer/bo/InputExcelUser.java

@@ -4,7 +4,7 @@ import com.goafanti.common.utils.excel.Excel;
 
 public class InputExcelUser {
 
-    @Excel(name = "企业名称")
+    @Excel(name = "企业名称",width = 32)
     private String name;
 
     @Excel(name = "类型",readConverterExp = "0=无,1=已存在")
@@ -12,7 +12,7 @@ public class InputExcelUser {
 
     @Excel(name = "状态",readConverterExp = "0=私有,1=公共,2=签单")
     private Integer status;
-    @Excel(name = "营销员")
+    @Excel(name = "营销员",width = 32)
     private String aname;
 
     public Integer getType() {

+ 1 - 1
src/main/java/com/goafanti/customer/controller/AdminCustomerApiController.java

@@ -663,7 +663,7 @@ public class AdminCustomerApiController extends BaseApiController{
 			}else if (check==-3){
 				//客服营销员不限制上线
 				if (!TokenManager.hasRole(AFTConstants.CUSTOMER_SERVICE_SALESMAN)){
-					res.getError().add(buildError("", "私有客户已达最大限制"));
+					res.getError().add(buildError("", "领取失败!您的“私有客户/私有限定项目”总计已超出最大限制,请移出相关数据后,再来领取!"));
 					return res;
 				}
 			}else if (check==-4){

+ 19 - 15
src/main/java/com/goafanti/customer/service/impl/CustomerServiceImpl.java

@@ -110,12 +110,13 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 	@Autowired
 	private AdminUserCountMapper adminUserCountMapper;
 	@Autowired
-	private RestrictProjectMapper restProjectMapper;
+	private RestrictProjectMapper restrictProjectMapper;
 	@Autowired
 	private	AsyncUtils asyncUtils;
 
 
 
+
 	@Value(value = "${upload.path}")
 	private String uploadPath = null;
 
@@ -869,7 +870,7 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 				// 更新业务中间表
 				addUserFollowBusiness(userFollowBusiness, ubId, ub, ufbId, followId);
 			}
-			restProjectMapper.updateRefreshLockTime(fbb.getUid(),ub.getBusinessProjectId(),TokenManager.getAdminId());
+			restrictProjectMapper.updateRefreshLockTime(fbb.getUid(),ub.getBusinessProjectId(),TokenManager.getAdminId());
 		}
 	}
 
@@ -1607,7 +1608,8 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 			if (u.getShareType()!=1)return -1;
 			if (u.getNewChannel()==1)return 0;
 		}
-		if (userMapper.UserReceiveCount(TokenManager.getAdminId()) >= USER_RECEIVE_MAX)return  -2;
+		int privateCount = userMapper.UserReceiveCount(TokenManager.getAdminId());
+		if (privateCount >= USER_RECEIVE_MAX)return  -2;
 		if(checkMax(uid,TokenManager.getAdminId()))return -3;
 		if(checkBeforeChannel(uid)) return -4;
 		return 0;
@@ -2550,7 +2552,7 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 		if (uid !=null &&uid.contains(",")) {
 			isUs = true;
 		}
-		List<String> uList = new ArrayList<>();
+		List<String> uList;
 		int x=0;
 		if (isUs) {
 			uList = Arrays.asList(uid.split(","));
@@ -2559,27 +2561,29 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 		}else {
 			x=1;
 		}
-		int limitmax = 0;
+		int limitmax = 1;
 		int i = userMapper.checkUserMax(aid);
+		//加入限定项目的数量
+		int rpCount =restrictProjectMapper.selectPrivateByAid(TokenManager.getAdminId());
+		i=i+rpCount;
 		if (uid !=null){
 			User user =userMapper.selectByPrimaryKey(uid);
 			if (user.getNewChannel()==1){
 				return false;
 			}
 		}
-
 		List<String > roles=adminMapper.getAdminRoleListByAid(aid);
 		for (String role : roles) {
 			if (role.equals(AFTConstants.SALESMAN_DIRECTOR)){
-				if(limitmax<YXZJ_MAX)limitmax = YXZJ_MAX;
-				continue;
-			} else if (role.equals(AFTConstants.SALESMAN_MANAGER)){
-				if(limitmax<YXJL_MAX)limitmax = YXJL_MAX;
-				continue;
-			} else if (role.equals(AFTConstants.SALESMAN)){
-				if(limitmax<YXY_MAX)limitmax = YXY_MAX;
-				continue;
-			}
+				if(limitmax<YXZJ_MAX)limitmax += YXZJ_MAX;
+				break;
+            } else if (role.equals(AFTConstants.SALESMAN_MANAGER)){
+				if(limitmax<YXJL_MAX)limitmax += YXJL_MAX;
+				break;
+            } else if (role.equals(AFTConstants.SALESMAN)){
+				if(limitmax<YXY_MAX)limitmax += YXY_MAX;
+				break;
+            }
 		}
 		i+=x;
 		if (i >= limitmax) {

+ 1 - 1
src/main/java/com/goafanti/expenseAccount/controller/ExpenseAccountController.java

@@ -438,7 +438,7 @@ public class ExpenseAccountController extends CertifyApiController {
     }
 
     /**
-     * 订单报销情&公出详情计算
+     * 订单报销情&公出详情计算触发接口
      */
     @RequestMapping(value = "/pushExpenseTotalAmount",method = RequestMethod.GET)
     public Result pushExpenseTotalAmount(){

+ 3 - 1
src/main/java/com/goafanti/expenseAccount/controller/ExpenseCountsController.java

@@ -29,6 +29,7 @@ public class ExpenseCountsController extends CertifyApiController {
     @RequestMapping(value = "/getCounts",method = RequestMethod.GET)
     public Result<ExpenseCountsBo> getCounts(ExpenseCountsInput in){
         Result res=new Result();
+        if (in.getEndTime() != null)in.setEndTime(in.getEndTime()+ " 23:59:59");
         return res.data(expenseAccountService.getCounts(in));
     }
 
@@ -36,7 +37,8 @@ public class ExpenseCountsController extends CertifyApiController {
     @RequestMapping(value = "/getCounts/Export",method = RequestMethod.GET)
     public Result<ExpenseCountsBo> getCountsExport(ExpenseCountsInput in){
         NewExcelUtil excelUtil =null;
-            List<ExpenseCountsBo> list  = (List<ExpenseCountsBo>) expenseAccountService.getCounts(in);
+        if (in.getEndTime() != null)in.setEndTime(in.getEndTime()+ " 23:59:59");
+        List<ExpenseCountsBo> list  = (List<ExpenseCountsBo>) expenseAccountService.getCounts(in);
         if (in.getTargetType()==1){
             excelUtil=new NewExcelUtil(ExpenseCountsOrder.class);
             List<ExpenseCountsOrder>orderList = new ArrayList<>();

+ 41 - 10
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -1424,8 +1424,24 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             if (e.getOrderNo()!=null){
                 TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(e.getOrderNo());
                 List<ExpenseAccount> expenseAccounts = expenseAccountMapper.selectByOrderNo(e.getOrderNo());
-                BigDecimal reduce = expenseAccounts.stream().map(ExpenseAccount::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-                String str = getString(e, out, reduce);
+                BigDecimal count = BigDecimal.ZERO;
+                BigDecimal yxyCount = BigDecimal.ZERO;
+                BigDecimal zxsCount = BigDecimal.ZERO;
+                BigDecimal qtCount = BigDecimal.ZERO;
+                for (ExpenseAccount ea : expenseAccounts) {
+                    count=count.add(ea.getAmount());
+                    Admin admin = adminMapper.selectByPrimaryKey(ea.getAid());
+                    if (admin.getPosition()!=null){
+                        if (admin.getPosition().equals("1")){
+                            yxyCount=yxyCount.add(ea.getAmount());
+                        }else if (admin.getPosition().equals("2")){
+                            zxsCount=zxsCount.add(ea.getAmount());
+                        }else {
+                            qtCount=qtCount.add(ea.getAmount());
+                        }
+                    }
+                }
+                String str = getString(e, out, count, yxyCount, zxsCount,qtCount);
                 e.setCountStr(str);
             }
         }
@@ -1435,22 +1451,37 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     }
 
-    private String getString(SonExpenseAccount e, TOrderPublicReleaseCount out, BigDecimal reduce) {
+    private String getString(SonExpenseAccount e, TOrderPublicReleaseCount out, BigDecimal count, BigDecimal yxyCount, BigDecimal zxsCount, BigDecimal qtCount) {
         String maxString=":应公出" + out.getMaxDuration() + "小时";
-        String actualString=",超过" + out.getExceedDuration() + "小时";
+        String actualString=",超过" + out.getExceedDuration() + "(仅统计技术的总工时)小时,";
         if (out.getMaxDuration().equals(-1d)){
             maxString=":不限制公出小时";
-            actualString=",";
+            actualString="";
         }
-
-        String str = e.getBuyerName() + e.getContractNo() +
+        StringBuilder expenseString=new StringBuilder().append(",报销").append(count.stripTrailingZeros().toPlainString()).append("元");
+        if (yxyCount != null || zxsCount != null||qtCount != null){
+            expenseString.append("(");
+            if (zxsCount != null && zxsCount.compareTo(BigDecimal.ZERO) > 0) {
+                expenseString.append("技术").append(zxsCount.stripTrailingZeros().toPlainString()).append("元,");
+            }
+            if (yxyCount != null && yxyCount.compareTo(BigDecimal.ZERO) > 0){
+                expenseString.append("营销").append(yxyCount.stripTrailingZeros().toPlainString()).append("元,");
+            }
+            if (qtCount != null && qtCount.compareTo(BigDecimal.ZERO) > 0){
+                expenseString.append("其他").append(qtCount.stripTrailingZeros().toPlainString()).append("元,");
+            }
+            expenseString.deleteCharAt(expenseString.length() - 1);
+            expenseString.append(")");
+        }
+        if (out.getActualDuration()<=out.getMaxDuration()){
+            actualString="";
+        }
+        return e.getBuyerName() + e.getContractNo() +
                 maxString +
                 ",已" + out.getPeopleCount() + "人公出," +
                 out.getFrequency() + "次" +
                 "," + out.getActualDuration() + "小时" +
-                actualString+
-                ",已报销" + reduce.stripTrailingZeros().toPlainString() + "元";
-        return str;
+                actualString+expenseString;
     }
 
 

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

@@ -45,7 +45,7 @@ public class AdminNewOrderApiController extends CertifyApiController {
 
 	/**
 	 *
-	 * 创建订单、开单
+	 * 创建订单、开单、派单
 	 *
 	 * @param uid 客户编号
 	 * @param orderType 订单类型

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

@@ -555,7 +555,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 			}else {
 				t.setProcessStatus(ProcessStatus.YPTPSH.getCode());
 				aids.add(order.getApprovalAid());
-				str=str.append(order.getApprovalName()).append(",");
+				str.append(order.getApprovalName()).append(",");
 			}
 		}else if (new1.getApproval()==ApprovalNewState.DSZDSH.getCode()|| new1.getApproval()==ApprovalNewState.DSZBH.getCode()) {
 			t.setProcessStatus(ProcessStatus.YPTPSH.getCode());
@@ -565,8 +565,8 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 			types.add(AFTConstants.APPROVAL_DECISION_ASSISTANT);
 			for (Admin admin : adminMapper.getAdminRoleTypesList(types)) {
 				aids.add(admin.getId());
-				str=str.append(admin.getName()).append(",");
-			}
+                str.append(admin.getName()).append(",");
+            }
 		}else  {
 			t.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
 		}
@@ -578,24 +578,24 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 			t.setFinanceId(oo.getFinanceId());
 			for (Admin admin : adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN)) {
 				aids.add(admin.getId());
-				str=str.append(admin.getName()).append(",");
+				str.append(admin.getName()).append(",");
 			}
 		}
 		//用与外部修改名称
 		t.setExamineName(str.substring(0,str.length()-1));
 		pushGeneralSendNoticeAndEmail(aids, NoticeStatus.ORDER_YES.getCode(),order, TokenManager.getAdminId(), new1.getApproval());
 		if (flag){
-			addTorderLog(t,"部门特批审核人未设置,系统自动通过");
+			addTorderLog(t);
 		}
 	}
 
-	private void addTorderLog(TOrderNew t, String str) {
+	private void addTorderLog(TOrderNew t) {
 		boolean flag=judgeOrderExamine(t.getOrderNo());
 		TOrderLog tl=new TOrderLog();
 		tl.setAid(AFTConstants.SUPERADMIN_ID);
 		tl.setProcess(OrderLogProcess.TP.getCode());
 		tl.setOrderNo(t.getOrderNo());
-		tl.setRemarks(str);
+		tl.setRemarks("部门特批审核人未设置,系统自动通过");
 		tOrderLogMapper.insertSelective(tl);
 	}
 

+ 31 - 32
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -1,6 +1,5 @@
 package com.goafanti.order.service.impl;
 
-import com.goafanti.admin.bo.AdminListBo;
 import com.goafanti.admin.service.DepartmentService;
 import com.goafanti.common.bo.Error;
 import com.goafanti.common.bo.OrderExamineBo;
@@ -398,10 +397,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		return 1;
 	}
 
-	private void completeChange(String remarks, NewOrderChangeBo nb ) {
+	@Transactional
+	public void completeChange(String remarks, NewOrderChangeBo nb ) {
 		nb.setStatus(4);
 		addOrderChangeLog(remarks, 2, nb.getOrderNo(), nb.getId());
-
 		pushCompleteOrderChange(nb);
 	}
 
@@ -443,24 +442,29 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 				date.setTime(date.getTime()+100);
 				addOrderChangeLog("无咨询师自动通过", 2, nb.getOrderNo(), nb.getId(), date);
 			}
-			pushZXSJL(nb,date,1);
+			if (Objects.equals(nb.getType(), OrderChangeType.CB.getCode())){
+				nb.setProcessState(OrderChangeProcess.CWZY.getCode());
+			} else if (Objects.equals(nb.getType(), OrderChangeType.JXMBG.getCode())){
+				nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
+			}else {
+				pushZXSJL(nb,date,1);
+			}
+
 		}
 	}
 
 	/**
 	 * 咨询师经理,跳过就返回x=1,在后续添加日志放到先审核,后添加日志
-	 * @param nb
 	 * @param type 0正常审核  1跨流程需要通知
-	 * @return
 	 */
 	@Override
 	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 (Objects.equals(nb.getType(), OrderChangeType.XMJJEBG.getCode()) ||
+                Objects.equals(nb.getType(), OrderChangeType.TDTK.getCode()) ||
+                Objects.equals(nb.getType(), OrderChangeType.TDBTK.getCode()) ||
+                Objects.equals(nb.getType(), OrderChangeType.CB.getCode()) ||
+                Objects.equals(nb.getType(), OrderChangeType.JXMBG.getCode())){
 			if (zxsjl>0){
 				nb.setProcessState(OrderChangeProcess.JSJL.getCode());
 			}else {
@@ -469,7 +473,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					addOrderChangeLog("无咨询师经理自动通过", 2, nb.getOrderNo(), nb.getId(),date);
 				}
 				//重报 没有技术员跳入财务
-				if (nb.getType()==OrderChangeType.CB.getCode()){
+				if (Objects.equals(nb.getType(), OrderChangeType.CB.getCode())){
 					nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 					//项目变更没有跳入技术总监
 				}else{
@@ -506,7 +510,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		if(status==2)type=NoticeStatus.ORDER_CHANGE_YES.getCode();
 		if(status==3)type=NoticeStatus.ORDER_CHANGE_NO.getCode();
 		//获取发起人与发起人部门
-		AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
+//		AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
 		//获取客户信息
 		TOrderNewBo o=tOrderNewMapper.getSaleIdByOno(nb.getOrderNo());
 		//获取接收者
@@ -582,7 +586,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	 *
 	 * @param orderNo 订单编号
 	 * @param i	 0咨询师 1咨询师经理
-	 * @return
 	 */
 	private List<String> addOrderExamine(String orderNo, Integer i) {
 		List<String> list=new ArrayList<>();
@@ -672,16 +675,12 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	@Override
 	public boolean checkOderNo(String orderNo) {
 		int i=newOrderChangeMapper.checkOderNo(orderNo);
-		if (i>0) {
-			return true;
-		}
-		return false;
-	}
+        return i > 0;
+    }
 	@Override
 	public List<OrderChangeLogBo> selectOrderChangeLogList(String changeId) {
 		return orderChangeLogMapper.selectOrderChangeLogList(changeId);
 	}
-	@SuppressWarnings("unchecked")
 	@Override
 	public Pagination<NewOderCahngeListBo> selectOrderChangeList(String userName,Integer  processState,Integer timeType,String startTime,String endTime,
 						String deps,String salesmanName,Integer complete,String orderNo, String contractNo,Integer type,Integer pageSize, Integer pageNo) {
@@ -715,7 +714,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		}
 		if (StringUtils.isNotBlank(salesmanName)) parameter.put("salesmanName", salesmanName);
 		//财务专员有财务经理查看财务专员的权限
-		if(processState==OrderChangeProcess.CWZY.getCode()&&TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) {
+		if(processState.equals(OrderChangeProcess.CWZY.getCode()) &&TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) {
 			parameter.put("aids", adminMapper.selectBySuperId(TokenManager.getAdminId()));
 		}else {
 			parameter.put("aid", TokenManager.getAdminId());
@@ -866,11 +865,11 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			}
 			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
 
-		}else if (noc.getProcessState()== OrderChangeProcess.CWZY.getCode()){
+		}else if (Objects.equals(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()){
+		}else if (Objects.equals(noc.getProcessState(), OrderChangeProcess.CWZJ.getCode())){
 			StringBuffer str=new StringBuffer();
 			List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.FINANCE_ADMIN);
 			for (Admin a : admins) {
@@ -878,20 +877,20 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			}
 			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
 
-		}else if (noc.getProcessState()== OrderChangeProcess.TPSH.getCode()
-				||noc.getProcessState()== OrderChangeProcess.DSZ.getCode()
-				||noc.getProcessState()== OrderChangeProcess.FZC.getCode()){
+		}else if (Objects.equals(noc.getProcessState(), OrderChangeProcess.TPSH.getCode())
+				|| Objects.equals(noc.getProcessState(), OrderChangeProcess.DSZ.getCode())
+				|| Objects.equals(noc.getProcessState(), OrderChangeProcess.FZC.getCode())){
 			if(noc.getStatus()==1){
-				StringBuffer str=new StringBuffer();
-				if (noc.getProcessState()== OrderChangeProcess.TPSH.getCode()){
+				StringBuilder str=new StringBuilder();
+				if (Objects.equals(noc.getProcessState(), OrderChangeProcess.TPSH.getCode())){
 					Department department = tOrderNewMapper.selectDepByOrderNo(noc.getOrderNo());
 					Admin a = adminMapper.selectByPrimaryKey(department.getApprovalAid());
-					str=str.append(a.getName()).append(",");
-				}else if(noc.getProcessState()== OrderChangeProcess.DSZ.getCode()){
+                    str.append(a.getName()).append(",");
+                }else if(Objects.equals(noc.getProcessState(), OrderChangeProcess.DSZ.getCode())){
 					List<Admin> admins = adminMapper.getAdminRoleTypeList(AFTConstants.APPROVAL_DECISION);
 					for (Admin a : admins) {
-						str=str.append(a.getName()).append(",");
-					}
+                        str.append(a.getName()).append(",");
+                    }
 				}
 				if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
 			} else if(noc.getStatus()==2){

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

@@ -217,12 +217,11 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			if (StringUtils.isNotBlank(dep.getRetrialFinanceId())){
 				list.add(new TOrderExamine(o.getOrderNo(),0,dep.getRetrialFinanceId(),dep.getRetrialFinanceName()));
 			}
+			if(StringUtils.isNotBlank(dep.getTechAdminId())){
+				list.add(new TOrderExamine(o.getOrderNo(),0,dep.getTechAdminId(),dep.getTechAdminName()));
+			}
 		}
-		List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.TECH_ADMIN);
-		for (Admin admin : admins) {
-			list.add(new TOrderExamine(o.getOrderNo(),0,admin.getId(),admin.getName()));
-		}
-		tOrderExamineMapper.insertBatch(list);
+		if (!list.isEmpty())tOrderExamineMapper.insertBatch(list);
 		return list;
 	}
 

+ 12 - 0
src/main/java/com/goafanti/organization/bo/InputDep.java

@@ -54,6 +54,18 @@ public class InputDep {
      */
     private Integer cashierExamine;
 
+    /**
+     * 技术总监审核人
+     */
+    private String techAdminId;
+
+    public String getTechAdminId() {
+        return techAdminId;
+    }
+
+    public void setTechAdminId(String techAdminId) {
+        this.techAdminId = techAdminId;
+    }
 
     public String getRetrialFinanceId() {
         return retrialFinanceId;

+ 18 - 0
src/main/java/com/goafanti/organization/bo/OrganizationListOut.java

@@ -111,12 +111,30 @@ public class OrganizationListOut {
      * 出纳审核 0-不需要 ,1-需要
      */
     private Integer cashierExamine;
+    private String techAdminId;
+    private String techAdminName;
     private List<ExpenseConfigDetails> expenseRetrialFinanceExamineList;
     private List<ExpenseConfigDetails> ceoExamineList;
     private List<ExpenseConfigDetails> cfoExamineList;
     private List<ExpenseConfigDetails> viceCeoExamineList;
     private List<ExpenseConfigDetails> cashierExamineList;
 
+    public String getTechAdminId() {
+        return techAdminId;
+    }
+
+    public void setTechAdminId(String techAdminId) {
+        this.techAdminId = techAdminId;
+    }
+
+    public String getTechAdminName() {
+        return techAdminName;
+    }
+
+    public void setTechAdminName(String techAdminName) {
+        this.techAdminName = techAdminName;
+    }
+
     public List<ExpenseConfigDetails> getExpenseRetrialFinanceExamineList() {
         return expenseRetrialFinanceExamineList;
     }

+ 2 - 1
src/main/java/com/goafanti/organization/controller/AdminOrganizationController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/api/admin/organization")
@@ -104,7 +105,7 @@ public class AdminOrganizationController extends BaseApiController{
 					ParamUtils.getParamName(in,bindingResult.getFieldError().getField())));
 			return res;
 		}
-		if (in.getId() ==in.getSuperId()){
+		if (Objects.equals(in.getId(), in.getSuperId())){
 			res.getError().add(buildError("不能设置自己为上级"));
 			return res;
 		}

+ 7 - 3
src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java

@@ -227,6 +227,7 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		dep.setWorkingHoursType(in.getWorkingHoursType());
 		dep.setApproval(in.getApproval());
 		dep.setApprovalAid(in.getApprovalAid());
+		dep.setTechAdminId(in.getTechAdminId());
 		//财务与复审切换的时候要切换所有未审核的财务
 		boolean updateFinance=false;
 		boolean updateRetrialFinance=false;
@@ -251,7 +252,11 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 			}
 			updateRetrialFinance=true;
 		}
-		dep.setExpenseFinanceId(in.getExpenseFinanceId());
+		if (in.getExpenseFinanceId()!=null&&!in.getExpenseFinanceId().equals(useDep.getExpenseFinanceId())){
+			dep.setExpenseFinanceId(in.getExpenseFinanceId());
+			departmentMapper.updateExpenseFinanceNotExamine(in.getExpenseFinanceId(),useDep.getExpenseFinanceId());
+		}
+
 		//获取需要重新刷新的财务
 		List<String> aids =new ArrayList<>();
 		if (updateFinance){
@@ -289,8 +294,7 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		if (in.getCashierExamine()==1){
 			dep.setCashierExamine(in.getCashierExamine());
 		}
-		int x=departmentMapper.updateByPrimaryKeySelective(dep);
-		return x;
+        return departmentMapper.updateByPrimaryKeySelective(dep);
 	}
 
 	/**

+ 19 - 0
src/main/java/com/goafanti/permission/bo/SubMenu.java

@@ -4,6 +4,25 @@ public class SubMenu {
 	private String id;
 	private String name;
 	private String url;
+	private String superId;
+	private Integer type;
+
+	public String getSuperId() {
+		return superId;
+	}
+
+	public void setSuperId(String superId) {
+		this.superId = superId;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
 	public String getId() {
 		return id;
 	}

+ 21 - 35
src/main/java/com/goafanti/permission/service/impl/PermissionServiceImpl.java

@@ -1,20 +1,5 @@
 package com.goafanti.permission.service.impl;
 
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.PermissionMapper;
 import com.goafanti.common.dao.RolePermissionMapper;
@@ -23,11 +8,15 @@ import com.goafanti.common.dao.UserRoleMapper;
 import com.goafanti.common.model.Permission;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.shiro.token.TokenManager;
-import com.goafanti.permission.service.PermissionService;
 import com.goafanti.permission.bo.Menu;
 import com.goafanti.permission.bo.Navigation;
 import com.goafanti.permission.bo.PermissionBo;
-import com.goafanti.permission.bo.SubMenu;
+import com.goafanti.permission.service.PermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class PermissionServiceImpl extends BaseMybatisDao<PermissionMapper> implements PermissionService {
@@ -273,24 +262,21 @@ public class PermissionServiceImpl extends BaseMybatisDao<PermissionMapper> impl
 	@Override
 	public List<Menu> selectMenuList(String superId) {
 		String aid = TokenManager.hasRole(AFTConstants.SUPERADMIN) ? null : TokenManager.getAdminId();
-		List<SubMenu> subMenus = permissionMapper.selectMenuList(superId,aid);
-		List<Menu> menus = new ArrayList<Menu>();
-		try {
-			Menu m = null;
-			for(SubMenu sm: subMenus){
-				m = new Menu();
-				BeanUtils.copyProperties(m, sm);
-				menus.add(m);
-			}
-			if(menus != null && menus.size()>0){
-				for(Menu menu: menus){
-					subMenus = permissionMapper.selectMenuList(menu.getId(),aid);
-					menu.setSubMenus(subMenus);
-				}
-			}
-		} catch (IllegalAccessException | InvocationTargetException e) {
-			e.printStackTrace();
-		}
+		List<Menu> subMenus = permissionMapper.selectMenuList(null,aid);
+		List<Menu> menus = subMenus.stream().filter(e -> e.getSuperId().equals(superId)).collect(Collectors.toList());
+		List<Menu> collect2 = subMenus.stream().filter(e -> e.getType() == 2).collect(Collectors.toList());
+		menus.forEach(menu -> {
+			collect2.forEach(
+					subMenu -> {
+						if (subMenu.getSuperId().equals(menu.getId())) {
+							if (menu.getSubMenus()==null){
+								menu.setSubMenus(new ArrayList<>());
+							}
+							menu.getSubMenus().add(subMenu);
+						}
+					}
+			);
+		});
 		return menus;
 	}
 

+ 8 - 0
src/main/java/com/goafanti/standard/controller/StandardApiController.java

@@ -52,6 +52,10 @@ public class StandardApiController extends CertifyApiController {
             res.error(buildError("操作权限不正确。"));
             return res;
         }
+        if(standardService.inspectNumber(in)){
+            res.error(buildError("标准编号已存在。"));
+            return res;
+        }
         return res.data(standardService.add(in));
     }
 
@@ -78,6 +82,10 @@ public class StandardApiController extends CertifyApiController {
             res.error(buildError("操作权限不正确。"));
             return res;
         }
+        if(standardService.inspectNumber(in)){
+            res.error(buildError("标准编号已存在。"));
+            return res;
+        }
         return res.data(standardService.update(in));
     }
 

+ 2 - 0
src/main/java/com/goafanti/standard/service/StandardService.java

@@ -15,4 +15,6 @@ public interface StandardService {
     Pagination<OutStandardDocument> list(InputStandardList in);
 
     Object get(StandardDocument in);
+
+    boolean inspectNumber(StandardDocument in);
 }

+ 8 - 0
src/main/java/com/goafanti/standard/service/impl/StandardServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 @Service
 public class StandardServiceImpl extends BaseMybatisDao<StandardDocumentMapper> implements StandardService {
@@ -104,4 +105,11 @@ public class StandardServiceImpl extends BaseMybatisDao<StandardDocumentMapper>
         return standardDocumentMapper.selectDetailsById(in.getId());
 
     }
+
+    @Override
+    public boolean inspectNumber(StandardDocument in) {
+        StandardDocument out = standardDocumentMapper.selectByNumber(in);
+        if (in.getId()==null&&out!=null) return true;
+        else return in.getId() != null && out != null && !Objects.equals(out.getId(), in.getId());
+    }
 }

+ 19 - 0
src/main/java/com/goafanti/weChat/bo/InputreleaseAndExpenseCount.java

@@ -6,6 +6,25 @@ public class InputreleaseAndExpenseCount {
     private String depId;
     private String aid;
     private Integer allStatus;
+    private String startTime;
+
+    private String endTime;
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
 
     public String getContractNo() {
         return contractNo;

+ 38 - 23
src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

@@ -101,11 +101,6 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				in.setTechStartProcess(1);
 			}
 		}
-		if (in.getValidDate()!=null){
-			String validDate = in.getValidDate();
-			List<Map> maps = JSONArray.parseArray(validDate, Map.class);
-
-		}
 		publicReleaseMapper.insertSelective(in);
 		List<PublicReleaseDetails> prdList=new ArrayList<>();
 		List<User> users=new ArrayList<>();
@@ -163,6 +158,14 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		updateName.setUserNames(userNames);
 		publicReleaseMapper.updateByPrimaryKeySelective(updateName);
 		addpublicLog(in.getId(), PublicReleaseLog.states.fq.getCode(), "发起外出申请");
+		if (StringUtils.isNotEmpty(my.getPublicCarbonCopy())){
+			String str2=String.format("营销员%s,%s - %s,将公出%s,请知悉!",my.getName(),
+					DateUtils.formatDateYYYYMMddHHmm(in.getReleaseStart()),
+					DateUtils.formatDateYYYYMMddHHmm(in.getReleaseEnd()),
+					userNames);
+			asyncUtils.addNoticAndEmail(NoticeStatus.PUBLIC_CARBON_COPY.getCode(),my.getPublicCarbonCopy()
+					,str2);
+		}
         return (Map<String, Object>) addPublicReleaseLog(my, in,userNames,date,users,checkOrderNo);
 	}
 
@@ -440,6 +443,14 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				publicExamineMapper.updateByPridSelective(pe);
 			}
 			AdminListBo my = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
+			if (StringUtils.isNotEmpty(my.getPublicCarbonCopy())){
+				String str=String.format("营销员%s,%s - %s,将公出%s,请知悉!",my.getName(),
+						DateUtils.formatDateYYYYMMddHHmm(in.getReleaseStart()),
+						DateUtils.formatDateYYYYMMddHHmm(in.getReleaseEnd()),
+						userNames);
+				asyncUtils.addNoticAndEmail(NoticeStatus.PUBLIC_CARBON_COPY.getCode(),my.getPublicCarbonCopy()
+						,str);
+			}
 			//重新发起
 			addPublicReleaseLog(my,in,in.getUserNames(),date,uses,checkOrderNo);
 		}else {
@@ -1806,43 +1817,46 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		List<PublicRelease> list = publicReleaseMapper.selectByOrderNo(in.getOrderNo());
 		TOrderNewBo t = tOrderNewMapper.getOrderNewDetail(in.getOrderNo());
 		OutPublicRelease outPublicRelease=null;
-		BigDecimal count = BigDecimal.ZERO;
-		int timesCount=0;
+		//实际公出
+		BigDecimal actualDuration = BigDecimal.ZERO;
+		//公出次数
+		int frequency=0;
 		List<String> peopleList = new ArrayList<>();
+		//判定是不是新增获取原数据,是新增数量加1
 		if (in.getId()!=null){
 			outPublicRelease= publicReleaseMapper.selectDtails(in.getId());
 		}else {
 			peopleList.add(TokenManager.getAdminId());
-			count=count.add(BigDecimal.valueOf(in.getDuration()));
-			timesCount++;
+			actualDuration=actualDuration.add(BigDecimal.valueOf(in.getDuration()));
+			frequency++;
 		}
 		for (PublicRelease e : list) {
 			//新增直接计算
 			if (in.getId()==null){
 				if (e.getDuration()!=null){
-					count=count.add(BigDecimal.valueOf(e.getDuration()));
+					actualDuration=actualDuration.add(BigDecimal.valueOf(e.getDuration()));
 					if (!peopleList.contains(e.getAid())){
 						peopleList.add(e.getAid());
 					}
-					timesCount++;
+					frequency++;
 				}
 			}else {
 				//修改当前数据要从修改后获取
 				if (!e.getId().equals(in.getId())){
 					if (e.getDuration()!=null){
-						count=count.add(BigDecimal.valueOf(e.getDuration()));
+						actualDuration=actualDuration.add(BigDecimal.valueOf(e.getDuration()));
 						if (!peopleList.contains(e.getAid())){
 							peopleList.add(e.getAid());
 						}
-						timesCount++;
+						frequency++;
 					}
 				}else {
 					if (outPublicRelease != null && outPublicRelease.getDuration() != null) {
-						count = count.add(BigDecimal.valueOf(outPublicRelease.getDuration()));
+						actualDuration = actualDuration.add(BigDecimal.valueOf(outPublicRelease.getDuration()));
 						if (!peopleList.contains(outPublicRelease.getAid())) {
 							peopleList.add(outPublicRelease.getAid());
 						}
-						timesCount++;
+						frequency++;
 					}
 				}
 			}
@@ -1858,17 +1872,17 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		if (type==1||type==2){
 			TOrderPublicReleaseCount update=new TOrderPublicReleaseCount();
 			update.setOrderNo(in.getOrderNo());
-			update.setFrequency(timesCount);
-			update.setActualDuration(count.doubleValue());
+			update.setFrequency(frequency);
+			update.setActualDuration(actualDuration.doubleValue());
 			update.setPeopleCount(peopleList.size());
 			tOrderPublicReleaseCountMapper.updateByOrderNo(update);
 		}
-		data.setTimesCount(timesCount);
+		data.setTimesCount(frequency);
 		data.setPeopleCount(peopleList.size());
 		data.setUserName(t.getUserName());
 		data.setContractNo(t.getContractNo());
 		data.setAdminName(t.getSalesmanName());
-		data.setDurationCount(count);
+		data.setDurationCount(actualDuration);
 		// 0=0-1 1=1-3 2=3-5 3=5-10 4=10以上
 		if (t.getTotalAmount().compareTo(BigDecimal.valueOf(1)) < 0) {
 			data.setAmountType(0);
@@ -1878,7 +1892,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(3))<0) {
 			data.setAmountType(1);
 			data.setDurationMax(BigDecimal.valueOf(15));
-			if (count.compareTo(data.getDurationMax())<1){
+			if (actualDuration.compareTo(data.getDurationMax())<1){
 				map.put("code",true);
 				map.put("data",null);
 			}else {
@@ -1888,7 +1902,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(5))<0) {
 			data.setAmountType(2);
 			data.setDurationMax(BigDecimal.valueOf(45));
-			if (count.compareTo(data.getDurationMax())<1){
+			if (actualDuration.compareTo(data.getDurationMax())<1){
 				map.put("code",true);
 				map.put("data",null);
 			}else {
@@ -1898,7 +1912,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		} else if (t.getTotalAmount().compareTo(BigDecimal.valueOf(10))<0) {
 			data.setAmountType(3);
 			data.setDurationMax(BigDecimal.valueOf(120));
-			if (count.compareTo(data.getDurationMax())<1){
+			if (actualDuration.compareTo(data.getDurationMax())<1){
 				map.put("code",true);
 				map.put("data",null);
 			}else {
@@ -1987,8 +2001,9 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 
 	@Override
-	@Cacheable(value = "releaseAndExpenseCount#300", key = "'getCounts:key='+#in.buyerName+#in.contractNo+#in.aid+#in.depId+#in.allStatus")
+	@Cacheable(value = "releaseAndExpenseCount#300", key = "'getCounts:key='+#in.buyerName+#in.contractNo+#in.aid+#in.depId+#in.allStatus+#in.startTime+#in.endTime")
 	public List<releaseAndExpenseCountOut> releaseAndExpenseCount(InputreleaseAndExpenseCount in) {
+		if (in.getEndTime()!=null)in.setEndTime(in.getEndTime()+" 23:59:59");
 		List<releaseAndExpenseCountOut> expenseCountsOrders = publicReleaseMapper.releaseAndExpenseCount(in);
 		expenseCountsOrders.forEach(e->{
 			if (e.getExceedDuration()!=null){

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

@@ -1,8 +1,8 @@
 dev.name=local
 jdbc.driverClassName=com.mysql.jdbc.Driver
 
-static.host=//uat.jishutao.com/1.3.16
-#static.host=//172.16.1.187/1.3.15
+static.host=//static.jishutao.com/1.3.17
+#static.host=//172.16.1.187/1.3.17
 
 #jdbc.url=jdbc\:mysql://localhost:3306/aft20240430?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
@@ -58,8 +58,8 @@ amb.maxLvl=6
 
 #avatar.host=//172.16.1.199:3000
 #static.host=//172.16.0.255:3000/1.2.62
-avatar.host=//uat.jishutao.com
-rd.static.host=//uat.jishutao.com/RD/1.0.03
+avatar.host=//static.jishutao.com
+rd.static.host=//static.jishutao.com/RD/1.0.03
 
 #\u5FAE\u4FE1\u6253\u5361\u5C0F\u7A0B\u5E8F
 wx.appId=wxff2f5720ed7d7f63

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

@@ -1,5 +1,5 @@
 dev.name=test
-static.host=//static.jishutao.com/1.3.16
+static.host=//static.jishutao.com/1.3.17
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
 jdbc.url=jdbc:mysql://127.0.0.1:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false