Explorar o código

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

anderx hai 1 ano
pai
achega
0c18cb0c93
Modificáronse 29 ficheiros con 1228 adicións e 289 borrados
  1. 1 0
      .gitignore
  2. 36 0
      EasyCodeConfig.json
  3. 9 0
      src/main/java/com/goafanti/business/bo/RestrictProjectPageList.java
  4. 2 0
      src/main/java/com/goafanti/common/constant/AFTConstants.java
  5. 4 1
      src/main/java/com/goafanti/common/dao/PublicReleaseMapper.java
  6. 150 122
      src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml
  7. 2 1
      src/main/java/com/goafanti/common/mapper/RestrictProjectMapper.xml
  8. 91 0
      src/main/java/com/goafanti/common/mapper/UserArchivesMapper.xml
  9. 2 1
      src/main/java/com/goafanti/common/mapper/UserMapper.xml
  10. 1 1
      src/main/java/com/goafanti/common/mapper/UserSuperEvaluateMapper.xml
  11. 15 3
      src/main/java/com/goafanti/common/model/PublicRelease.java
  12. 87 0
      src/main/java/com/goafanti/customer/bo/InputSelectUserArchives.java
  13. 230 0
      src/main/java/com/goafanti/customer/bo/OutSelectUserArchives.java
  14. 9 0
      src/main/java/com/goafanti/customer/bo/UserArchivesDetails.java
  15. 10 0
      src/main/java/com/goafanti/customer/controller/AdminCustomerApiController.java
  16. 29 1
      src/main/java/com/goafanti/customer/controller/UserArchivesController.java
  17. 3 0
      src/main/java/com/goafanti/customer/service/UserArchivesService.java
  18. 14 11
      src/main/java/com/goafanti/customer/service/impl/CustomerServiceImpl.java
  19. 25 0
      src/main/java/com/goafanti/customer/service/impl/UserArchivesServiceImpl.java
  20. 5 2
      src/main/java/com/goafanti/order/service/impl/PushOrderService.java
  21. 20 1
      src/main/java/com/goafanti/weChat/bo/OutPublicDtails.java
  22. 15 1
      src/main/java/com/goafanti/weChat/bo/OutPublicRelease.java
  23. 10 0
      src/main/java/com/goafanti/weChat/bo/OutPublicReleaseList.java
  24. 52 0
      src/main/java/com/goafanti/weChat/bo/sendListBo.java
  25. 21 9
      src/main/java/com/goafanti/weChat/controller/AdminReleaseApiController.java
  26. 10 3
      src/main/java/com/goafanti/weChat/service/PublicReleaseService.java
  27. 373 130
      src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java
  28. 1 1
      src/main/resources/props/config_local.properties
  29. 1 1
      src/main/resources/props/config_test.properties

+ 1 - 0
.gitignore

@@ -15,3 +15,4 @@
 
 
 /qodana.yaml
+

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 36 - 0
EasyCodeConfig.json


+ 9 - 0
src/main/java/com/goafanti/business/bo/RestrictProjectPageList.java

@@ -57,6 +57,15 @@ public class RestrictProjectPageList {
     private String     businessScope;
 
     private Integer days;
+    private String industry;
+
+    public String getIndustry() {
+        return industry;
+    }
+
+    public void setIndustry(String industry) {
+        this.industry = industry;
+    }
 
     public Integer getDays() {
         return days;

+ 2 - 0
src/main/java/com/goafanti/common/constant/AFTConstants.java

@@ -77,6 +77,8 @@ public class AFTConstants {
 	public static final String  FINANCE								= "97";
 	/**	营销员 */
 	public static final String  SALESMAN                      		= "96";
+	/**	总裁助理 */
+	public static final String	SALESMAN_ASSISTANT						= "86";
 	/**
 	 * 技术转移
 	 */

+ 4 - 1
src/main/java/com/goafanti/common/dao/PublicReleaseMapper.java

@@ -87,6 +87,7 @@ public interface PublicReleaseMapper {
      * @return 影响行数
      */
     int deleteById(Integer id);
+    int deleteByMainId(Integer id);
 
     OutPublicRelease selectDtails(@Param("id") Integer id);
 
@@ -100,7 +101,7 @@ public interface PublicReleaseMapper {
      * @param end 结束时间
      * @return
      */
-    List<Integer> checkTime(@Param("aid")String aid, @Param("start") Date start, @Param("end")Date end);
+    List<PublicRelease> checkTime(@Param("aid")String aid, @Param("start") Date start, @Param("end")Date end);
 
     void updateSignByAidAndUid(@Param("uid") String buyerId, @Param("aid") String salesmanId);
 
@@ -143,5 +144,7 @@ public interface PublicReleaseMapper {
     List<PublicReleaseDetails> selectDetailsByPrid(Integer prid);
 
     void updateAssist(InputPublicRelease in);
+
+    List<PublicRelease> checkTech(@Param("aid")String aid, @Param("start") Date start, @Param("end")Date end);
 }
 

+ 150 - 122
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -44,10 +44,11 @@
         <result property="techStartProcess" column="tech_start_process" jdbcType="INTEGER"/>
         <result property="addressName" column="address_name" jdbcType="VARCHAR"/>
         <result property="assistProcess" column="assist_process" jdbcType="INTEGER"/>
+        <result property="alone" column="alone" jdbcType="INTEGER"/>
     </resultMap>
 
     <sql id="PublicReleaseAllSql">
-        id, aid, release_start, release_end, remarks, annex_url, status, create_time, pid, pname, duration, valid_date, supplement, audit_info, plan, expected_effect, next_plan, type, order_no, update_time, update_status, assist, assist_aid, assist_aid_name, main_id, main_name, reject_name, assistant_aid, assistant_name, public_again, audit_time, new_user, sign_sum, user_names, object_type, public_type, district_name, clock_in, tech_start_process, address_name, assist_process
+        id, aid, release_start, release_end, remarks, annex_url, status, create_time, pid, pname, duration, valid_date, supplement, audit_info, plan, expected_effect, next_plan, type, order_no, update_time, update_status, assist, assist_aid, assist_aid_name, main_id, main_name, reject_name, assistant_aid, assistant_name, public_again, audit_time, new_user, sign_sum, user_names, object_type, public_type, district_name, clock_in, tech_start_process, address_name, assist_process, alone
     </sql>
 
     <!--查询单个-->
@@ -188,6 +189,9 @@
             <if test="assistProcess != null">
                 and assist_process = #{assistProcess}
             </if>
+            <if test="alone != null">
+                and alone = #{alone}
+            </if>
         </where>
         <if test="page_sql != null">
             ${page_sql}
@@ -322,6 +326,9 @@
             <if test="assistProcess != null">
                 and assist_process = #{assistProcess}
             </if>
+            <if test="alone != null">
+                and alone = #{alone}
+            </if>
         </where>
     </select>
 
@@ -332,103 +339,13 @@
                                    order_no, update_time, update_status, assist, assist_aid, assist_aid_name, main_id,
                                    main_name, reject_name, assistant_aid, assistant_name, public_again, audit_time,
                                    new_user, sign_sum, user_names, object_type, public_type, district_name, clock_in,
-                                   tech_start_process, address_name, assist_process)
+                                   tech_start_process, address_name, assist_process, alone)
         values (#{aid}, #{releaseStart}, #{releaseEnd}, #{remarks}, #{annexUrl}, #{status}, #{createTime}, #{pid},
                 #{pname}, #{duration}, #{validDate}, #{supplement}, #{auditInfo}, #{plan}, #{expectedEffect},
                 #{nextPlan}, #{type}, #{orderNo}, #{updateTime}, #{updateStatus}, #{assist}, #{assistAid},
                 #{assistAidName}, #{mainId}, #{mainName}, #{rejectName}, #{assistantAid}, #{assistantName},
                 #{publicAgain}, #{auditTime}, #{newUser}, #{signSum}, #{userNames}, #{objectType}, #{publicType},
-                #{districtName}, #{clockIn}, #{techStartProcess}, #{addressName}, #{assistProcess})
-    </insert>
-
-    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicRelease" useGeneratedKeys="true">
-        insert into public_release
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="aid != null">aid,</if>
-            <if test="releaseStart != null">release_start,</if>
-            <if test="releaseEnd != null">release_end,</if>
-            <if test="remarks != null">remarks,</if>
-            <if test="annexUrl != null">annex_url,</if>
-            <if test="status != null">status,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="pid != null">pid,</if>
-            <if test="pname != null">pname,</if>
-            <if test="duration != null">duration,</if>
-            <if test="validDate != null">valid_date,</if>
-            <if test="supplement != null">supplement,</if>
-            <if test="auditInfo != null">audit_info,</if>
-            <if test="plan != null">plan,</if>
-            <if test="expectedEffect != null">expected_effect,</if>
-            <if test="nextPlan != null">next_plan,</if>
-            <if test="type != null">type,</if>
-            <if test="orderNo != null">order_no,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="updateStatus != null">update_status,</if>
-            <if test="assist != null">assist,</if>
-            <if test="assistAid != null">assist_aid,</if>
-            <if test="assistAidName != null">assist_aid_name,</if>
-            <if test="mainId != null">main_id,</if>
-            <if test="mainName != null">main_name,</if>
-            <if test="rejectName != null">reject_name,</if>
-            <if test="assistantAid != null">assistant_aid,</if>
-            <if test="assistantName != null">assistant_name,</if>
-            <if test="publicAgain != null">public_again,</if>
-            <if test="auditTime != null">audit_time,</if>
-            <if test="newUser != null">new_user,</if>
-            <if test="signSum != null">sign_sum,</if>
-            <if test="userNames != null">user_names,</if>
-            <if test="objectType != null">object_type,</if>
-            <if test="publicType != null">public_type,</if>
-            <if test="districtName != null">district_name,</if>
-            <if test="clockIn != null">clock_in,</if>
-            <if test="techStartProcess != null">tech_start_process,</if>
-            <if test="addressName != null">address_name,</if>
-            <if test="assistProcess != null">assist_process,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id,jdbcType=INTEGER},</if>
-            <if test="aid != null">#{aid,jdbcType=VARCHAR},</if>
-            <if test="releaseStart != null">#{releaseStart,jdbcType=TIMESTAMP},</if>
-            <if test="releaseEnd != null">#{releaseEnd,jdbcType=TIMESTAMP},</if>
-            <if test="remarks != null">#{remarks,jdbcType=VARCHAR},</if>
-            <if test="annexUrl != null">#{annexUrl,jdbcType=VARCHAR},</if>
-            <if test="status != null">#{status,jdbcType=INTEGER},</if>
-            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
-            <if test="pid != null">#{pid,jdbcType=VARCHAR},</if>
-            <if test="pname != null">#{pname,jdbcType=VARCHAR},</if>
-            <if test="duration != null">#{duration,jdbcType=DOUBLE},</if>
-            <if test="validDate != null">#{validDate,jdbcType=VARCHAR},</if>
-            <if test="supplement != null">#{supplement,jdbcType=VARCHAR},</if>
-            <if test="auditInfo != null">#{auditInfo,jdbcType=VARCHAR},</if>
-            <if test="plan != null">#{plan,jdbcType=VARCHAR},</if>
-            <if test="expectedEffect != null">#{expectedEffect,jdbcType=VARCHAR},</if>
-            <if test="nextPlan != null">#{nextPlan,jdbcType=VARCHAR},</if>
-            <if test="type != null">#{type,jdbcType=INTEGER},</if>
-            <if test="orderNo != null">#{orderNo,jdbcType=VARCHAR},</if>
-            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
-            <if test="updateStatus != null">#{updateStatus,jdbcType=INTEGER},</if>
-            <if test="assist != null">#{assist,jdbcType=INTEGER},</if>
-            <if test="assistAid != null">#{assistAid,jdbcType=VARCHAR},</if>
-            <if test="assistAidName != null">#{assistAidName,jdbcType=VARCHAR},</if>
-            <if test="mainId != null">#{mainId,jdbcType=INTEGER},</if>
-            <if test="mainName != null">#{mainName,jdbcType=VARCHAR},</if>
-            <if test="rejectName != null">#{rejectName,jdbcType=VARCHAR},</if>
-            <if test="assistantAid != null">#{assistantAid,jdbcType=VARCHAR},</if>
-            <if test="assistantName != null">#{assistantName,jdbcType=VARCHAR},</if>
-            <if test="publicAgain != null">#{publicAgain,jdbcType=INTEGER},</if>
-            <if test="auditTime != null">#{auditTime,jdbcType=TIMESTAMP},</if>
-            <if test="newUser != null">#{newUser,jdbcType=VARCHAR},</if>
-            <if test="signSum != null">#{signSum,jdbcType=VARCHAR},</if>
-            <if test="userNames != null">#{userNames,jdbcType=VARCHAR},</if>
-            <if test="objectType != null">#{objectType,jdbcType=INTEGER},</if>
-            <if test="publicType != null">#{publicType,jdbcType=INTEGER},</if>
-            <if test="districtName != null">#{districtName,jdbcType=VARCHAR},</if>
-            <if test="clockIn != null">#{clockIn,jdbcType=INTEGER},</if>
-            <if test="techStartProcess != null">#{techStartProcess,jdbcType=INTEGER},</if>
-            <if test="addressName != null">#{addressName,jdbcType=VARCHAR},</if>
-            <if test="assistProcess != null">#{assistProcess,jdbcType=INTEGER}</if>
-        </trim>
+                #{districtName}, #{clockIn}, #{techStartProcess}, #{addressName}, #{assistProcess}, #{alone})
     </insert>
 
     <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
@@ -436,7 +353,7 @@
         duration, valid_date, supplement, audit_info, plan, expected_effect, next_plan, type, order_no, update_time,
         update_status, assist, assist_aid, assist_aid_name, main_id, main_name, reject_name, assistant_aid,
         assistant_name, public_again, audit_time, new_user, sign_sum, user_names, object_type, public_type,
-        district_name, clock_in, tech_start_process, address_name, assist_process)
+        district_name, clock_in, tech_start_process, address_name, assist_process, alone)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.aid}, #{entity.releaseStart}, #{entity.releaseEnd}, #{entity.remarks}, #{entity.annexUrl},
@@ -447,7 +364,7 @@
             #{entity.rejectName}, #{entity.assistantAid}, #{entity.assistantName}, #{entity.publicAgain},
             #{entity.auditTime}, #{entity.newUser}, #{entity.signSum}, #{entity.userNames}, #{entity.objectType},
             #{entity.publicType}, #{entity.districtName}, #{entity.clockIn}, #{entity.techStartProcess},
