瀏覽代碼

添加协单助手开发

anderx 3 年之前
父節點
當前提交
c2f5b184ac

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

@@ -43,8 +43,8 @@ public interface PublicReleaseMapper {
 
     List<OutPublicRelease> publicByOrder(String orderNo);
 
-    List<PublicRelease> selectByMainId(Integer mainId);
+    List<PublicRelease> selectByMainId(@Param("mainId") Integer mainId,@Param("type") Integer type,@Param("aid") String aid);
 
 
-    void updateStatusByMainId(@Param("status") Integer status, @Param("mainId") Integer mainId);
+    void updateStatusByMainId(@Param("status") Integer status, @Param("type") Integer type,@Param("mainId") Integer mainId,@Param("aid") String aid);
 }

+ 37 - 2
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -41,13 +41,16 @@
     <result column="main_name" jdbcType="VARCHAR" property="mainName" />
     <result column="clock_in_remarks" jdbcType="VARCHAR" property="clockInRemarks" />
     <result column="reject_name" jdbcType="VARCHAR" property="rejectName" />
+    <result column="assistant_aid" jdbcType="VARCHAR" property="assistantAid" />
+    <result column="assistant_name" jdbcType="VARCHAR" property="assistantName" />
   </resultMap>
   <sql id="Base_Column_List">
     id, `uid`, aid, release_start, release_end, remarks, annex_url, user_name, longitude,
     latitude, `status`, create_time, clock_in, clock_in_time, photo_url, pid, pname,
     ufid, duration, valid_date, new_user, sign_sum, main_status, 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, clock_in_remarks, reject_name
+    assist, assist_aid, assist_aid_name, main_id, main_name, clock_in_remarks, reject_name,
+    assistant_aid, assistant_name
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
     select
@@ -209,6 +212,12 @@
       <if test="rejectName != null">
         reject_name,
       </if>
+      <if test="assistantAid != null">
+        assistant_aid,
+      </if>
+      <if test="assistantName != null">
+        assistant_name,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -328,6 +337,12 @@
       <if test="rejectName != null">
         #{rejectName,jdbcType=VARCHAR},
       </if>
+      <if test="assistantAid != null">
+        #{assistantAid,jdbcType=VARCHAR},
+      </if>
+      <if test="assistantName != null">
+        #{assistantName,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.PublicRelease">
@@ -447,6 +462,12 @@
       <if test="rejectName != null">
         reject_name = #{rejectName,jdbcType=VARCHAR},
       </if>
+      <if test="assistantAid != null">
+        assistant_aid = #{assistantAid,jdbcType=VARCHAR},
+      </if>
+      <if test="assistantName != null">
+        assistant_name = #{assistantName,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=INTEGER}
   </update>
@@ -489,7 +510,9 @@
       main_id = #{mainId,jdbcType=INTEGER},
       main_name = #{mainName,jdbcType=VARCHAR},
       clock_in_remarks = #{clockInRemarks,jdbcType=VARCHAR},
-      reject_name = #{rejectName,jdbcType=VARCHAR}
+      reject_name = #{rejectName,jdbcType=VARCHAR},
+      assistant_aid = #{assistantAid,jdbcType=VARCHAR},
+      assistant_name = #{assistantName,jdbcType=VARCHAR}
     where id = #{id,jdbcType=INTEGER}
   </update>
 
@@ -796,9 +819,21 @@ a.assist,a.assist_aid assistAid,a.assist_aid_name assistAidName,a.type,a.main_na
     <include refid="Base_Column_List" />
     from public_release
     where main_id = #{mainId}
+    <if test="type !=null">
+      and type= #{type}
+    </if>
+    <if test="aid !=null">
+      and type= #{aid}
+    </if>
   </select>
   <update id="updateStatusByMainId">
     update public_release set status= #{status}
     where main_id= #{mainId}
+    <if test="type !=null">
+      and type= #{type}
+    </if>
+    <if test="aid !=null">
+      and type= #{aid}
+    </if>
   </update>
 </mapper>

+ 27 - 1
src/main/java/com/goafanti/common/model/PublicRelease.java

