From 67223d536855104c2334a5012d360146c9b67c98 Mon Sep 17 00:00:00 2001 From: erdanergou Date: Tue, 25 Jul 2023 10:22:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=91=E9=80=81=E5=88=B0?= =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1=E7=9A=84=E9=80=80=E5=9B=9E?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DepositoryRecordController.java | 2 + .../DepositoryRecordMapper.xml | 3 +- .../entity/ApplicationOutRecord.java | 5 ++ .../pojo/ApplicationOutRecordP.java | 6 ++ .../impl/DepositoryRecordServiceImpl.java | 23 +++++++ .../service/impl/QyWxOperationService.java | 68 ++++++++++++++++++- .../depository_manage/SomeTest.java | 35 ++++++++++ 7 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/dreamchaser/depository_manage/SomeTest.java diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java index 4bd96062..a3f95f3c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java @@ -1353,6 +1353,8 @@ public class DepositoryRecordController { } } + // + // 用于判断该记录是否正在运行 @PostMapping("/judgeApplicationOutRecordStatus") public RestResponse judgeApplicationOutRecordStatus(@RequestBody Map map) { diff --git a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml index 956ae930..a4913351 100644 --- a/src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/depository_mapper/DepositoryRecordMapper.xml @@ -92,6 +92,7 @@ + @@ -188,7 +189,7 @@ - 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 diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java b/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java index b70a501a..b9298eb5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java +++ b/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 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java b/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java index 37477959..f04594f2 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java +++ b/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(); diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index 75234667..513f4ca3 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/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 list, UserByPort userByPort) { diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java index cd8b629a..91a3ff7f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/QyWxOperationService.java @@ -1025,7 +1025,7 @@ public class QyWxOperationService { /** * 获取要转移的订单 */ - List minIds = (List) map.get("minIds"); + List 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(">### ").append("退回时间:").append(DateUtil.TimeStampToDateTime(System.currentTimeMillis())).append("").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 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; + + } + /** * 用于撤回发送给企业微信的消息 * diff --git a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java new file mode 100644 index 00000000..1c5a3bba --- /dev/null +++ b/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"); + + } +}