-            #{entity.addressName}, #{entity.assistProcess})
+            #{entity.addressName}, #{entity.assistProcess}, #{entity.alone})
         </foreach>
     </insert>
 
@@ -456,7 +373,7 @@
         duration, valid_date, supplement, audit_info, plan, expected_effect, next_plan, type, order_no, update_time,
         update_status, assist, assist_aid, assist_aid_name, main_id, main_name, reject_name, assistant_aid,
         assistant_name, public_again, audit_time, new_user, sign_sum, user_names, object_type, public_type,
-        district_name, clock_in, tech_start_process, address_name, assist_process)
+        district_name, clock_in, tech_start_process, address_name, assist_process, alone)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.aid}, #{entity.releaseStart}, #{entity.releaseEnd}, #{entity.remarks}, #{entity.annexUrl},
@@ -467,7 +384,7 @@
             #{entity.rejectName}, #{entity.assistantAid}, #{entity.assistantName}, #{entity.publicAgain},
             #{entity.auditTime}, #{entity.newUser}, #{entity.signSum}, #{entity.userNames}, #{entity.objectType},
             #{entity.publicType}, #{entity.districtName}, #{entity.clockIn}, #{entity.techStartProcess},
-            #{entity.addressName}, #{entity.assistProcess})
+            #{entity.addressName}, #{entity.assistProcess}, #{entity.alone})
         </foreach>
         on duplicate key update
         aid = values(aid),
@@ -509,7 +426,8 @@
         clock_in = values(clock_in),
         tech_start_process = values(tech_start_process),
         address_name = values(address_name),
-        assist_process = values(assist_process)
+        assist_process = values(assist_process),
+        alone = values(alone)
     </insert>
 
     <!--通过主键修改数据-->
@@ -594,10 +512,10 @@
             <if test="rejectName != null and rejectName != ''">
                 reject_name = #{rejectName},
             </if>
-            <if test="assistantAid != null and assistantAid != ''">
+            <if test="assistantAid != null ">
                 assistant_aid = #{assistantAid},
             </if>
-            <if test="assistantName != null and assistantName != ''">
+            <if test="assistantName != null">
                 assistant_name = #{assistantName},
             </if>
             <if test="publicAgain != null">
@@ -636,6 +554,9 @@
             <if test="assistProcess != null">
                 assist_process = #{assistProcess},
             </if>
+            <if test="alone != null">
+                alone = #{alone},
+            </if>
         </set>
         where id = #{id}
     </update>
@@ -646,6 +567,103 @@
         from public_release
         where id = #{id}
     </delete>
+    <delete id="deleteByMainId">
+        delete from public_release where main_id = #{id}
+    </delete>
+
+
+    <!--注意增删字段需要单独处理-->
+    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicRelease" useGeneratedKeys="true">
+        insert into public_release
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="aid != null">aid,</if>
+            <if test="releaseStart != null">release_start,</if>
+            <if test="releaseEnd != null">release_end,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="annexUrl != null">annex_url,</if>
+            <if test="status != null">status,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="pid != null">pid,</if>
+            <if test="pname != null">pname,</if>
+            <if test="duration != null">duration,</if>
+            <if test="validDate != null">valid_date,</if>
+            <if test="supplement != null">supplement,</if>
+            <if test="auditInfo != null">audit_info,</if>
+            <if test="plan != null">plan,</if>
+            <if test="expectedEffect != null">expected_effect,</if>
+            <if test="nextPlan != null">next_plan,</if>
+            <if test="type != null">type,</if>
+            <if test="orderNo != null">order_no,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateStatus != null">update_status,</if>
+            <if test="assist != null">assist,</if>
+            <if test="assistAid != null">assist_aid,</if>
+            <if test="assistAidName != null">assist_aid_name,</if>
+            <if test="mainId != null">main_id,</if>
+            <if test="mainName != null">main_name,</if>
+            <if test="rejectName != null">reject_name,</if>
+            <if test="assistantAid != null">assistant_aid,</if>
+            <if test="assistantName != null">assistant_name,</if>
+            <if test="publicAgain != null">public_again,</if>
+            <if test="auditTime != null">audit_time,</if>
+            <if test="newUser != null">new_user,</if>
+            <if test="signSum != null">sign_sum,</if>
+            <if test="userNames != null">user_names,</if>
+            <if test="objectType != null">object_type,</if>
+            <if test="publicType != null">public_type,</if>
+            <if test="districtName != null">district_name,</if>
+            <if test="clockIn != null">clock_in,</if>
+            <if test="techStartProcess != null">tech_start_process,</if>
+            <if test="addressName != null">address_name,</if>
+            <if test="assistProcess != null">assist_process,</if>
+            <if test="alone != null">alone,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id,jdbcType=INTEGER},</if>
+            <if test="aid != null">#{aid,jdbcType=VARCHAR},</if>
+            <if test="releaseStart != null">#{releaseStart,jdbcType=TIMESTAMP},</if>
+            <if test="releaseEnd != null">#{releaseEnd,jdbcType=TIMESTAMP},</if>
+            <if test="remarks != null">#{remarks,jdbcType=VARCHAR},</if>
+            <if test="annexUrl != null">#{annexUrl,jdbcType=VARCHAR},</if>
+            <if test="status != null">#{status,jdbcType=INTEGER},</if>
+            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
+            <if test="pid != null">#{pid,jdbcType=VARCHAR},</if>
+            <if test="pname != null">#{pname,jdbcType=VARCHAR},</if>
+            <if test="duration != null">#{duration,jdbcType=DOUBLE},</if>
+            <if test="validDate != null">#{validDate,jdbcType=VARCHAR},</if>
+            <if test="supplement != null">#{supplement,jdbcType=VARCHAR},</if>
+            <if test="auditInfo != null">#{auditInfo,jdbcType=VARCHAR},</if>
+            <if test="plan != null">#{plan,jdbcType=VARCHAR},</if>
+            <if test="expectedEffect != null">#{expectedEffect,jdbcType=VARCHAR},</if>
+            <if test="nextPlan != null">#{nextPlan,jdbcType=VARCHAR},</if>
+            <if test="type != null">#{type,jdbcType=INTEGER},</if>
+            <if test="orderNo != null">#{orderNo,jdbcType=VARCHAR},</if>
+            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
+            <if test="updateStatus != null">#{updateStatus,jdbcType=INTEGER},</if>
+            <if test="assist != null">#{assist,jdbcType=INTEGER},</if>
+            <if test="assistAid != null">#{assistAid,jdbcType=VARCHAR},</if>
+            <if test="assistAidName != null">#{assistAidName,jdbcType=VARCHAR},</if>
+            <if test="mainId != null">#{mainId,jdbcType=INTEGER},</if>
+            <if test="mainName != null">#{mainName,jdbcType=VARCHAR},</if>
+            <if test="rejectName != null">#{rejectName,jdbcType=VARCHAR},</if>
+            <if test="assistantAid != null">#{assistantAid,jdbcType=VARCHAR},</if>
+            <if test="assistantName != null">#{assistantName,jdbcType=VARCHAR},</if>
+            <if test="publicAgain != null">#{publicAgain,jdbcType=INTEGER},</if>
+            <if test="auditTime != null">#{auditTime,jdbcType=TIMESTAMP},</if>
+            <if test="newUser != null">#{newUser,jdbcType=VARCHAR},</if>
+            <if test="signSum != null">#{signSum,jdbcType=VARCHAR},</if>
+            <if test="userNames != null">#{userNames,jdbcType=VARCHAR},</if>
+            <if test="objectType != null">#{objectType,jdbcType=INTEGER},</if>
+            <if test="publicType != null">#{publicType,jdbcType=INTEGER},</if>
+            <if test="districtName != null">#{districtName,jdbcType=VARCHAR},</if>
+            <if test="clockIn != null">#{clockIn,jdbcType=INTEGER},</if>
+            <if test="techStartProcess != null">#{techStartProcess,jdbcType=INTEGER},</if>
+            <if test="addressName != null">#{addressName,jdbcType=VARCHAR},</if>
+            <if test="assistProcess != null">#{assistProcess,jdbcType=INTEGER},</if>
+            <if test="alone != null">#{alone,jdbcType=INTEGER},</if>
+        </trim>
+    </insert>
 
     <update id="updateSignByAidAndUid">
         update public_release_details a left join public_release b on a.prid =b.id