@@ -56,7 +56,7 @@ public class PublicRelease implements Serializable {
     private String latitude;
 
     /**
-     * 状态 0驳回 1发起 2同意 3 撤销
+     * 状态 0驳回 1发起 2同意 3 撤销 4技术驳回
      */
     private Integer status;
 
@@ -200,6 +200,16 @@ public class PublicRelease implements Serializable {
      */
     private String rejectName;
 
+    /**
+     * 协单助手
+     */
+    private String assistantAid;
+
+    /**
+     * 协单助手名称
+     */
+    private String assistantName;
+
     private static final long serialVersionUID = 1L;
 
     public Integer getId() {
@@ -513,4 +523,20 @@ public class PublicRelease implements Serializable {
     public void setRejectName(String rejectName) {
         this.rejectName = rejectName;
     }
+
+    public String getAssistantAid() {
+        return assistantAid;
+    }
+
+    public void setAssistantAid(String assistantAid) {
+        this.assistantAid = assistantAid;
+    }
+
+    public String getAssistantName() {
+        return assistantName;
+    }
+
+    public void setAssistantName(String assistantName) {
+        this.assistantName = assistantName;
+    }
 }

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

@@ -9,6 +9,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.goafanti.common.bo.Error;
 import com.goafanti.common.error.BusinessException;
 import com.goafanti.weChat.bo.*;
 import org.apache.commons.beanutils.BeanUtils;
@@ -320,4 +321,40 @@ public class AdminReleaseApiController extends CertifyApiController{
 		return res;
 	}
 
+	/**
+	 * 新增协单助手
+	 * @param id 公出编号
+	 * @param aid 协单助手编号
+	 * @return
+	 */
+	@RequestMapping(value = "/addAssistant",method = RequestMethod.POST)
+	public Result addAssistant (Integer id,String aid){
+		Result res =new Result();
+		if (id==null||aid==null){
+			res.getError().add(new Error(ErrorConstants.PARAM_EMPTY_ERROR,"公出编号与人员编号"));
+			return res;
+		}
+		res.data(publicReleaseService.addAssistant(id,aid));
+		return res;
+	}
+
+	/**
+	 * 新增协单助手
+	 * @param id 公出编号
+	 * @param aid 协单助手编号
+	 * @return
+	 */
+	@RequestMapping(value = "/deleteAssistant",method = RequestMethod.POST)
+	public Result deleteAssistant (Integer id,String aid){
+		Result res =new Result();
+		if (id==null||aid==null){
+			res.getError().add(new Error(ErrorConstants.PARAM_EMPTY_ERROR,"公出编号与人员编号"));
+			return res;
+		}
+		res.data(publicReleaseService.deleteAssistant(id,aid));
+		return res;
+	}
+
+
+
 }

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

@@ -51,4 +51,9 @@ public interface PublicReleaseService {
     Object getMyNewPublic();
 
 	int pushTechReject(Integer id, String remarks);
+
+    int addAssistant(Integer id,String aid);
+
+	int deleteAssistant(Integer id, String aid);
+
 }

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

@@ -2,10 +2,12 @@ package com.goafanti.weChat.service.impl;
 
 import java.text.ParseException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 import com.goafanti.common.dao.*;
 import com.goafanti.order.service.OrderService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -154,8 +156,9 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 	 * @param type 类型
 	 */
 	private void sendEmail(AdminListBo my, Admin a,Integer type) {
-		String title="外出申请提醒";
+		String title="";
 		if (type==0) title="外出申请驳回提醒";
+		else if (type==1) title="外出申请提醒";
 		else if (type==2) title="外出申请同意提醒";
 		if (SendEmailUtil.isEmail(a.getEmail())) {
 			EmailBo email=new EmailBo(title,a.getEmail() , my.getDepartmentName(), my.getName(),"详情请登录微信打卡小程序查看,谢谢!") ;
@@ -200,7 +203,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 
 		}else {
 			log.setStatus(PublicReleaseLog.states.cx.getCode());
-			List<PublicRelease> list = publicReleaseMapper.selectByMainId(in.getId());
+			List<PublicRelease> list = publicReleaseMapper.selectByMainId(in.getId(),3,null);
 			for (PublicRelease out : list) {
 				addpublicLog(out.getId(), PublicReleaseLog.states.sc.getCode(), "修改撤销协单");
 			}
@@ -253,7 +256,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			if (use.getAssist()==1){
 				pushPublicReleaseAssist(use,status,date);
 			}else if (use.getAssist()==0){
-				publicReleaseMapper.updateStatusByMainId(3,use.getId());
+				publicReleaseMapper.updateStatusByMainId(3,use.getId(),null,null);
 			}
 		}
 		str=str.append(remarks);
@@ -354,7 +357,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 	private void pushPublicReleaseAssist(PublicRelease use,Integer status,Date date) {
 		Integer useId=use.getId();
 		if (use.getAssistAid()!=null){
-			List<PublicRelease> list = publicReleaseMapper.selectByMainId(use.getId());
+			List<PublicRelease> list = publicReleaseMapper.selectByMainId(use.getId(),3,null);
 			String []ss=use.getAssistAid().split(",");
 			//数据库与传入比对,如果不存在就标记撤销 ,如果存在就修改成
 			for (PublicRelease out : list) {
@@ -653,4 +656,126 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 		return list;
 	}
 
+	@Override
+	public int addAssistant(Integer id,String aid) {
+		PublicRelease p = publicReleaseMapper.selectByPrimaryKey(id);
+		List<String> list=new ArrayList<>();
+		if (p.getAssistantAid()!=null){
+			list =Arrays.asList(p.getAssistantAid().split(","));
+			if (list.contains(aid)){
+				throw new BusinessException("人员已经存在");
+			}
+		}
+		String sname = pushAssistant(aid, list,0);
+		String said =String.join(",",list);
+		addAssistantPublicRelease(p,aid);
+		return updateAssistant(p, said, sname);
+	}
+
+	private void addAssistantPublicRelease(PublicRelease p, String aid) {
+		PublicRelease newP= new PublicRelease();
+		BeanUtils.copyProperties(p,newP);
+		newP.setId(null);
+		newP.setAid(aid);
+		newP.setType(4);
+		publicReleaseMapper.insertSelective(newP);
+		addpublicLog(newP.getId(),PublicReleaseLog.states.fq.getCode(),"发起技术协助。");
+		addWeChatNotice( aid,1,"发起技术协助。",newP.getId());
+	}
+
+	/**
+	 *
+	 * @param aid 接受者
+	 * @param type 状态 0驳回 1发起 2同意 3撤销
+	 * @param str 备注
+	 * @param prid 公出编号
+	 */
+	private void addWeChatNotice(String aid,Integer type,String str,Integer prid){
+		Admin recipient = adminMapper.selectByPrimaryKey(aid);
+		addWeChatNotice(  recipient, type, str, prid);
+	}
+
+	/**
+	 *
+	 * @param recipient 接受者
+	 * @param type 状态 0驳回 1发起 2同意
+	 * @param str
+	 */
+	private Integer addWeChatNotice(Admin recipient,Integer type,String str,Integer prid){
+			AdminListBo my = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
+			String openid=recipient.getOpenId();
+			str=new StringBuffer("[").append(my.getName()).append("]").append(str).toString();
+			sendNoticeAndSoucket(recipient.getId(),NoticeStatus.PUBLIC_RELEASE_START.getCode(),str);
+			if (type==0||type==2){
+				if (openid!=null) {
+					Integer res= weChatUtils.addNotice(openid, type,prid,new Date(),my.getName(),str);
+					return res;
+				}else {
+					sendEmail(my, recipient,type);
+				}
+			}
+
+			return 0;
+	}
+
+	private int updateAssistant(PublicRelease p, String said, String sname) {
+		PublicRelease newPr=new PublicRelease();
+		newPr.setId(p.getId());
+		newPr.setAssistantAid(said);
+		newPr.setAssistantName(sname);
+		if (p.getMainId()!=null){
+			PublicRelease mianPr=new PublicRelease();
+			mianPr.setId(p.getMainId());
+			mianPr.setAssistantAid(said);
+			mianPr.setAssistantName(sname);
+			publicReleaseMapper.updateByPrimaryKeySelective(mianPr);
+		}
+		return publicReleaseMapper.updateByPrimaryKeySelective(newPr);
+	}
+
+	/**
+	 *
+	 * @param aid  元素
+	 * @param list 集合
+	 * @param type 0新增 1删除
+	 * @return
+	 */
+	private String pushAssistant(String aid, List<String> list,Integer type) {
+		StringBuffer sb=new StringBuffer();
+		if(type==0){
+			list.add(aid);
+		}else if (type==1){
+			list=list.stream().filter(s -> !s.equals(aid)).collect(Collectors.toList());
+		}
+		for (String s : list) {
+			sb.append(adminMapper.selectByPrimaryKey(s).getName());
+		}
+		return sb.toString();
+	}
+
+
+
+	@Override
+	public int deleteAssistant(Integer id, String aid) {
+		PublicRelease p = publicReleaseMapper.selectByPrimaryKey(id);
+		List<String> list=Arrays.asList(p.getAssistantAid().split(","));
+		if (!list.contains(aid)){
+			throw new BusinessException("人员不存在");
+		}
+		String sname = pushAssistant(aid, list,1);
+		String said =String.join(",",list);
+		deleteAssistantPulicRelease(p,aid);
+		return updateAssistant(p, said, sname);
+	}
+
+	private void deleteAssistantPulicRelease(PublicRelease p, String aid) {
+		publicReleaseMapper.updateStatusByMainId(3,4,p.getMainId(),aid);
+		List<PublicRelease> list = publicReleaseMapper.selectByMainId(p.getMainId(), 4, aid);
+		for (PublicRelease pr : list) {
+			addpublicLog(pr.getId(),PublicReleaseLog.states.cx.getCode(),"撤销技术协助。");
+		}
+		addWeChatNotice( aid,3,"撤销技术协助。",p.getId());
+	}
+
+
 }

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

@@ -1,12 +1,12 @@
 dev.name=local
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.url=jdbc\:mysql://localhost:3306/aft20220318?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#jdbc.username=root
-#jdbc.password=123456
-jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 jdbc.username=root
-jdbc.password=aftdev
+jdbc.password=123456
+#jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#jdbc.username=root
+#jdbc.password=aftdev
 jdbc.validationQuery=SELECT 'x'
 jdbc.initialSize=3
 jdbc.maxActive=20