Browse Source

添加发送到企业微信的退回消息

lwx_dev
erdanergou 2 years ago
parent
commit
67223d5368
  1. 2
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  2. 3
      src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml
  3. 5
      src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java
  4. 6
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java
  5. 23
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  6. 68
      src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java
  7. 35
      src/test/java/com/dreamchaser/depository_manage/SomeTest.java

2
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

@ -1353,6 +1353,8 @@ public class DepositoryRecordController {
}
}
//
// 用于判断该记录是否正在运行
@PostMapping("/judgeApplicationOutRecordStatus")
public RestResponse judgeApplicationOutRecordStatus(@RequestBody Map<String, Object> map) {

3
src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml

@ -92,6 +92,7 @@
<!-- 插入出库记录-->
<resultMap id="applicationOutRecord" type="com.dreamchaser.depository_manage.entity.ApplicationOutRecord">
<id property="id" column="aorid" jdbcType="BIGINT"/>
<result column="aormid" property="aormid" jdbcType="BIGINT"/>
<result column="mid" property="mid" jdbcType="BIGINT"/>
<result column="mname" property="mname" jdbcType="VARCHAR"/>
<result column="depositoryId" property="depositoryId" jdbcType="BIGINT"/>
@ -188,7 +189,7 @@
</sql>
<sql id="ApplicationOutRecordInfo">
aorid,mid,mname,depositoryId,dname,applicantId,applicantTime,applyRemark,aorcode,aorpirce,aorquantity,departmenthead,departmentheadPass,departmentHeadTime,departmentheadMessage,
aorid,aormid,mid,mname,depositoryId,dname,applicantId,applicantTime,applyRemark,aorcode,aorpirce,aorquantity,departmenthead,departmentheadPass,departmentHeadTime,departmentheadMessage,
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,mcode,placeId,pass,aormUnit,aorconstructionunitid,aoradminorgid,cuname,
cuintroduce,cuaddress,outTime,abstract,outType,munit,mprice,editUser,mbrand,mversion,flagForOpenDepository,createUid,flagForAgency,balancePoster,balancePosterTime,balancePosterPass,balancePosterMessage,outTypeName
</sql>

5
src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java

@ -9,6 +9,11 @@ public class ApplicationOutRecord {
*/
private Long id;
/**
* 当前子单id
*/
private Long aormid;
/**
* 物料id
*/

6
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java

@ -15,6 +15,11 @@ public class ApplicationOutRecordP {
*/
private Long id;
/**
* 当前子单id
*/
private Long aormid;
/**
* 物料id
*/
@ -301,6 +306,7 @@ public class ApplicationOutRecordP {
public ApplicationOutRecordP(ApplicationOutRecord aor) {
this.id = aor.getId();
this.aormid = aor.getAormid();
this.mid = aor.getMid();
this.mname = aor.getMname();
this.depositoryId = aor.getDepositoryId();

23
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -332,6 +332,29 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return integer;
}
/**
* 用于退回出库子单
* @param id 退回的子单id
* @param userByPort 操作人
* @return
*/
public Integer refundedApplicationOutRecordMinById(Long id,UserByPort userByPort){
// 获取当前要退回的子单信息
ApplicationOutRecordMin recordMin = depositoryRecordMapper.findApplicationOutMinById(id);
// 获取主单信息
ApplicationOutRecord record = depositoryRecordMapper.findApplicationOutRecordPById(recordMin.getParentId());
Integer trueOut = recordMin.getTrueOut();
if(trueOut > 0){
// 如果已经开始出库,则不允许退回
return -1;
}
log.info(userByPort.getName()+"_"+userByPort.getNumber()+"删除了子单,数据为:"+JSONObject.toJSONString(recordMin));
return depositoryRecordMapper.deleteApplicationOutRecordMinById(id);
}
@Transactional(rollbackFor = Exception.class)
@Override
public Integer deleteApplicationOutRecordByIds(List<Long> list, UserByPort userByPort) {

68
src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java

@ -1025,7 +1025,7 @@ public class QyWxOperationService {
/**
* 获取要转移的订单
*/
List<Long> minIds = (List<Long>) map.get("minIds");
List<Long> minIds = ObjectFormatUtil.objToList(map.get("minIds"),Long.class);
MessageByMarkDown markDown = new MessageByMarkDown();
//设置消息接收者
@ -1320,6 +1320,72 @@ public class QyWxOperationService {
}
/**
* 向当前出库子单的申请人发送被退回通知
*/
public JSONObject sendNotificationToApplicantForRefunded(UserByPort userToken,ApplicationOutRecordMin recordMin,Long applicantUserId,String userAgent){
// 获取消息模板
MessageByMarkDown markDown = new MessageByMarkDown();
UserByPort userByIdForNoPack = userService.findUserByIdForNoPack(applicantUserId);
String workwechatForApplicant = userByIdForNoPack.getWorkwechat();
if(workwechatForApplicant == null || "".equals(workwechatForApplicant)){
workwechatForApplicant = userByIdForNoPack.getWechat();
}
// 设置消息接收者为所有人
markDown.setTouser(workwechatForApplicant);
// 设置消息类型,此时固定为:markdown
markDown.setMsgtype("markdown");
// 设置企业应用的id
markDown.setAgentid(QyWxConfig.AgentId);
StringBuilder content = new StringBuilder();
// 获取当前出库的库存信息
Inventory inventory = materialMapper.findInventoryById(recordMin.getMid());
String mname = inventory.getMname();
String version = inventory.getVersion() == null ?"":inventory.getVersion();
String code = inventory.getCode();
String unit = inventory.getUnit();
if("-1".equals(unit)){
unit = inventory.getUnit();
}
content.append("### `退回通知` ###%n");
content.append(">### 操作人员:").append(userToken.getMaindeparmentname()).append("_").append(userToken.getName()).append("%n");
content.append(">### <font color='warning'>").append("退回时间:").append(DateUtil.TimeStampToDateTime(System.currentTimeMillis())).append("</font>").append("%n");
content.append(">### 被退回数据:").append("%n");
content.append(">>#### 物料编码:").append(code).append("%n");
content.append(">>#### 物料名称:").append(mname).append("%n");
content.append(">>#### 物料型号:").append(version).append("%n");
content.append(">>#### 申请数量:").append(ObjectFormatUtil.divide(recordMin.getQuantity(),100.0,2)).append("%n");
content.append(">>#### 申请单位:").append(unit).append("%n");
// 设置content
Map<String, String> markdown = new HashMap<>();
markdown.put("content", content.toString());
markDown.setMarkdown(markdown);
String jsonString = JSONObject.toJSONString(markDown);
jsonString = String.format(jsonString);
System.out.println(jsonString);
// 3.获取请求的url
// 获取access_token:根据企业id和应用密钥获取access_token,并拼接请求url
String accessToken = QyWxConfig.GetQYWXToken(userAgent);
String url = QyWxConfig.sendMessage_url.replace("ACCESS_TOKEN", accessToken);
// 4.调用接口,发送消息
String s1 = HttpUtils.doPost(url, jsonString);
// 将返回结果转为json对象
JSONObject jsonObject = JSON.parseObject(s1);
log.info("抄送出库子单退回数据" + s1);
// 返回
return jsonObject;
}
/**
* 用于撤回发送给企业微信的消息
*

35
src/test/java/com/dreamchaser/depository_manage/SomeTest.java

@ -0,0 +1,35 @@
package com.dreamchaser.depository_manage;
import com.dreamchaser.depository_manage.depository_mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.entity.ApplicationOutRecordMin;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordMinP;
import com.dreamchaser.depository_manage.service.DepositoryRecordService;
import com.dreamchaser.depository_manage.service.UserService;
import com.dreamchaser.depository_manage.service.impl.QyWxOperationService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SomeTest {
@Autowired
private QyWxOperationService qyWxOperationService;
@Autowired
private DepositoryRecordMapper depositoryRecordMapper;
@Autowired
private UserService userService;
@Test
public void sendQyWxMsg(){
UserByPort userById = userService.findUserById(6235L);
ApplicationOutRecordMin applicationOutMinById = depositoryRecordMapper.findApplicationOutMinById(1002L);
qyWxOperationService.sendNotificationToApplicantForRefunded(userById,applicationOutMinById,6235L,"555375c83c6f6cabc7f83f73d0270022");
}
}
Loading…
Cancel
Save