@@ -660,7 +678,7 @@
         date_format(a.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,date_format(a.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,a.status,
         date_format(a.update_time ,'%Y-%m-%d %H:%i:%S') updateTimes,a.update_status updateStatus,a.district_name districtName,
         a.assist,a.assist_aid assistAid,a.assist_aid_name assistAidName,a.type,a.main_name mainName,a.reject_name rejectName,
-        a.assistant_aid assistantAid ,a.assistant_name assistantName,a.public_again publicAgain,a.user_names userNames,
+        a.assistant_aid assistantAid ,a.assistant_name assistantName,a.public_again publicAgain,a.user_names userNames,a.alone,
         ea.total_amount expenseAmount ,a.clock_in clockIn,a.assist_process assistProcess,a.tech_start_process techStartProcess
         from public_release a  left join admin c on a.aid =c.id
         left join expense_account ea ON a.id = ea.prid AND ea.status IN (0, 1, 2, 3)
@@ -690,16 +708,16 @@
         <if test="type==0">
             and a.public_type in (0,1,2,3)
             <if test="assist ==0">
-                and a.assist in(0,1)
+                and a.assist in(0,1,4)
             </if>
             <if test="assist == 2">
-                and a.assist    =2
+                and a.assist    in (2,4)
             </if>
             <if test="assist == 3">
                 and a.assist    =3
             </if>
             <if test="assist ==4">
-                and a.assist in (2,3)
+                and a.assist in (2,3,4)
             </if>
             <if test="assistType ==1">
                 and a.assist in(0,1,2)
@@ -741,16 +759,14 @@
         <if test="type==4">
             and a.assist in(0,1)
             and e.aid = #{aid}
-            and a.status=1
-            <if test="status==null">and a.public_type in (1,2) </if>
-            <if test="status==1">and a.public_type in (1) </if>
+            <if test="status==null"> and a.public_type in (1,2) </if>
+            <if test="status==1">and a.status=1 and a.public_type in (1) </if>
             <if test="status==2">and a.public_type in (2) </if>
         </if>
         <if test="type==5">
             and e.aid =#{aid}
-            and a.status=1
             <if test="status==null">and a.tech_start_process in (1,2) </if>
-            <if test="status==1">and a.tech_start_process in (1) </if>
+            <if test="status==1">and a.status=1 and a.tech_start_process in (1) </if>
             <if test="status==2">and a.tech_start_process in (2) </if>
         </if>
         <if test="type==6">
@@ -799,7 +815,7 @@
     <select id="selectDtails" resultType="com.goafanti.weChat.bo.OutPublicRelease">
         select  a.id,c.name  aname,date_format(a.release_start,'%Y-%m-%d %H:%i:%S') releaseStarts,a.update_time updateTime,a.user_names userNames,
         date_format(a.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,date_format(a.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,a.status,a.assist_process assistProcess,
-        a.annex_url annexUrl ,a.remarks,a.duration ,a.valid_date validDate ,a.aid ,c.superior_id suprId,a.tech_start_process techStartProcess,
+        a.annex_url annexUrl ,a.remarks,a.duration ,a.valid_date validDate ,a.aid ,c.superior_id suprId,a.tech_start_process techStartProcess,a.alone,
         a.plan ,a.expected_effect expectedEffect,a.next_plan nextPlan,c.reviewer,a.type,a.order_no orderNo,d.contract_no contractNo,a.address_name addressName,
         date_format(a.update_time ,'%Y-%m-%d %H:%i:%S') updateTimes,a.update_Status updateStatus,a.assist,a.assist_aid assistAid,a.assist_aid_name assistAidName,
         a.main_name mainName,a.assistant_aid assistantAid,a.assistant_name assistantName,a.public_again publicAhain,x.uids,a.public_type publicType,c2.name reviewerName
@@ -873,10 +889,9 @@
         </if>
         group by aid)x
     </select>
-
     <select id="listPublicDtails" resultType="com.goafanti.weChat.bo.OutPublicDtails">
         select a.id prdId,b.id,a.district_name districtName ,c.name aname,a.duration ,b.status ,b.annex_url annexUrl,a.photo_url photoUrl,d.nickname userName,
-        date_format(a.clock_in_time ,'%Y-%m-%d %H:%i:%S') clockInTimes,a.clock_in clockIn ,b.remarks ,b.supplement ,b.`type` ,b.object_type objectType ,
+        date_format(a.clock_in_time ,'%Y-%m-%d %H:%i:%S') clockInTimes,a.clock_in clockIn ,b.remarks ,b.supplement ,b.`type` ,b.object_type objectType ,b.alone,
         date_format(b.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,b.audit_info auditInfo,date_format(b.audit_time ,'%Y-%m-%d %H:%i:%S') auditTimes,
         date_format(b.release_start,'%Y-%m-%d %H:%i:%S') releaseStarts,date_format(b.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,a.address_name addressName,
         b.plan ,b.next_plan nextPlan ,b.expected_effect expectedEffect,b.update_status updateStatus,b.assist_aid_name assistAidName,
@@ -974,12 +989,7 @@
         </if>
     </select>
 
-    <select id="checkTime" resultType="java.lang.Integer">
-        select id from public_release where aid=#{aid} and status in (0,1,2)
-                                        and ( (release_start &gt;= #{start} and release_start &lt; #{end})
-                or  (release_start &lt; #{start} and release_end &gt; #{start})
-                or  (release_start &lt; #{end} and release_end &gt; #{end}))
-    </select>
+
     <select id="getTimeUserFollow" resultType="com.goafanti.common.model.OutPublicReleaseCount">
         select e.id province,d.id depId,a.aid,a.uid,a.new_user newUser ,1 quantity from (select a.aid,b.uid,b.new_user from public_release a
                                                                                                                                 left join public_release_details b on a.id=b.prid
@@ -1159,17 +1169,35 @@
     </select>
     <select id="selectByMainIdAndReviewer" resultMap="PublicReleaseMap">
         select
-        a.id, a.aid, a.release_start, a.release_end, a.remarks, a.annex_url, a.status, a.create_time, a.pid, a.pname, a.duration, a.valid_date, a.supplement, a.audit_info, a.plan, a.expected_effect, a.next_plan, a.type, a.order_no, a.update_time, a.update_status, a.assist, a.assist_aid, a.assist_aid_name, a.main_id, a.main_name
+            a.id, a.aid, a.release_start, a.release_end, a.remarks, a.annex_url, a.status, a.create_time, a.pid, a.pname, a.duration, a.valid_date, a.supplement, a.audit_info, a.plan, a.expected_effect, a.next_plan, a.type, a.order_no, a.update_time, a.update_status, a.assist, a.assist_aid, a.assist_aid_name, a.main_id, a.main_name
         from public_release a left join admin_public_reviewer b on a.aid =b.aid and b.type=1
         where a.main_id = #{id}
-        and b.reviewer_id = #{reviewerId}
+          and b.reviewer_id = #{reviewerId}
     </select>
     <select id="selectDetailsByPrid" resultType="com.goafanti.common.model.PublicReleaseDetails">
         select
-        a.id, a.prid, a.uid
+            a.id, a.prid, a.uid
         from public_release_details a
         where a.prid = #{prid}
     </select>
-</mapper>
+    <select id="checkTime" resultMap="PublicReleaseMap">
+        select
+        <include refid="PublicReleaseAllSql"/>
+        from public_release where aid=#{aid} and status in (0,1,2)
+        and (alone in (0,1) or (alone=2 and assist=2))
+        and ( (release_start &gt;= #{start} and release_start &lt;= #{end})
+        or  (release_start &lt; #{start} and release_end &gt; #{start})
+        or  (release_start &lt; #{end} and release_end &gt; #{end}))
+    </select>
+    <select id="checkTech" resultMap="PublicReleaseMap">
+        select
+        <include refid="PublicReleaseAllSql"/>
+        from public_release where status =1 and `type` =0 and assist =1
+          and FIND_IN_SET(#{aid},assist_aid)
+          and ( (release_start &gt;= #{start} and release_start &lt;= #{end})
+            or  (release_start &lt; #{start} and release_end &gt; #{start})
+            or  (release_start &lt; #{end} and release_end &gt; #{end}))
+    </select>
 
+</mapper>
 

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

@@ -132,12 +132,13 @@
         select *
         from (select a.id,b.nickname name,c.bname projectName,a.`type` ,ad.name userAdmin,ad2.name adminName,a.lock_time lockTime,
         a.last_follow_time lastFollowTime,a.uid, b.society_tag societyTag,dg1.name as province, dg2.name as city,
-        dg3.name as area,d.intended_project intendedProject, d.business_scope businessScope,a.pid,
+        dg3.name as area,d.intended_project intendedProject, d.business_scope businessScope,a.pid,ic.name industry,
         (if(a.type=1,30,270) -DATEDIFF(now(),if(a.last_follow_time>a.lock_time,a.last_follow_time,a.lock_time)))days
         from restrict_project a
         left join user b on a.uid =b.id left join business_project c on a.pid =c.id
         left join admin ad on b.aid =ad.id left join admin ad2 on a.aid =ad2.id
         left join organization_identity d on b.id = d.uid
+        left join industry_category ic on d.industry=ic.id
         left join district_glossory dg1 on d.location_province = dg1.id
         left join district_glossory dg2 on d.location_city = dg2.id
         left join district_glossory dg3 on d.location_area = dg3.id

+ 91 - 0
src/main/java/com/goafanti/common/mapper/UserArchivesMapper.xml

@@ -241,5 +241,96 @@ interview_distribution = values(interview_distribution)
         from user_archives
         where uid = #{id}
     </select>
+
+    <select id="selectUserArchivesList" resultType="com.goafanti.customer.bo.OutSelectUserArchives">
+        select a.id , a.nickname ,d1.name as  province ,d2.name as  city ,d3.name area ,
+        a.share_type as shareType ,d.channel_type as channelType ,e.enterprise_count as enterpriseCount,
+        c.name contactName,f.name adminName,e.channel_indicators as channelIndicators,
+        e.interview_ideas as interviewIdeas ,b.intended_project as intendedProject,
+        e.interview_distribution as interviewDistribution, g.name depName,
+        ic.name as  industry ,b.business_scope as businessScope ,e.financial_data as financialData,
+        e.early_communication as earlyCommunication,e.patent_count as patentCount,
+        e.invention_patent_count as inventionPatentCount,e.utility_model_count as utilityModelCount,
+        e.appearance_patent_count as appearancePatentCount,e.software_works_count as softwareWorksCount,
+        e.other_count as otherCount
+        from user a left join organization_identity b on a.id =b.uid
+                    left join organization_contact_book c on a.id =c.uid and c.major =1
+                    left join user_mid d on a.id =d.uid
+                    left join user_archives e on a.id =e.uid
+                    left join admin f on a.aid =f.id
+                    left join department g on f.department_id =g.id
+        left join district_glossory d1 on b.location_province=d1.id
+        left join district_glossory d2 on b.location_city=d2.id
+        left join district_glossory d3 on b.location_area=d3.id
+        left join industry_category ic on b.industry=ic.id
+        <where>
+            <if test="newChannel !=null">
+                and a.new_channel = #{newChannel}
+            </if>
+            <if test="name !=null">
+            and a.nickname like concat('%',#{name},'%')
+            </if>
+            <if test="aid !=null">
+            and a.aid = #{aid}
+            </if>
+            <if test="channelType !=null">
+            and d.channel_type in
+            <foreach collection="channelType" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+            </if>
+            <if test="shareType !=null">
+                and a.share_type = #{shareType}
+            </if>
+            <if test="businessScope !=null">
+                and find_in_set(#{businessScope},b.business_scope)
+            </if>
+        <if test="industry !=null">
+            and b.industry in
+            <foreach collection="industry" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        </where>
+        order by a.transfer_time desc
+        <if test="page_sql != null">
+            ${page_sql}
+        </if>
+    </select>
+    <select id="selectUserArchivesCount" resultType="java.lang.Integer">
+        select count(*)
+        from user a
+        left join organization_identity b on a.id =b.uid
+        left join user_mid d on a.id =d.uid
+        <where>
+            <if test="newChannel !=null">
+                and a.new_channel = #{newChannel}
+            </if>
+            <if test="name !=null">
+                and a.nickname like concat('%',#{name},'%')
+            </if>
+            <if test="aid !=null">
+                and a.aid = #{aid}
+            </if>
+            <if test="channelType !=null">
+                and d.channel_type in
+                <foreach collection="channelType" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="shareType !=null">
+                and a.share_type = #{shareType}
+            </if>
+            <if test="businessScope !=null">
+                and find_in_set(#{businessScope},b.business_scope)
+            </if>
+            <if test="industry !=null">
+                and b.industry in
+                <foreach collection="industry" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
 

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

@@ -1280,13 +1280,14 @@
 
     <select id="selectPrivateOrganizationCustomerList" resultType="com.goafanti.customer.bo.CustomerListOut">
         select a.id uid,a.aid,a.nickname name,a.society_tag societyTag,a.`level`,b.name aName,dg1.name as province,dg2.name as city,
-        a.guidance, dg3.name as area,d.intended_project  intendedProject,d.business_scope businessScope,d.org_code orgCode,
+        a.guidance, dg3.name as area,d.intended_project  intendedProject,d.business_scope businessScope,d.org_code orgCode,ic.name industry,
         date_format(um.last_sign_time,'%Y-%m-%d %H:%i:%S') lastSignTime,
         date_format(a.transfer_time,'%Y-%m-%d %H:%i:%S') as transferTime,
         date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as createTime,
         date_format(um.last_follow_time,'%Y-%m-%d %H:%i:%S') lastFollowTime,
         if(a.transfer_time &lt; um.last_follow_time,um.last_follow_time,a.transfer_time) as orderTime
         from user a left join admin b on a.aid=b.id left join organization_identity d on a.id = d.uid
+        left join industry_category ic on d.industry=ic.id
         left join district_glossory dg1 on d.location_province = dg1.id
         left join district_glossory dg2 on d.location_city = dg2.id
         left join district_glossory dg3 on d.location_area = dg3.id

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

@@ -59,7 +59,7 @@ id, uid, aid, content, create_time
         values (#{uid}, #{aid}, #{content})
     </insert>
 
-    <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
+    <insert id="insertBatch" >
         insert into user_super_evaluate(uid, aid, content, create_time)
         values
         <foreach collection="entities" item="entity" separator=",">

+ 15 - 3
src/main/java/com/goafanti/common/model/PublicRelease.java

@@ -8,10 +8,10 @@ import java.util.Date;
  * 公出表(PublicRelease)实体类
  *
  * @author makejava
- * @since 2024-08-07 09:44:55
+ * @since 2024-08-26 14:10:20
  */
 public class PublicRelease implements Serializable {
-    private static final long serialVersionUID = 315905429186420690L;
+    private static final long serialVersionUID = 823562112761855755L;
 
     private Integer id;
     /**
@@ -95,7 +95,7 @@ public class PublicRelease implements Serializable {
      */
     private Integer updateStatus;
     /**
-     * 0否 1主公出 2协助公出
+     * 0否 1主公出 2协助公出 3技术助手
      */
     private Integer assist;
     /**
@@ -174,6 +174,10 @@ public class PublicRelease implements Serializable {
      * 协单审核 0非协单 1协单未审核 2协单部分审核 3协单完全审核 4协单驳回
      */
     private Integer assistProcess;
+    /**
+     * 协单业务公出 0非协单 1协单一起 2技术单独协单
+     */
+    private Integer alone;
 
 
     public Integer getId() {
@@ -504,5 +508,13 @@ public class PublicRelease implements Serializable {
         this.assistProcess = assistProcess;
     }
 
+    public Integer getAlone() {
+        return alone;
+    }
+
+    public void setAlone(Integer alone) {
+        this.alone = alone;
+    }
+
 }
 

+ 87 - 0
src/main/java/com/goafanti/customer/bo/InputSelectUserArchives.java

@@ -0,0 +1,87 @@
+package com.goafanti.customer.bo;
+
+public class InputSelectUserArchives {
+
+    private Integer newChannel;
+    private String name;
+    private String aid;
+
+    private String  channelType;
+    private String  businessScope;
+    private String  industry;
+    private Integer shareType;
+    private Integer pageSize;
+    private Integer pageNo;
+
+    public String getBusinessScope() {
+        return businessScope;
+    }
+
+    public void setBusinessScope(String businessScope) {
+        this.businessScope = businessScope;
+    }
+
+    public String getIndustry() {
+        return industry;
+    }
+
+    public void setIndustry(String industry) {
+        this.industry = industry;
+    }
+
+    public Integer getNewChannel() {
+        return newChannel;
+    }
+
+    public void setNewChannel(Integer newChannel) {
+        this.newChannel = newChannel;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAid() {
+        return aid;
+    }
+
+    public void setAid(String aid) {
+        this.aid = aid;
+    }
+
+    public String getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(String channelType) {
+        this.channelType = channelType;
+    }
+
+    public Integer getShareType() {
+        return shareType;
+    }
+
+    public void setShareType(Integer shareType) {
+        this.shareType = shareType;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public Integer getPageNo() {
+        return pageNo;
+    }
+
+    public void setPageNo(Integer pageNo) {
+        this.pageNo = pageNo;
+    }
+}

+ 230 - 0
src/main/java/com/goafanti/customer/bo/OutSelectUserArchives.java

@@ -0,0 +1,230 @@
+package com.goafanti.customer.bo;
+
+public class OutSelectUserArchives {
+    private String id;
+    private String nickname;
+    private String province;
+    private String city;
+    private String area;
+    private Integer shareType;
+    private Integer channelType;
+    private Integer enterpriseCount;
+    private String contactName;
+    private String adminName;
+    private String channelIndicators;
+    private String interviewIdeas;
+    private String intendedProject;
+    private String interviewDistribution;
+    private String depName;
+
+    private String industry;
+    private String businessScope;
+    private String financialData;
+    private String earlyCommunication;
+    private Integer  patentCount;
+    private Integer inventionPatentCount;
+    private Integer utilityModelCount;
+    private Integer appearancePatentCount;
+    private Integer softwareWorksCount;
+    private Integer otherCount;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getNickname() {
+        return nickname;
+    }
+
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public Integer getShareType() {
+        return shareType;
+    }
+
+    public void setShareType(Integer shareType) {
+        this.shareType = shareType;
+    }
+
+    public Integer getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(Integer channelType) {
+        this.channelType = channelType;
+    }
+
+    public Integer getEnterpriseCount() {
+        return enterpriseCount;
+    }
+
+    public void setEnterpriseCount(Integer enterpriseCount) {
+        this.enterpriseCount = enterpriseCount;
+    }
+
+    public String getContactName() {
+        return contactName;
+    }
+
+    public void setContactName(String contactName) {
+        this.contactName = contactName;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public String getChannelIndicators() {
+        return channelIndicators;
+    }
+
+    public void setChannelIndicators(String channelIndicators) {
+        this.channelIndicators = channelIndicators;
+    }
+
+    public String getInterviewIdeas() {
+        return interviewIdeas;
+    }
+
+    public void setInterviewIdeas(String interviewIdeas) {
+        this.interviewIdeas = interviewIdeas;
+    }
+
+    public String getIntendedProject() {
+        return intendedProject;
+    }
+
+    public void setIntendedProject(String intendedProject) {
+        this.intendedProject = intendedProject;
+    }
+
+    public String getInterviewDistribution() {
+        return interviewDistribution;
+    }
+
+    public void setInterviewDistribution(String interviewDistribution) {
+        this.interviewDistribution = interviewDistribution;
+    }
+
+    public String getDepName() {
+        return depName;
+    }
+
+    public void setDepName(String depName) {
+        this.depName = depName;
+    }
+
+    public String getIndustry() {
+        return industry;
+    }
+
+    public void setIndustry(String industry) {
+        this.industry = industry;
+    }
+
+    public String getBusinessScope() {
+        return businessScope;
+    }
+
+    public void setBusinessScope(String businessScope) {
+        this.businessScope = businessScope;
+    }
+
+    public String getFinancialData() {
+        return financialData;
+    }
+
+    public void setFinancialData(String financialData) {
+        this.financialData = financialData;
+    }
+
+    public String getEarlyCommunication() {
+        return earlyCommunication;
+    }
+
+    public void setEarlyCommunication(String earlyCommunication) {
+        this.earlyCommunication = earlyCommunication;
+    }
+
+    public Integer getPatentCount() {
+        return patentCount;
+    }
+
+    public void setPatentCount(Integer patentCount) {
+        this.patentCount = patentCount;
+    }
+
+    public Integer getInventionPatentCount() {
+        return inventionPatentCount;
+    }
+
+    public void setInventionPatentCount(Integer inventionPatentCount) {
+        this.inventionPatentCount = inventionPatentCount;
+    }
+
+    public Integer getUtilityModelCount() {
+        return utilityModelCount;
+    }
+
+    public void setUtilityModelCount(Integer utilityModelCount) {
+        this.utilityModelCount = utilityModelCount;
+    }
+
+    public Integer getAppearancePatentCount() {
+        return appearancePatentCount;
+    }
+
+    public void setAppearancePatentCount(Integer appearancePatentCount) {
+        this.appearancePatentCount = appearancePatentCount;
+    }
+
+    public Integer getSoftwareWorksCount() {
+        return softwareWorksCount;
+    }
+
+    public void setSoftwareWorksCount(Integer softwareWorksCount) {
+        this.softwareWorksCount = softwareWorksCount;
+    }
+
+    public Integer getOtherCount() {
+        return otherCount;
+    }
+
+    public void setOtherCount(Integer otherCount) {
+        this.otherCount = otherCount;
+    }
+}

+ 9 - 0
src/main/java/com/goafanti/customer/bo/UserArchivesDetails.java

@@ -15,6 +15,15 @@ public class UserArchivesDetails extends UserArchives {
     private Integer myUser;
     private Integer newChannel;
     private Integer channelType;
+    private Integer signBills;
+
+    public Integer getSignBills() {
+        return signBills;
+    }
+
+    public void setSignBills(Integer signBills) {
+        this.signBills = signBills;
+    }
 
     public Integer getNewChannel() {
         return newChannel;

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

@@ -1658,4 +1658,14 @@ public class AdminCustomerApiController extends BaseApiController{
 		res.setData(customerService.getPublicReleaseList(id));
 		return res;
 	}
+
+	/**
+	 * 客户公出情况
+	 */
+	@GetMapping("/selectPublicReleaseList")
+	public Result<List<PublicReleaseListBo>> selectPublicReleaseList(String id) {
+		Result res = new Result();
+		res.setData(customerService.getPublicReleaseList(id));
+		return res;
+	}
 }

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

@@ -3,6 +3,7 @@ package com.goafanti.customer.controller;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.controller.BaseController;
 import com.goafanti.common.model.UserArchives;
+import com.goafanti.customer.bo.InputSelectUserArchives;
 import com.goafanti.customer.service.UserArchivesService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -96,7 +97,7 @@ public class UserArchivesController  extends BaseController {
 
 
     /**
-     * 微信查询查询企业其他信息与档案信息
+     * 微信查询查询企业其他信息与档案信息 分享查看
      *
      * @param id 主键
      * @return 单条数据
@@ -113,6 +114,33 @@ public class UserArchivesController  extends BaseController {
     }
 
 
+    /**
+     * 微信查询查询企业其他信息与档案信息 上级查看
+     *
+     * @param id 主键
+     * @return 单条数据
+     */
+    @GetMapping("/superQueryByUidAll")
+    public Result superQueryByUidAll( String id) {
+        Result res = new Result<>();
+        res.data(this.userArchivesService.queryByUidAll(id));
+        return res;
+    }
+
+
+
+    /**
+     * 客户档案汇总
+     */
+    @GetMapping("/selectUserArchives")
+    public Result selectUserArchives( InputSelectUserArchives in) {
+        Result res = new Result<>();
+        if (in.getNewChannel()==null)in.setNewChannel(0);
+        res.data(this.userArchivesService.selectUserArchives(in));
+        return res;
+    }
+
+
 
 
 

+ 3 - 0
src/main/java/com/goafanti/customer/service/UserArchivesService.java

@@ -1,6 +1,7 @@
 package com.goafanti.customer.service;
 
 import com.goafanti.common.model.UserArchives;
+import com.goafanti.customer.bo.InputSelectUserArchives;
 
 /**
  * 客户档案表(UserArchives)表服务接口
@@ -51,4 +52,6 @@ public interface UserArchivesService {
     Object queryByUidAll(String id);
 
     boolean checkPermission(String id);
+
+    Object selectUserArchives(InputSelectUserArchives in);
 }

+ 14 - 11
src/main/java/com/goafanti/customer/service/impl/CustomerServiceImpl.java

@@ -1634,16 +1634,18 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 		int mymax = userMapper.checkUserMax(aid);
 		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;
-			}
+            switch (role) {
+                case AFTConstants.SALESMAN_DIRECTOR:
+                    if (limitmax < YXZJ_MAX) limitmax = YXZJ_MAX;
+                    break;
+                case AFTConstants.SALESMAN_MANAGER:
+                    if (limitmax < YXJL_MAX) limitmax = YXJL_MAX;
+                    break;
+                case AFTConstants.SALESMAN:
+                case AFTConstants.SALESMAN_ASSISTANT:
+                    if (limitmax < YXY_MAX) limitmax = YXY_MAX;
+                    break;
+            }
 		}
 		if (mymax==limitmax){
 			return 1;
@@ -2564,7 +2566,7 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
             } else if (role.equals(AFTConstants.SALESMAN_MANAGER)){
 				if(limitmax<YXJL_MAX)limitmax += YXJL_MAX;
 				break;
-            } else if (role.equals(AFTConstants.SALESMAN)){
+            } else if (role.equals(AFTConstants.SALESMAN)||role.equals(AFTConstants.SALESMAN_ASSISTANT)){
 				if(limitmax<YXY_MAX)limitmax += YXY_MAX;
 				break;
             }
@@ -3119,6 +3121,7 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
     public Object getPublicReleaseList(String id) {
 		Map<String, Object> map=new HashMap<>();
 		User user = userMapper.selectByPrimaryKey(id);
+		map.put("user",user);
 		if (user.getAid().equals(TokenManager.getAdminId())){
 			map.put("myUser",1);
 		}else {

+ 25 - 0
src/main/java/com/goafanti/customer/service/impl/UserArchivesServiceImpl.java

@@ -8,6 +8,7 @@ import com.goafanti.common.model.*;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.customer.bo.InputSelectUserArchives;
 import com.goafanti.customer.bo.UserArchivesDetails;
 import com.goafanti.customer.service.CustomerService;
 import com.goafanti.customer.service.UserArchivesService;
@@ -64,6 +65,7 @@ public class UserArchivesServiceImpl extends BaseMybatisDao< UserArchivesMapper>
         }else {
             user.setMyUser(0);
         }
+        user.setSignBills(u.getSignBills());
         UserArchives userArchives = queryByUid(id);
         List<OrganizationContactBook> customerContacts = userMapper.findCustomerContacts(id, TokenManager.getAdminId());
         if (!customerContacts.isEmpty()){
@@ -94,6 +96,8 @@ public class UserArchivesServiceImpl extends BaseMybatisDao< UserArchivesMapper>
         return false;
     }
 
+
+
     /**
      * 通过ID查询单条数据
      *
@@ -206,4 +210,25 @@ public class UserArchivesServiceImpl extends BaseMybatisDao< UserArchivesMapper>
     public boolean deleteById(Integer id) {
         return this.userArchivesMapper.deleteById(id) > 0;
     }
+
+
+    @Override
+    public Object selectUserArchives(InputSelectUserArchives in) {
+        Map<String, Object> params = new HashMap<>();
+        if (in.getNewChannel() != null)params.put("newChannel", in.getNewChannel());
+        if (in.getShareType() != null)params.put("shareType", in.getShareType());
+        if (in.getChannelType() != null){
+            String[] split = in.getChannelType().split(",");
+            params.put("channelType", split);
+        }
+        if (in.getName() != null)params.put("name", in.getName());
+        if (in.getAid() != null)params.put("aid", in.getAid());
+        if (in.getBusinessScope() != null)params.put("businessScope", in.getBusinessScope());
+        if (in.getIndustry() != null){
+            String[] split = in.getIndustry().split(",");
+            params.put("industry", split);
+        }
+        return findPage("selectUserArchivesList",
+                "selectUserArchivesCount", params, in.getPageNo(), in.getPageSize());
+    }
 }

+ 5 - 2
src/main/java/com/goafanti/order/service/impl/PushOrderService.java

@@ -12,6 +12,8 @@ import com.goafanti.order.enums.ProcessStatus;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 @Service
 public class PushOrderService {
     public static final String   DEFAULTS_URL="/image/noPermission.jpg";
@@ -34,8 +36,9 @@ public class PushOrderService {
         //流程状态 0-已派营销员,1-已派营销员管理员,2-已派财务管理员,3-已派财务专员,4-已派咨询师管理员,5-已部分派咨询师经理,6-已部全部派咨询师经理
         if (TokenManager.hasRole(AFTConstants.SUPERADMIN) || TokenManager.hasRole(AFTConstants.APPROVAL_DECISION) ){
             return t.getContractPictureUrl();
-        }else if ((TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)||TokenManager.hasRole(AFTConstants.SALESMAN))&&
-                TokenManager.getAdminId().equals(t.getSalesmanId())){
+        }else if ((TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)||TokenManager.hasRole(AFTConstants.SALESMAN)
+                ||TokenManager.hasRole(AFTConstants.SALESMAN_ASSISTANT))&&
+                Objects.equals(TokenManager.getAdminId(), t.getSalesmanId())){
             return  t.getContractPictureUrl();
         }else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)&& !TokenManager.getAdminId().equals(t.getSalesmanId())){
             if (TokenManager.getAdminId().equals(t.getManagerId())&&t.getProcessStatus()==ProcessStatus.YPYXJL.getCode()){

+ 20 - 1
src/main/java/com/goafanti/weChat/bo/OutPublicDtails.java

@@ -36,8 +36,10 @@ public class OutPublicDtails  {
 	private String releaseStarts;
 	@Excel(name = "公出结束时间")
 	private String releaseEnds;
-	@Excel(name = "打卡状态",readConverterExp = "0=未打卡,1=已打卡,2=异常打卡",width = 8)
+
 	private Integer clockIn;
+	@Excel(name = "打卡状态",width = 8)
+	private String clockInStr;
 	@Excel(name = "打卡时间" )
 	private String clockInTimes;
 	@Excel(name = "创建时间" )
@@ -67,12 +69,29 @@ public class OutPublicDtails  {
 	@Excel(name = "协单助手" )
 	private String assistantName;
 	private Integer assist;
+	private Integer alone;
 	private Integer objectType;
 	@Excel(name = "合同编号" )
 	private String contractNo;
 	@Excel(name = "订单总金额" ,scale = 6)
 	private BigDecimal totalAmout;
 
+	public String getClockInStr() {
+		return clockInStr;
+	}
+
+	public void setClockInStr(String clockInStr) {
+		this.clockInStr = clockInStr;
+	}
+
+	public Integer getAlone() {
+		return alone;
+	}
+
+	public void setAlone(Integer alone) {
+		this.alone = alone;
+	}
+
 	public String getAddressName() {
 		return addressName;
 	}

+ 15 - 1
src/main/java/com/goafanti/weChat/bo/OutPublicRelease.java

@@ -20,7 +20,7 @@ public class OutPublicRelease extends PublicRelease {
 	private String suprId;
 	/** 审核权限*/
 	private Integer permission;
-	/** 自己是否审核
+	/** 自己是否审核  多企业公出时,需要多人审核是
 	 *   0=自己  1不是自己
 	 * */
 	private Integer myExamine;
@@ -48,6 +48,20 @@ public class OutPublicRelease extends PublicRelease {
 
 	private Integer publicAssistAdvice;
 
+	/**
+	 *  客户档案查看权限
+	 */
+	private Integer ViewPermission;
+
+
+	public Integer getViewPermission() {
+		return ViewPermission;
+	}
+
+	public void setViewPermission(Integer viewPermission) {
+		ViewPermission = viewPermission;
+	}
+
 	public Integer getPublicAssistAdvice() {
 		return publicAssistAdvice;
 	}

+ 10 - 0
src/main/java/com/goafanti/weChat/bo/OutPublicReleaseList.java

@@ -39,10 +39,20 @@ public class OutPublicReleaseList {
 
 	private Integer publicAssistAdvice;
 	private Integer assistProcess;
+	private Integer alone;
 
 
 	private List<OutPublicReleaseDetails> prdList;
 
+
+	public Integer getAlone() {
+		return alone;
+	}
+
+	public void setAlone(Integer alone) {
+		this.alone = alone;
+	}
+
 	public Integer getAssistProcess() {
 		return assistProcess;
 	}

+ 52 - 0
src/main/java/com/goafanti/weChat/bo/sendListBo.java

@@ -0,0 +1,52 @@
+package com.goafanti.weChat.bo;
+
+public class sendListBo {
+    //信息接受者
+    private String aid;
+    private String assistAid;
+    private Integer prid;
+
+    private String userNames;
+
+    public Integer getPrid() {
+        return prid;
+    }
+
+    public void setPrid(Integer prid) {
+        this.prid = prid;
+    }
+
+    public sendListBo(String aid, String assistAid, Integer prid, String userNames) {
+        this.aid = aid;
+        this.assistAid = assistAid;
+        this.prid = prid;
+        this.userNames = userNames;
+    }
+
+    public sendListBo() {
+    }
+
+    public String getAid() {
+        return aid;
+    }
+
+    public void setAid(String aid) {
+        this.aid = aid;
+    }
+
+    public String getAssistAid() {
+        return assistAid;
+    }
+
+    public void setAssistAid(String assistAid) {
+        this.assistAid = assistAid;
+    }
+
+    public String getUserNames() {
+        return userNames;
+    }
+
+    public void setUserNames(String userNames) {
+        this.userNames = userNames;
+    }
+}

+ 21 - 9
src/main/java/com/goafanti/weChat/controller/AdminReleaseApiController.java

@@ -52,8 +52,13 @@ public class AdminReleaseApiController extends CertifyApiController{
 			res.getError().add(buildErrorMessageParams(ErrorConstants.PARAM_EMPTY_ERROR,"公出地点"));
 			return res;
 		}
-		if (publicReleaseService.checkTime(in)) {
-			res.getError().add(buildError("公出时段已经被使用!","公出时段已经被使用!"));
+		int i = publicReleaseService.checkTime(in);
+		if (i==1) {
+			res.getError().add(buildError("发起人公出时段已经被使用!","发起人公出时段已经被使用!"));
+			return res;
+		}
+		if (i==2) {
+			res.getError().add(buildError("协单人公出时段已经被使用!","协单人公出时段已经被使用!"));
 			return res;
 		}
 		if(in.getAssist()==null)in.setAssist(0);
@@ -93,9 +98,16 @@ public class AdminReleaseApiController extends CertifyApiController{
 			res.getError().add(buildErrorMessageParams(ErrorConstants.PARAM_EMPTY_ERROR,"编号"));
 			return res;
 		}
-		if (in.getStatus()!=3&&publicReleaseService.checkTime(in)) {
-			res.getError().add(buildError("公出时段已经被使用!","公出时段已经被使用!"));
-			return res;
+		if (in.getStatus()!=3) {
+			int i = publicReleaseService.checkTime(in);
+			if (i==1) {
+				res.getError().add(buildError("发起人公出时段已经被使用!","发起人公出时段已经被使用!"));
+				return res;
+			}
+			if (i==2) {
+				res.getError().add(buildError("协单人公出时段已经被使用!","协单人公出时段已经被使用!"));
+				return res;
+			}
 		}
 		res.setData(publicReleaseService.updatePublicRelease(in));
 		return res;
@@ -177,7 +189,7 @@ public class AdminReleaseApiController extends CertifyApiController{
 	 * 公出审核、外出审核 上级
 	 */
 	@RequestMapping(value = "/examinePublicRelease", method = RequestMethod.POST)
-	public Result examinePublicRelease(Integer id ,Integer status,String remarks){
+	public Result examinePublicRelease(Integer id ,Integer status,String remarks,Integer evaluateType){
 		Result res =new Result();
 		if (id==null) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"公出编号"));
@@ -191,7 +203,7 @@ public class AdminReleaseApiController extends CertifyApiController{
 			res.getError().add(buildError("备注长度不能超过20个字符。"));
 			return res;
 		}
-		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,0));
+		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,0,evaluateType));
 		return res;
 	}
 
@@ -213,7 +225,7 @@ public class AdminReleaseApiController extends CertifyApiController{
 			res.getError().add(buildError("备注长度不能超过20个字符。"));
 			return res;
 		}
-		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,1));
+		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,1,0));
 		return res;
 	}
 
@@ -259,7 +271,7 @@ public class AdminReleaseApiController extends CertifyApiController{
 			res.getError().add(buildError("备注长度不能超过20个字符。"));
 			return res;
 		}
-		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,2));
+		res.setData(publicReleaseService.pushExaminePublicRelease(id,status,remarks,2,0));
 		return res;
 	}
 

+ 10 - 3
src/main/java/com/goafanti/weChat/service/PublicReleaseService.java

@@ -12,8 +12,15 @@ public interface PublicReleaseService {
 	Object listPublicRelease(InputPublicReleaseList in);
 
 
-
-	int pushExaminePublicRelease(Integer id, Integer status, String remarks,Integer type);
+	/**
+	 *
+	 * @param id 公出编号
+	 * @param status 公出状态
+	 * @param remarks 公出说明
+	 * @param examineType 0上级审核 1营销员审核 2技术审核
+	 * @param evaluateType 0不存指导意见 1存指导意见
+	 */
+	int pushExaminePublicRelease(Integer id, Integer status, String remarks,Integer examineType,Integer evaluateType);
 
 
 	List<outPublicReleaseLog> listPublicReleaseLog(Integer id,String ufid);
@@ -31,7 +38,7 @@ public interface PublicReleaseService {
 
 	OutPublicReleaseAndDetails followDtails(String id);
 
-	boolean checkTime(InputPublicRelease in);
+	int checkTime(InputPublicRelease in);
 
 	List<OutPublicStatistics> publicReleaseStatisticsList(InputPublicStatistics in);
 

+ 373 - 130
src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

@@ -92,6 +92,8 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 	private UserArchivesMapper userArchivesMapper;
 	@Autowired
 	private OrganizationIdentityMapper organizationIdentityMapper;
+	@Autowired
+	private UserSuperEvaluateMapper userSuperEvaluateMapper;
 
 	@Override
 	@Transactional
@@ -102,14 +104,18 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		in.setPublicType(0);
 		in.setTechStartProcess(0);
 		in.setStatus(1);
-		in.setAid(TokenManager.getAdminId());
 		AdminListBo my = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
+		Map checkOrderNo =null;
+		List<PublicReleaseDetails> prdList=new ArrayList<>();
+		List<User> users=new ArrayList<>();
+		StringBuilder str =new StringBuilder();
+		//判定是单独协单还是一起协单
+		in.setAid(TokenManager.getAdminId());
 		if (in.getAssist()==1){
 //			in.setAssistAidName(getAssistAidName(in.getAssistAid()));
 			in.setMainName(my.getName());
 			in.setAssistProcess(1);
 		}
-		Map checkOrderNo =null;
 		if (in.getType() == 1) {
 			//技术公出
 			checkOrderNo = checkOrderNoDuration(in,my,1);
@@ -120,15 +126,25 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				in.setTechStartProcess(1);
 			}
 		}
-
 		publicReleaseMapper.insertSelective(in);
-		if (in.getOrderNo()!=null){
+		if (in.getType()==1&&in.getOrderNo()!=null){
 			TOrderNew tOrderNew = tOrderNewMapper.selectByPrimaryKey(in.getOrderNo());
 			orderNewService.pushOrderPublicReleaseCount(tOrderNew);
 		}
-		List<PublicReleaseDetails> prdList=new ArrayList<>();
-		List<User> users=new ArrayList<>();
-		StringBuilder str =new StringBuilder();
+		addPRD(in, users, str, prdList);
+		addPublicReleaseDateClock(in);
+		String userNames=str.substring(0,str.length()-1);
+		in.setUserNames(userNames);
+		PublicRelease updateName=new PublicRelease();
+		updateName.setId(in.getId());
+		updateName.setUserNames(userNames);
+		publicReleaseMapper.update(updateName);
+		addpublicLog(in.getId(), PublicReleaseLog.states.fq.getCode(), "发起外出申请");
+		pushPublicCarbonCopy(in, my, userNames);
+		return (Map<String, Object>) addPublicReleaseLog(my, in,userNames,date,users,checkOrderNo);
+	}
+
+	private void addPRD(InputPublicRelease in, List<User> users, StringBuilder str, List<PublicReleaseDetails> prdList) {
 		if (in.getUids()!=null){
 			List<String> split = Arrays.asList(in.getUids().split(","));
 			int userCount=split.size();
@@ -175,16 +191,6 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			}
 			publicReleaseDetailsMapper.insertBatch(prdList);
 		}
-		addPublicReleaseDateClock(in);
-		String userNames=str.substring(0,str.length()-1);
-		in.setUserNames(userNames);
-		PublicRelease updateName=new PublicRelease();
-		updateName.setId(in.getId());
-		updateName.setUserNames(userNames);
-		publicReleaseMapper.update(updateName);
-		addpublicLog(in.getId(), PublicReleaseLog.states.fq.getCode(), "发起外出申请");
-		pushPublicCarbonCopy(in, my, userNames);
-		return (Map<String, Object>) addPublicReleaseLog(my, in,userNames,date,users,checkOrderNo);
 	}
 
 	private void pushPublicCarbonCopy(InputPublicRelease in, AdminListBo my, String userNames) {
@@ -462,65 +468,34 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			}
 			if (in.getAssist()==1){
 				in.setAssistProcess(1);
+				//在有协单的情况下,新增是审核完成才新增,修改是审核完成才修改。
+				//如果是删除,则需要判定
+				String[] assistAid = in.getAssistAid().split(",");
+				List<PublicRelease> publicReleases = publicReleaseMapper.selectByMainId(in.getId(), null, null);
+				for (PublicRelease e : publicReleases) {
+					boolean flag = false;
+					for (String aid : assistAid) {
+						if (e.getAid().equals(aid)){
+							flag = true;
+							break;
+						}
+					}
+					if (!flag&&e.getClockIn()==1){
+						throw new BusinessException("该公出已签到,无法取消");
+					}
+				}
 			}else if (in.getAssist()==0){
 				publicReleaseMapper.updateAssist(in);
 				in.setAssistProcess(0);
-			}
-			if (in.getUids()!=null){
-				List<String> split = Arrays.asList(in.getUids().split(","));
-				List<OutPublicReleaseDetails> prList = publicReleaseDetailsMapper.selectByPrid(in.getId());
-				uses=pushPublicReleaseDetails(split,prList,use,in);
-			}
-			in.setStatus(1);
-			log.setStatus(PublicReleaseLog.states.xg.getCode());
-			in.setUpdateStatus(1);
-
-			//如果是业务切公出则撤销营销审核与审核人
-			pushUpdateType(in,use);
-			//如果是业务公出,切审核状态为其他,则重置审核
-			if(in.getType()==0&&(use.getPublicType()==2||use.getPublicType()==3)){
-				in.setPublicType(1);
-				PublicExamine pe=new PublicExamine();
-				pe.setPrid(in.getId());
-				pe.setStatus(0);
-				publicExamineMapper.updateByPridSelective(pe);
-			}
-			//处理协单,修改,正常不存在协单,反想操作有协单需要单独处理
-			List<PublicRelease> list = publicReleaseMapper.selectByMainId(in.getId(),3,null);
-			String[] split = in.getAssistAid().split(",");
-			if (split.length==0){
-				for (PublicRelease e : list) {
+				List<PublicRelease> publicReleases = publicReleaseMapper.selectByMainId(in.getId(), null, null);
+				for (PublicRelease e : publicReleases) {
 					if (e.getClockIn()==1){
-						throw new BusinessException("协单打卡不能删除");
+						throw new BusinessException("该协单公出已打卡,无法取消");
 					}
 				}
-				for (PublicRelease e : list) {
-					publicReleaseMapper.deleteById(e.getId());
-				}
 			}
-//			List<PublicRelease> list2 = publicReleaseMapper.selectByMainId(in.getId(),4,null);
-
-//			for (PublicRelease out : list) {
-//				addpublicLog(out.getId(), PublicReleaseLog.states.xg.getCode(), "修改公出信息,协单自动更改状态");
-//				out.setStatus(1);
-//				publicReleaseMapper.updateByPrimaryKeySelective(out);
-//			}
-//			for (PublicRelease out : list2) {
-//				addpublicLog(out.getId(), PublicReleaseLog.states.xg.getCode(), "修改公出信息,协单助手自动更改状态");
-//				out.setStatus(1);
-//				publicReleaseMapper.updateByPrimaryKeySelective(out);
-//			}
-			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);
+			//处理修改公出
+			pushUpdatePublic(in, uses, use, log, userNames, date, checkOrderNo);
 		}else {
 			List<PublicRelease> list = publicReleaseMapper.selectByMainId(in.getId(),3,null);
 			List<PublicRelease> list2 = publicReleaseMapper.selectByMainId(in.getId(),4,null);
@@ -547,6 +522,62 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		return 1;
 	}
 
+	private void pushUpdatePublic(InputPublicRelease in, List<User> uses, PublicRelease use, PublicReleaseLog log, String userNames, Date date, Map checkOrderNo) {
+		if (in.getUids()!=null){
+			List<String> split = Arrays.asList(in.getUids().split(","));
+			List<OutPublicReleaseDetails> prList = publicReleaseDetailsMapper.selectByPrid(in.getId());
+			uses =pushPublicReleaseDetails(split,prList, use, in);
+		}
+		in.setStatus(1);
+		log.setStatus(PublicReleaseLog.states.xg.getCode());
+		in.setUpdateStatus(1);
+		//如果是业务切公出则撤销营销审核与审核人
+		pushUpdateType(in, use);
+		//如果是业务公出,切审核状态为其他,则重置审核
+		if(in.getType()==0&&(use.getPublicType()==2|| use.getPublicType()==3)){
+			in.setPublicType(1);
+			PublicExamine pe=new PublicExamine();
+			pe.setPrid(in.getId());
+			pe.setStatus(0);
+			publicExamineMapper.updateByPridSelective(pe);
+		}
+		//处理协单,修改,正常不存在协单,反想操作有协单需要单独处理
+		List<PublicRelease> list = publicReleaseMapper.selectByMainId(in.getId(),3,null);
+		String[] split = in.getAssistAid().split(",");
+		if (split.length==0){
+			for (PublicRelease e : list) {
+				if (e.getClockIn()==1){
+					throw new BusinessException("协单打卡不能删除");
+				}
+			}
+			for (PublicRelease e : list) {
+				publicReleaseMapper.deleteById(e.getId());
+			}
+		}
+//			List<PublicRelease> list2 = publicReleaseMapper.selectByMainId(in.getId(),4,null);
+
+//			for (PublicRelease out : list) {
+//				addpublicLog(out.getId(), PublicReleaseLog.states.xg.getCode(), "修改公出信息,协单自动更改状态");
+//				out.setStatus(1);
+//				publicReleaseMapper.updateByPrimaryKeySelective(out);
+//			}
+//			for (PublicRelease out : list2) {
+//				addpublicLog(out.getId(), PublicReleaseLog.states.xg.getCode(), "修改公出信息,协单助手自动更改状态");
+//				out.setStatus(1);
+//				publicReleaseMapper.updateByPrimaryKeySelective(out);
+//			}
+		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);
+	}
 
 
 	private void pushUpdateType(InputPublicRelease in, PublicRelease use) {
@@ -827,11 +858,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 	 * @param status 状态 0驳回 1发起 2同意 3 撤销 4技术驳回
 	 * @param remarks
 	 * @param examineType 0上级审核 1营销员审核 2技术审核
+	 * @param evaluateType 0不存指导意见 1存指导意见
 	 * @return
 	 */
 	@Override
 	@Transactional
-	public int pushExaminePublicRelease(Integer id, Integer status, String remarks,Integer examineType) {
+	public int pushExaminePublicRelease(Integer id, Integer status, String remarks,Integer examineType,Integer evaluateType) {
 		PublicRelease p=new PublicRelease();
 		Date date =new Date();
 		String aid=TokenManager.getAdminId();
@@ -888,10 +920,15 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			p.setAuditTime(date);
 			p.setRejectName(ad.getName());
 			sendNoticeAndSoucket(a.getId(),status,content.toString());
+			List<OutPublicReleaseDetails> outPublicReleaseDetails = publicReleaseDetailsMapper.selectByPrid(id);
+			//添加上级评价
+			if (evaluateType==1){
+				addUserSuperEvaluate(remarks, outPublicReleaseDetails, date);
+			}
+
 			//营销员审核
 		}else if (examineType==1){
 			//通知公出人切换成公出人审核人
-
 			if (status==2){
 			List<AdminPublicReviewerBo> adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(a.getId());
 			adminPublicReviewerBos=adminPublicReviewerBos.stream().filter(e -> e.getType() == 0).collect(Collectors.toList());
@@ -997,6 +1034,25 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			return 1;
 	}
 
+	/**
+	 * 添加上级评价
+	 * @param remarks
+	 * @param outPublicReleaseDetails
+	 * @param date
+	 */
+	private void addUserSuperEvaluate(String remarks, List<OutPublicReleaseDetails> outPublicReleaseDetails, Date date) {
+		List<UserSuperEvaluate> addLsit=new ArrayList<>();
+		for (OutPublicReleaseDetails e : outPublicReleaseDetails) {
+			UserSuperEvaluate addUSE=new UserSuperEvaluate();
+			addUSE.setAid(TokenManager.getAdminId());
+			addUSE.setUid(e.getUid());
+			addUSE.setContent(remarks);
+			addUSE.setCreateTime(date);
+			addLsit.add(addUSE);
+		}
+		userSuperEvaluateMapper.insertBatch(addLsit);
+	}
+
 
 	@Override
 	public Object updateAssistExamine(Integer id, Integer status, String remarks) {
@@ -1051,6 +1107,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				publicReleaseMapper.update(newPublic2);
 			}
 		}
+
 		return 1;
 	}
 
@@ -1259,6 +1316,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 					break;
 				}
 			}
+			//不存在则取消公出
 			if (!flag){
 				PublicRelease in = new PublicRelease();
 				in.setId(out.getId());
@@ -1269,6 +1327,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				publicReleaseLogMapper.insertSelective(log);
 				sendNoticeAndSoucket(out.getAid(),in.getStatus(),str.toString());
 			}else {
+				//存在则修改公出
 				PublicRelease np = new PublicRelease();
 				BeanUtils.copyProperties(use,np);
 				np.setId(out.getId());
@@ -1298,6 +1357,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				sendNoticeAndSoucket(out.getAid(),np.getStatus(),str.toString());
 			}
 		}
+		//有新增则新增公出
 		for (String s : ss) {
 			boolean flag2 = false;
 			for (PublicRelease o : list) {
@@ -1595,8 +1655,10 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		out.setPeList(ps);
 		List<AdminPublicReviewerBo> adminPublicReviewerBos=null;
 		if(out!=null){
-			//默认可以看
+			//详情查看权限
 			boolean flag=false;
+			//客户文档查看权限
+			boolean flag2=false;
 			//自己、审核人员与部门负责人可以查看
 			AdminListBo ab=adminMapper.getDeptNameByAid(out.getAid());
 			if (!aid.equals( out.getAid())&&
@@ -1604,30 +1666,96 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 					!TokenManager.hasRole(AFTConstants.TECH_FINANCE_DIRECTOR)){
 				flag=true;
 			}
+			//自己可以查看
+			if (aid.equals(out.getAid())){
+				if (out.getType()==0||out.getType() == 1){
+					flag2=true;
+				}
+			}
+			out.setMyExamine(0);
 			if (out.getType()==0||out.getType()==1||out.getType()==2){
 				if (adminPublicReviewerBos==null)adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(out.getAid());
+				//判定是否是上级审核人
+				boolean myFlag = false;
 				//如果是审核人可以查看
 					List<AdminPublicReviewerBo> collect = adminPublicReviewerBos.stream().filter(e -> e.getType() == 0).collect(Collectors.toList());
 					for (AdminPublicReviewerBo e : collect) {
 						if (e.getReviewerId().equals(aid)){
 							flag=false;
+							if (out.getType()==0){
+								flag2=true;
+							}
+							myFlag=true;
 							break;
 						}
 					}
-				//添加协单审核人可以查看
-				List<PublicRelease> publicReleases = publicReleaseMapper.selectByMainId(out.getId(), null, null);
-				for (PublicRelease e : publicReleases) {
-					adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(e.getAid());
-					List<AdminPublicReviewerBo> collect2 = adminPublicReviewerBos.stream().filter(e2 -> e2.getType() == 1).collect(Collectors.toList());
-					for (AdminPublicReviewerBo e2 : collect2) {
-						if (e2.getReviewerId().equals(aid)){
+				//判定是否是上级审核状态
+				if((out.getPublicType()==0|| out.getPublicType()==2)&&
+						(out.getTechStartProcess()==0|| out.getTechStartProcess()==2)&&
+						(out.getAssistProcess()==0|| out.getAssistProcess()==1)&&
+						(out.getAssist()==0|| out.getAssist()==1)&& out.getStatus()==1
+				){
+					if (myFlag){
+						out.setMyExamine(1);
+					}
+					if(out.getPublicType()==2){
+						for (PublicExamine p : ps) {
+							if (p.getAid().equals(aid)){{
+								flag = false;
+								break;
+							}
+
+						}
+					}
+				} else if (out.getPublicType()==1) {
+					//他人公出审核
+					if (!ps.isEmpty()){
+						for (PublicExamine p : ps) {
+								if (p.getAid().equals(aid)){
+									flag=false;
+									if (out.getPublicType()==1&&out.getStatus()==1){
+										if (p.getStatus()==0)out.setMyExamine(1);
+										else out.setMyExamine(0);
+										break;
+									}
+								}
+
+							}
+						}
+					}
+				} else if ((out.getTechStartProcess()==1&&out.getTechStartProcess()==2)&&out.getStatus()==1) {
+					List<OutPublicReleaseDetails> outPublicReleaseDetails = publicReleaseDetailsMapper.selectByPrid(out.getId());
+					boolean myExamine = false;
+					for (OutPublicReleaseDetails ord : outPublicReleaseDetails) {
+						User user = userMapper.selectByPrimaryKey(ord.getUid());
+						if (user.getAid().equals(aid)){
 							flag=false;
-							break;
+							if (out.getTechStartProcess()==1)myExamine=true;
+
+						}
+					}
+					if (myExamine)out.setMyExamine(1);
+				} else if (out.getAssistProcess()==2||out.getAssistProcess()==3||out.getAssistProcess()==4) {
+					//添加协单审核人可以查看
+					List<PublicRelease> publicReleases = publicReleaseMapper.selectByMainId(out.getId(), null, null);
+					for (PublicRelease e : publicReleases) {
+						List<AdminPublicReviewerBo> sonAPRList =  adminPublicReviewerMapper.selectByAid(e.getAid());
+						List<AdminPublicReviewerBo> collect2 = sonAPRList.stream().filter(e2 -> e2.getType() == 1).collect(Collectors.toList());
+						for (AdminPublicReviewerBo e2 : collect2) {
+							if (e2.getReviewerId().equals(aid)){
+								flag=false;
+								if((out.getAssistProcess()==2||out.getAssistProcess()==3)&&
+										out.getStatus()==1
+								){
+									out.setMyExamine(1);
+									break;
+								}
+							}
 						}
 					}
 				}
 			}else if(out.getType()==3){
-				//如果是协单,如果是审核人则可以查看
+				//如果是协单,如果是审核人则可以查看
 				if (adminPublicReviewerBos==null)adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(out.getAid());
 				List<AdminPublicReviewerBo> collect = adminPublicReviewerBos.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
 				for (AdminPublicReviewerBo e : collect) {
@@ -1636,51 +1764,74 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 						break;
 					}
 				}
-			}
-			//非自己的客户审核
-			if (!ps.isEmpty()){
-				for (PublicExamine p : ps) {
-					if (p.getAid().equals(aid)){
-						if (p.getStatus()==1)out.setMyExamine(1);
-						else out.setMyExamine(0);
-						flag=false;
+				String[] split = out.getAssistAid().split(",");
+				for (String s : split) {
+					if (s.equals(aid)){
+						flag2=true;
 						break;
 					}
 				}
+
 			}
+			//客户档案设置查看权限
+			if (flag2){
+				out.setViewPermission(1);
+			}else {
+				out.setViewPermission(0);
+			}
+
 			//处理返回
 			if(flag){
 				out=null;
 				return out;
 			}else {
-				if (out.getPublicType()==1){
-					if (aid.equals(out.getAid())){
-						out.setPermission(0);
-					}else {
-						out.setPermission(1);
-					}
+				if(aid.equals(out.getAid())) {
+					out.setPermission(0);
 				}else {
-					if(aid.equals(out.getAid())) {
-						out.setPermission(0);
-					}else {
-						out.setPermission(1);
-					}
+					out.setPermission(1);
 				}
 			}
 		}
 		//设置审核人
+		pushExamine(out, adminPublicReviewerBos, ps);
+		List<OutPublicReleaseDetails> prdList = publicReleaseDetailsMapper.selectByPrid(id);
+		List<PublicReleaseDateClock> prdcList = publicReleaseDateClockMapper.selectByPrid(id);
+		pushDateClockDetailsToday(prdList,prdcList);
+		out.setPrdList(prdList);
+		//判定公出协单意见有没有的权限
+		List<PublicAssistAdvice> publicAssistAdvices = publicAssistAdviceMapper.selectList(out.getId(), 0);
+		if (publicAssistAdvices.isEmpty()){
+			out.setPublicAssistAdvice(0);
+		}else {
+			out.setPublicAssistAdvice(publicAssistAdvices.size());
+
+		}
+		return out;
+	}
+
+
+
+
+	/**
+	 * 设置审核人
+	 * @param out
+	 * @param adminPublicReviewerBos
+	 * @param ps
+	 */
+	private void pushExamine(OutPublicRelease out, List<AdminPublicReviewerBo> adminPublicReviewerBos, List<PublicExamine> ps) {
+		//设置审核人
 		if (out.getStatus()==1&&
-				((out.getPublicType()==0||out.getPublicType()==2)&&(out.getTechStartProcess()==0||out.getTechStartProcess()==2)))
+				((out.getPublicType()==0|| out.getPublicType()==2)&&(out.getTechStartProcess()==0|| out.getTechStartProcess()==2)))
 		{
 
-			if (adminPublicReviewerBos==null)adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(out.getAid());
+			if (adminPublicReviewerBos ==null) adminPublicReviewerBos = adminPublicReviewerMapper.selectByAid(out.getAid());
 			StringBuffer str =new StringBuffer();
 			if(out.getType()==3){
 				List<AdminPublicReviewerBo> collect = adminPublicReviewerBos.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
 				for (AdminPublicReviewerBo e : collect) {
 					str.append(e.getReviewerName()+",");
 				}
-			}else if (out.getType()==0&&out.getAssistProcess()==2){
+			}else if (out.getType()==0&& out.getAssistProcess()==2){
 				//获取技术协单
 				List<PublicRelease> publicReleases = publicReleaseMapper.selectByMainId(out.getId(), null, null);
 				List<String> names=new ArrayList<>();
@@ -1700,12 +1851,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				for (String name : names) {
 					str.append(name+",");
 				}
-				out.setMyExamine(1);
-				for (String s : ids) {
-					if (s.equals(TokenManager.getAdminId())){
-						out.setMyExamine(0);
-					}
-				}
+//				out.setMyExamine(1);
+//				for (String s : ids) {
+//					if (s.equals(TokenManager.getAdminId())){
+//						out.setMyExamine(0);
+//					}
+//				}
 			} else {
 				List<AdminPublicReviewerBo> collect = adminPublicReviewerBos.stream().filter(e -> e.getType() == 0).collect(Collectors.toList());
 				for (AdminPublicReviewerBo e : collect) {
@@ -1714,7 +1865,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			}
 
 
-			if(str.length()>1)out.setAdminExamine(str.substring(0,str.length()-1)+" 未审核");
+			if(str.length()>1) out.setAdminExamine(str.substring(0,str.length()-1)+" 未审核");
 		}else if (out.getStatus()==0) {
 			out.setAdminExamine("");
 		}else {
@@ -1731,22 +1882,9 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 			}
 		}
-		List<OutPublicReleaseDetails> prdList = publicReleaseDetailsMapper.selectByPrid(id);
-		List<PublicReleaseDateClock> prdcList = publicReleaseDateClockMapper.selectByPrid(id);
-		pushDateClockDetailsToday(prdList,prdcList);
-		out.setPrdList(prdList);
-		List<PublicAssistAdvice> publicAssistAdvices = publicAssistAdviceMapper.selectList(out.getId(), 0);
-		if (publicAssistAdvices.isEmpty()){
-			out.setPublicAssistAdvice(0);
-		}else {
-			out.setPublicAssistAdvice(publicAssistAdvices.size());
-
-		}
-		return out;
 	}
 
 
-
 	@Override
 	public OutPublicReleaseAndDetails followDtails(String id) {
 		OutPublicReleaseAndDetails out = publicReleaseMapper.selectDtailsByFid( id);
@@ -1876,7 +2014,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 
 	@Override
-	public boolean checkTime(InputPublicRelease in) {
+	public int checkTime(InputPublicRelease in) {
 		try {
 			in.setReleaseStart(DateUtils.parseDate(in.getReleaseStarts(), AFTConstants.YYYYMMDDHHMMSS));
 			in.setReleaseEnd(DateUtils.parseDate(in.getReleaseEnds(), AFTConstants.YYYYMMDDHHMMSS));
@@ -1884,7 +2022,98 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			e.printStackTrace();
 			throw new BusinessException("转换异常");
 		}
-		List<Integer> is=publicReleaseMapper.checkTime(TokenManager.getAdminId(),in.getReleaseStart(),in.getReleaseEnd());
+		//如果主协单且一起公出
+		if(in.getAssist()==1&&in.getAlone()==1){
+			//判定当前发起人能发起不
+			if(checkPublicTime(TokenManager.getAdminId(), in)){
+				//第一种,发起人时间重复
+				return 1;
+//				return true;
+			}
+			//判定协单时间重复
+			Integer x = checkTech(in);
+			if (x != null) return x;
+		}else if(in.getAssist()==1&&in.getAlone()==2){
+			//判定协单时间重复
+			Integer x = checkTech(in);
+			if (x != null) return x;
+		}else {
+			//判定当前发起人能发起不
+			if(checkPublicTime(TokenManager.getAdminId(), in)){
+				//第一种,发起人时间重复
+				return 1;
+//				return true;
+			}
+		}
+
+		return 0;
+	}
+
+	private Integer checkTech(InputPublicRelease in) {
+		String[] split = in.getAssistAid().split(",");
+		for (String s : split) {
+			//先查审核中和完成的时间有没有冲突的
+			if(checTechTime(s, in)){
+				//第二种,协单人时间重复
+				return 2;
+//					return true;
+			}
+			//再查发起前营销审核中时间有没有冲突的
+			Integer x = checkSalesmanExamine(in, s);
+			if (x != null) return x;
+		}
+		return 0;
+	}
+
+	private boolean checTechTime(String aid, InputPublicRelease in) {
+		List<PublicRelease> is=publicReleaseMapper.checkTime(aid,in.getReleaseStart(),in.getReleaseEnd());
+		if (is.size()>1) {
+			return true;
+		}else  if(is.size()==1){
+			//如果id为新增那么直接不允许时间重复
+			if (in.getId()==null){
+				return true;
+			}else {
+				//如果有id,与获取id一直,则为当前修改可以
+				if (in.getId().equals(is.get(0).getMainId())){
+					return false;
+				}else {
+					return true;
+				}
+			}
+
+		}
+		return false;
+	}
+
+	private Integer checkSalesmanExamine(InputPublicRelease in, String s) {
+		List<PublicRelease> is = publicReleaseMapper.checkTech(s, in.getReleaseStart(), in.getReleaseEnd());
+		if (is.size()>1) {
+			return 2;
+		}else  if(is.size()==1){
+			//如果id为新增那么直接不允许时间重复
+			if (in.getId()==null){
+				return 2;
+			}else {
+				//如果有id,与获取id一直,则为当前修改可以
+				if (in.getId().equals(is.get(0).getId())){
+					return 0;
+				}else {
+					return 2;
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 *
+	 * @param aid
+	 * @param in
+	 * @return true 已经发起   false 未发起
+	 */
+	private boolean checkPublicTime(String aid, InputPublicRelease in) {
+		List<PublicRelease> is=publicReleaseMapper.checkTime(aid,in.getReleaseStart(),in.getReleaseEnd());
 		if (is.size()>1) {
 			return true;
 		}else  if(is.size()==1){
@@ -1925,15 +2154,20 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			long nowTime=System.currentTimeMillis();
 			long time = Math.abs(nowTime-e.getReleaseStart().getTime())/(1000*60);
 			long time2 = Math.abs(e.getReleaseEnd().getTime()-nowTime)/(1000*60);
+
 			//距离当前时间近的开始时间,不大于当前时间
 			if (time<count&&e.getReleaseStart().getTime()<nowTime){
-				count=time;
-				id=e.getId();
+				if (e.getAlone()!=1 && e.getAssist()!=1){
+					count=time;
+					id=e.getId();
+				}
 			}
 			//距离当前时间近的结束时间,不小于当前时间
 			if (time2<count&&e.getReleaseEnd().getTime()>nowTime){
-				count=time2;
-				id=e.getId();
+				if (e.getAlone()!=1 && e.getAssist()!=1){
+					count=time2;
+					id=e.getId();
+				}
 			}
 		}
 		if (id==null)id=myPublic.get(0).getId();
@@ -2102,7 +2336,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		if (p.getMainId()!=null){
 			PublicRelease mianPr=new PublicRelease();
 			mianPr.setId(p.getMainId());
-			mianPr.setAid(said);
+//			mianPr.setAid(said);
 			mianPr.setAssistantAid(said);
 			mianPr.setAssistantName(sname);
 			publicReleaseMapper.update(mianPr);
@@ -2409,10 +2643,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		}
 		data.setAmountName(amountName);
 		data.setAmountType(amountType);
+		//不需要限制
 		if(useOyd.getStatus()==1){
 			map.put("code",true);
 			map.put("data",null);
 		}else {
+			//需要限制判定小时
 			if (actualDuration.compareTo(data.getDurationMax())<1){
 				map.put("code",true);
 				map.put("data",null);
@@ -2438,6 +2674,13 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 	private void pushiClockInTime(List<OutPublicDtails> list, List<PublicReleaseClock> publicReleaseClocks) {
 		for (OutPublicDtails outPublicDtails : list) {
+			if (outPublicDtails.getClockIn()!=null){
+				if (outPublicDtails.getAlone()==2&&outPublicDtails.getAssist()==1){
+					outPublicDtails.setClockInStr("无需打卡");
+				}else if (outPublicDtails.getClockIn()==0)outPublicDtails.setClockInStr("未打卡");
+				else if (outPublicDtails.getClockIn()==1)outPublicDtails.setClockInStr("已打卡");
+				else if (outPublicDtails.getClockIn()==2)outPublicDtails.setClockInStr("异常打卡");
+			}
 			List<PublicReleaseClock> colokList =new ArrayList<>();
 			StringBuilder sb = new StringBuilder();
 			for (PublicReleaseClock e : publicReleaseClocks) {

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

@@ -1,7 +1,7 @@
 dev.name=local
 jdbc.driverClassName=com.mysql.jdbc.Driver
 
-static.host=//static.jishutao.com/1.3.23
+static.host=//static.jishutao.com/1.3.24
 #static.host=//172.16.1.187/1.3.19
 
 #jdbc.url=jdbc\:mysql://localhost:3306/aft20240430?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false

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

@@ -1,5 +1,5 @@
 dev.name=test
-static.host=//static.jishutao.com/1.3.23
+static.host=//static.jishutao.com/1.3.24
 #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