Browse Source

公出最大工时发起修改

anderx 1 year ago
parent
commit
6840ed935f

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

@@ -10,7 +10,7 @@ import java.util.List;
  * 最大报销审核日志(OrderPublicReleaseLog)表数据库访问层
  *
  * @author makejava
- * @since 2024-09-23 11:49:04
+ * @since 2024-09-23 15:18:08
  */
 public interface OrderPublicReleaseLogMapper {
 

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

@@ -89,6 +89,9 @@ public enum NoticeStatus {
 	RESTRICT_PROJECT_LOSE270_REMIND(79,"限时签单项目释放提醒"),
 	RECEIVE_RESTRICT_PROJECT(80,"领取限定项目"),
 	PUBLIC_CARBON_COPY(81,"公出抄送"),
+	PUBLIC_MAX_DURATION(82,"公出时长审核发起"),
+	PUBLIC_MAX_DURATION_YES(83,"公出时长审核通过"),
+	PUBLIC_MAX_DURATION_REJECT(84,"公出时长审核驳回"),
 	OTHER(0, "其他");
 
 	private NoticeStatus(Integer code, String desc) {

+ 23 - 9
src/main/java/com/goafanti/common/mapper/OrderPublicReleaseLogMapper.xml

@@ -5,6 +5,7 @@
         <result property="id" column="id" jdbcType="INTEGER"/>
         <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
         <result property="processStatus" column="process_status" jdbcType="INTEGER"/>
+        <result property="status" column="status" jdbcType="INTEGER"/>
         <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
         <result property="auditor" column="auditor" jdbcType="VARCHAR"/>
         <result property="auditorName" column="auditor_name" jdbcType="VARCHAR"/>
@@ -12,7 +13,7 @@
     </resultMap>
 
     <sql id="OrderPublicReleaseLogAllSql">
-        id, order_no, process_status, remarks, auditor, auditor_name, create_time
+        id, order_no, process_status, status, remarks, auditor, auditor_name, create_time
     </sql>
 
     <!--查询单个-->
@@ -39,6 +40,9 @@
             <if test="processStatus != null">
                 and process_status = #{processStatus}
             </if>
+            <if test="status != null">
+                and status = #{status}
+            </if>
             <if test="remarks != null and remarks != ''">
                 and remarks = #{remarks}
             </if>
@@ -71,6 +75,9 @@
             <if test="processStatus != null">
                 and process_status = #{processStatus}
             </if>
+            <if test="status != null">
+                and status = #{status}
+            </if>
             <if test="remarks != null and remarks != ''">
                 and remarks = #{remarks}
             </if>
@@ -88,29 +95,33 @@
 
     <!--新增所有列-->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
-        insert into order_public_release_log(order_no, process_status, remarks, auditor, auditor_name, create_time)
-        values (#{orderNo}, #{processStatus}, #{remarks}, #{auditor}, #{auditorName}, #{createTime})
+        insert into order_public_release_log(order_no, process_status, status, remarks, auditor, auditor_name,
+                                             create_time)
+        values (#{orderNo}, #{processStatus}, #{status}, #{remarks}, #{auditor}, #{auditorName}, #{createTime})
     </insert>
 
     <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
-        insert into order_public_release_log(order_no, process_status, remarks, auditor, auditor_name, create_time)
+        insert into order_public_release_log(order_no, process_status, status, remarks, auditor, auditor_name,
+        create_time)
         values
         <foreach collection="entities" item="entity" separator=",">
-            (#{entity.orderNo}, #{entity.processStatus}, #{entity.remarks}, #{entity.auditor}, #{entity.auditorName},
-            #{entity.createTime})
+            (#{entity.orderNo}, #{entity.processStatus}, #{entity.status}, #{entity.remarks}, #{entity.auditor},
+            #{entity.auditorName}, #{entity.createTime})
         </foreach>
     </insert>
 
     <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
-        insert into order_public_release_log(order_no, process_status, remarks, auditor, auditor_name, create_time)
+        insert into order_public_release_log(order_no, process_status, status, remarks, auditor, auditor_name,
+        create_time)
         values
         <foreach collection="entities" item="entity" separator=",">
-            (#{entity.orderNo}, #{entity.processStatus}, #{entity.remarks}, #{entity.auditor}, #{entity.auditorName},
-            #{entity.createTime})
+            (#{entity.orderNo}, #{entity.processStatus}, #{entity.status}, #{entity.remarks}, #{entity.auditor},
+            #{entity.auditorName}, #{entity.createTime})
         </foreach>
         on duplicate key update
         order_no = values(order_no),
         process_status = values(process_status),
+        status = values(status),
         remarks = values(remarks),
         auditor = values(auditor),
         auditor_name = values(auditor_name),
@@ -127,6 +138,9 @@
             <if test="processStatus != null">
                 process_status = #{processStatus},
             </if>
+            <if test="status != null">
+                status = #{status},
+            </if>
             <if test="remarks != null and remarks != ''">
                 remarks = #{remarks},
             </if>

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

@@ -8,10 +8,10 @@ import java.util.Date;
  * 最大报销审核日志(OrderPublicReleaseLog)实体类
  *
  * @author makejava
- * @since 2024-09-23 13:45:50
+ * @since 2024-09-23 15:18:08
  */
 public class OrderPublicReleaseLog implements Serializable {
-    private static final long serialVersionUID = 149252062043866637L;
+    private static final long serialVersionUID = 454237714414605584L;
     /**
      * id
      */
@@ -21,10 +21,14 @@ public class OrderPublicReleaseLog implements Serializable {
      */
     private String orderNo;
     /**
-     * 审核 0=未发起,1=技术总监审核中,2=财务总监审核中,3=驳回,4=完成
+     * 审核流程 0=未发起,1=技术总监审核中,2=财务总监审核中,3=驳回,4=完成
      */
     private Integer processStatus;
     /**
+     * 审核状态 1=同意,2=驳回
+     */
+    private Integer status;
+    /**
      * 备注
      */
     private String remarks;
@@ -66,6 +70,14 @@ public class OrderPublicReleaseLog implements Serializable {
         this.processStatus = processStatus;
     }
 
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
     public String getRemarks() {
         return remarks;
     }

+ 12 - 0
src/main/java/com/goafanti/weChat/controller/AdminReleaseApiController.java

@@ -560,4 +560,16 @@ public class AdminReleaseApiController extends CertifyApiController{
 
 		return res.data(publicReleaseService.updateMaxDuration(orderNo,maxDuration,remarks));
 	}
+
+	/**
+	 * 修改最大公出
+	 */
+	@RequestMapping(value = "/examineMaxDuration",method = RequestMethod.POST)
+	public Result examineMaxDuration (String orderNo,Integer status,String remarks){
+		Result res =new Result();
+		if (StringUtils.isEmpty(orderNo)){
+			return res().error(buildError(ErrorConstants.PARAM_ERROR,"订单编号"));
+		}
+		return res.data(publicReleaseService.pushExamineMaxDuration(orderNo,status,remarks));
+	}
 }

+ 2 - 0
src/main/java/com/goafanti/weChat/service/PublicReleaseService.java

@@ -88,4 +88,6 @@ public interface PublicReleaseService {
 	boolean checkUserArchives(String uid);
 
 	Object updateMaxDuration(String orderNo, Double maxDuration,String remarks);
+
+	Object pushExamineMaxDuration(String orderNo,Integer status, String remarks);
 }

+ 67 - 4
src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

@@ -94,6 +94,8 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 	private OrganizationIdentityMapper organizationIdentityMapper;
 	@Autowired
 	private UserSuperEvaluateMapper userSuperEvaluateMapper;
+	@Autowired
+	private OrderPublicReleaseLogMapper orderPublicReleaseLogMapper;
 
 	@Override
 	@Transactional
@@ -1196,20 +1198,81 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		in.setOrderNo(orderNo);
 		in.setMaxDuration(maxDuration);
 		in.setMaxProcess(1);
-		addOrderPublicReleaseLog(orderNo,maxDuration,0,remarks);
+		addOrderPublicReleaseLog(orderNo,0,0,remarks);
 		tOrderPublicReleaseCountMapper.updateByOrderNo(in);
 		return 1;
 	}
 
-	private void addOrderPublicReleaseLog(String orderNo, Double maxDuration,Integer type, String remarks) {
+	@Override
+	public Object pushExamineMaxDuration(String orderNo,Integer status, String remarks) {
+		TOrderPublicReleaseCount in =new TOrderPublicReleaseCount();
+		in.setOrderNo(orderNo);
+		int examine =0;
+		int process =0;
+		if (TokenManager.hasRole(AFTConstants.TECH_ADMIN)&&TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)){
+			process=4;
+			examine=0;
+		}else if (TokenManager.hasRole(AFTConstants.TECH_ADMIN)){
+			examine=1;
+			process=2;
+		}else if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)){
+			examine=2;
+			process=4;
+		}
+		TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(orderNo);
+		StringBuilder str=new StringBuilder();
+		str.append("合同编号[").append(order.getContractNo()).append("]最大公出限制审核");
+		if(status==1){
+			in.setMaxProcess(process);
+			if (examine==0||examine==2){
+				addOrderPublicReleaseLog(orderNo,status,1,remarks);
+				if (examine==0)addOrderPublicReleaseLog(orderNo,status,2,"相同审核人自动跳过。");
+				str.append("已通过。");
+				addNoticeAndEmail(order.getSalesmanId(),NoticeStatus.PUBLIC_MAX_DURATION_YES.getCode(), str.toString());
+			}else if (examine==1){
+				addOrderPublicReleaseLog(orderNo,status,examine,remarks);
+				if (examine==1){
+					List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.TECH_ADMIN);
+					str.append("需要审核,请尽快审核。");
+					admins.forEach(e->{
+						addNoticeAndEmail(order.getSalesmanId(),NoticeStatus.PUBLIC_MAX_DURATION_YES.getCode(), str.toString());
+					});
+
+				}
+			}
+		}else if(status==2){
+			in.setMaxProcess(3);
+			str.append("已驳回。");
+			addNoticeAndEmail(order.getSalesmanId(),NoticeStatus.PUBLIC_MAX_DURATION_YES.getCode(), str.toString());
+		}
+		return tOrderPublicReleaseCountMapper.update(in);
+	}
+
+	private void addNoticeAndEmail(String aid, Integer noticeStatus, String remarks) {
+		asyncUtils.addNoticAndEmail(noticeStatus,aid,remarks);
+	}
+
+	private void addNotice(String aid, Integer noticeType, String content) {
+		Notice n =new Notice();
+		n.setId(UUID.randomUUID().toString());
+		n.setAid(aid);
+		n.setNoticeType(noticeType);
+		n.setContent(content);
+		n.setReaded(0);//未读
+		asyncUtils.addNotice(n);
+	}
+
+	private void addOrderPublicReleaseLog(String orderNo, Integer status, Integer process, String remarks) {
 		Admin admin = adminMapper.selectByPrimaryKey(TokenManager.getAdminId());
 		OrderPublicReleaseLog log = new OrderPublicReleaseLog();
 		log.setOrderNo(orderNo);
-		log.setProcessStatus(0);
+		log.setProcessStatus(process);
+		log.setStatus(status);
 		log.setAuditor(admin.getId());
 		log.setAuditorName(admin.getName());
 		log.setRemarks(remarks);
-
+		log.setCreateTime(new Date());
+		orderPublicReleaseLogMapper.insert(log);
 	}
 
 	private void updateAdminUserCountPublicRelease(String aid, Date transferTime) {