From 51aa6b4f8a3d199b3e5f93f7b5513a040aecfc10 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 14 四月 2022 15:00:22 +0800
Subject: [PATCH] 优化代码

---
 service-job/src/main/java/com/java110/job/adapt/payment/notice/MachinePaymentNoticeAdapt.java |  251 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 212 insertions(+), 39 deletions(-)

diff --git a/service-job/src/main/java/com/java110/job/adapt/payment/notice/MachinePaymentNoticeAdapt.java b/service-job/src/main/java/com/java110/job/adapt/payment/notice/MachinePaymentNoticeAdapt.java
old mode 100644
new mode 100755
index 3265815..b48ad19
--- a/service-job/src/main/java/com/java110/job/adapt/payment/notice/MachinePaymentNoticeAdapt.java
+++ b/service-job/src/main/java/com/java110/job/adapt/payment/notice/MachinePaymentNoticeAdapt.java
@@ -36,21 +36,30 @@
 import com.java110.intf.order.IPrivilegeInnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
-import com.java110.intf.user.*;
+import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.intf.user.IStaffAppAuthInnerServiceSMO;
 import com.java110.job.adapt.DatabusAdaptImpl;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -133,12 +142,26 @@
                 businessPayFeeDetails = (JSONArray) bObj;
             }
         } else {
-            return;
+            if (data instanceof JSONObject) {
+                businessPayFeeDetails = new JSONArray();
+                businessPayFeeDetails.add(data);
+            }
         }
         for (int bPayFeeDetailIndex = 0; bPayFeeDetailIndex < businessPayFeeDetails.size(); bPayFeeDetailIndex++) {
             JSONObject businessPayFeeDetail = businessPayFeeDetails.getJSONObject(bPayFeeDetailIndex);
             doSendPayFeeDetail(business, businessPayFeeDetail);
         }
+    }
+
+    private String subDay(String date) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date dt = sdf.parse(date);
+        Calendar rightNow = Calendar.getInstance();
+        rightNow.setTime(dt);
+        rightNow.add(Calendar.DAY_OF_MONTH, -1);
+        Date dt1 = rightNow.getTime();
+        String reStr = sdf.format(dt1);
+        return reStr;
     }
 
     private void doSendPayFeeDetail(Business business, JSONObject businessPayFeeDetail) {
@@ -152,7 +175,6 @@
         feeDto.setFeeId(payFeeDetailPo.getFeeId());
         feeDto.setCommunityId(payFeeDetailPo.getCommunityId());
         List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-
         Assert.listOnlyOne(feeDtos, "鏈煡璇㈠埌璐圭敤淇℃伅");
         //鑾峰彇璐圭敤绫诲瀷
         String feeTypeCdName = feeDtos.get(0).getFeeTypeCdName();
@@ -162,19 +184,58 @@
         String startTime = DateUtil.dateTimeToDate(payFeeDetailPo.getStartTime());
         //鑾峰彇鐢ㄦ埛缂磋垂鍒版湡鏃堕棿
         String endTime = DateUtil.dateTimeToDate(payFeeDetailPo.getEndTime());
+        try {
+            endTime = subDay(endTime);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
         //鑾峰彇鐢ㄦ埛缂磋垂閲戦
         String receivedAmount = payFeeDetailPo.getReceivedAmount();
+        //鑾峰彇璐圭敤绫诲瀷
+        String feeTypeCd = feeDtos.get(0).getFeeTypeCd();
+        //鑾峰彇浠樿垂瀵硅薄绫诲瀷
+        String payerObjType = feeDtos.get(0).getPayerObjType();
+        //鑾峰彇鐘舵��
+        String state = payFeeDetailPo.getState();
+        //杞︾墝鍙�
+        String carNum = "";
+        //鍋滆溅鍦�
+        String num = "";
+        //杞︿綅
+        String spaceNum = "";
+        if (!StringUtil.isEmpty(payerObjType) && payerObjType.equals("6666")) {
+            String[] split = payerObjName.split("-");
+            //鑾峰彇杞︾墝
+            carNum = split[0];
+            //鑾峰彇鍋滆溅鍦�
+            num = split[1];
+            //鑾峰彇杞︿綅
+            spaceNum = split[2];
+        }
         //鑾峰彇绀惧尯鍚嶇О
         String name = communityDtos.get(0).getName();
         JSONObject paramIn = new JSONObject();
-        paramIn.put("payFeeRoom", name + payerObjName);
+        paramIn.put("payFeeRoom", name + "-" + payerObjName);
         paramIn.put("feeTypeCdName", feeTypeCdName);
         paramIn.put("payFeeTime", startTime + "鑷�" + endTime);
         paramIn.put("receivedAmount", receivedAmount);
         paramIn.put("startTime", startTime);
         paramIn.put("endTime", endTime);
+        paramIn.put("payerObjType", payerObjType);
+        paramIn.put("carNum", carNum);
+        paramIn.put("num", num);
+        paramIn.put("spaceNum", spaceNum);
+        paramIn.put("state", state);
+        //缁欎笟涓绘帹閫佹秷鎭�
         sendMessage(paramIn, communityDtos.get(0), payFeeDetailPo);
-        publishMsg(paramIn, communityDtos.get(0), payFeeDetailPo);
+        if (!StringUtil.isEmpty(state) && !state.equals("1300") && feeTypeCd.equals("888800010012")) {
+            //缁欏鐞嗘姤淇畬缁撳崟鐨勭淮淇笀鍌呮帹閫佹秷鎭�
+            sendMsg(paramIn, communityDtos.get(0), payFeeDetailPo);
+        }
+        if (!StringUtil.isEmpty(state) && !state.equals("1300")) {
+            //缁欏憳宸ユ帹閫佹秷鎭�
+            publishMsg(paramIn, communityDtos.get(0), payFeeDetailPo);
+        }
     }
 
     /**
@@ -222,34 +283,127 @@
         basePrivilegeDto.setResource("/wechatNotification");
         basePrivilegeDto.setStoreId(feeDtos.get(0).getIncomeObjId());
         List<UserDto> userDtos = privilegeInnerServiceSMO.queryPrivilegeUsers(basePrivilegeDto);
-        String url = sendMsgUrl + accessToken;
-        for (UserDto userDto : userDtos) {
-            //鏍规嵁 userId 鏌ヨ鍒皁penId
-            try {
-                StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto();
-                staffAppAuthDto.setStaffId(userDto.getUserId());
-                staffAppAuthDto.setAppType("WECHAT");
-                List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto);
-                String openId = staffAppAuthDtos.get(0).getOpenId();
-                Data data = new Data();
-                PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
-                templateMessage.setTemplate_id(templateId);
-                templateMessage.setTouser(openId);
-                data.setFirst(new Content("鏈缂磋垂宸插埌璐�"));
-                data.setKeyword1(new Content(paramIn.getString("payFeeRoom")));
-                data.setKeyword2(new Content(paramIn.getString("feeTypeCdName")));
-                data.setKeyword3(new Content(paramIn.getString("payFeeTime")));
-                data.setKeyword4(new Content(paramIn.getString("receivedAmount") + "鍏�"));
-                data.setRemark(new Content("鎰熻阿鎮ㄧ殑浣跨敤,濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
-                templateMessage.setData(data);
-                String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL");
-                templateMessage.setUrl(wechatUrl);
-                logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));
-                ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class);
-                logger.info("寰俊妯℃澘杩斿洖鍐呭:{}", responseEntity);
-            } catch (Exception e) {
-                logger.error("鍙戦�佺即璐逛俊鎭け璐�", e);
+        String sendTemplate = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.SEND_TEMPLATE_URL);
+        if (StringUtil.isEmpty(sendTemplate)) {
+            sendTemplate = sendMsgUrl;
+        }
+        String url = sendTemplate + accessToken;
+        //鑾峰彇浠樿垂瀵硅薄绫诲瀷
+        String payerObjType = paramIn.getString("payerObjType");
+        if (userDtos != null && userDtos.size() > 0) {
+            for (UserDto userDto : userDtos) {
+                //鏍规嵁 userId 鏌ヨ鍒皁penId
+                try {
+                    StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto();
+                    staffAppAuthDto.setStaffId(userDto.getUserId());
+                    staffAppAuthDto.setAppType("WECHAT");
+                    List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto);
+                    if (staffAppAuthDtos == null || staffAppAuthDtos.size() < 1) {
+                        continue;
+                    }
+                    String openId = staffAppAuthDtos.get(0).getOpenId();
+                    Data data = new Data();
+                    PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
+                    templateMessage.setTemplate_id(templateId);
+                    templateMessage.setTouser(openId);
+                    data.setFirst(new Content("鏈缂磋垂宸插埌璐�"));
+                    if (payerObjType.equals("3333")) {  //鎴垮眿
+                        data.setKeyword1(new Content(paramIn.getString("payFeeRoom")));
+                        data.setKeyword2(new Content(paramIn.getString("feeTypeCdName")));
+                    } else {  //杞﹁締
+                        data.setKeyword1(new Content(communityDto.getName() + "-" + paramIn.getString("num") + "-" + paramIn.getString("spaceNum")));
+                        data.setKeyword2(new Content(paramIn.getString("feeTypeCdName") + "-" + paramIn.getString("carNum")));
+                    }
+                    data.setKeyword3(new Content(paramIn.getString("payFeeTime")));
+                    data.setKeyword4(new Content(paramIn.getString("receivedAmount") + "鍏�"));
+                    data.setRemark(new Content("鎰熻阿鎮ㄧ殑浣跨敤,濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
+                    templateMessage.setData(data);
+                    //鑾峰彇鍛樺伐鍏紬鍙峰湴鍧�
+                    String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL");
+                    templateMessage.setUrl(wechatUrl);
+                    logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));
+                    ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class);
+                    logger.info("寰俊妯℃澘杩斿洖鍐呭:{}", responseEntity);
+                } catch (Exception e) {
+                    logger.error("鍙戦�佺即璐逛俊鎭け璐�", e);
+                }
             }
+        }
+    }
+
+    /**
+     * 缁欏畬缁撹鍗曠殑缁翠慨甯堝倕鎺ㄩ�佷俊鎭�
+     *
+     * @param paramIn
+     * @param communityDto
+     * @param payFeeDetailPo
+     */
+    private void sendMsg(JSONObject paramIn, CommunityDto communityDto, PayFeeDetailPo payFeeDetailPo) {
+        //鏌ヨ鍏紬鍙烽厤缃�
+        SmallWeChatDto smallWeChatDto = new SmallWeChatDto();
+        smallWeChatDto.setWeChatType("1100");
+        smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY);
+        smallWeChatDto.setObjId(communityDto.getCommunityId());
+        List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto);
+        if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) {
+            logger.info("鏈厤缃井淇″叕浼楀彿淇℃伅,瀹氭椂浠诲姟鎵ц缁撴潫");
+            return;
+        }
+        SmallWeChatDto weChatDto = smallWeChatDtos.get(0);
+        SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto();
+        smallWechatAttrDto.setCommunityId(communityDto.getCommunityId());
+        smallWechatAttrDto.setWechatId(weChatDto.getWeChatId());
+        smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_SUCCESS_TEMPLATE);
+        List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto);
+        if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) {
+            logger.info("鏈厤缃井淇″叕浼楀彿娑堟伅妯℃澘");
+            return;
+        }
+        String templateId = smallWechatAttrDtos.get(0).getValue();
+        String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret());
+        if (StringUtil.isEmpty(accessToken)) {
+            logger.info("鎺ㄩ�佸井淇℃ā鏉�,鑾峰彇accessToken澶辫触:{}", accessToken);
+            return;
+        }
+        FeeDto feeDto = new FeeDto();
+        feeDto.setFeeId(payFeeDetailPo.getFeeId());
+        feeDto.setCommunityId(payFeeDetailPo.getCommunityId());
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+        Assert.listOnlyOne(feeDtos, "璐圭敤涓嶅瓨鍦�");
+        //鑾峰彇鍒涘缓鐢ㄦ埛,鍗冲鐞嗙粨鍗曠殑缁翠慨缁翠慨甯堝倕
+        String userId = feeDtos.get(0).getUserId();
+        String sendTemplate = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.SEND_TEMPLATE_URL);
+        if (StringUtil.isEmpty(sendTemplate)) {
+            sendTemplate = sendMsgUrl;
+        }
+        String url = sendTemplate + accessToken;
+        //鏍规嵁 userId 鏌ヨ鍒皁penId
+        try {
+            StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto();
+            staffAppAuthDto.setStaffId(userId);
+            staffAppAuthDto.setAppType("WECHAT");
+            List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto);
+            Assert.listOnlyOne(staffAppAuthDtos, "鍛樺伐鏈璇�");
+            String openId = staffAppAuthDtos.get(0).getOpenId();
+            Data data = new Data();
+            PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
+            templateMessage.setTemplate_id(templateId);
+            templateMessage.setTouser(openId);
+            data.setFirst(new Content("涓氫富宸茬即绾崇淮淇垂锛屼俊鎭涓嬶細"));
+            data.setKeyword1(new Content(paramIn.getString("payFeeRoom")));
+            data.setKeyword2(new Content(paramIn.getString("feeTypeCdName")));
+            data.setKeyword3(new Content(paramIn.getString("payFeeTime")));
+            data.setKeyword4(new Content(paramIn.getString("receivedAmount") + "鍏�"));
+            data.setRemark(new Content("璇蜂笌瀹㈡湇绠″鏍稿疄璐圭敤"));
+            templateMessage.setData(data);
+            //鑾峰彇鍛樺伐鍏紬鍙峰湴鍧�
+            String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL");
+            templateMessage.setUrl(wechatUrl);
+            logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));
+            ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class);
+            logger.info("寰俊妯℃澘杩斿洖鍐呭:{}", responseEntity);
+        } catch (Exception e) {
+            logger.error("鍙戦�佺即璐逛俊鎭け璐�", e);
         }
     }
 
@@ -292,7 +446,7 @@
         feeDto.setCommunityId(payFeeDetailPo.getCommunityId());
         List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
         Assert.listOnlyOne(feeDtos, "璐圭敤涓嶅瓨鍦�");
-        //鏀粯鎴块棿id
+        //鏀粯鎴块棿id(鏀粯杞﹁締id)
         String payerObjId = feeDtos.get(0).getPayerObjId();
         //鏀粯绫诲瀷(鎴垮眿銆佽溅杈�)
         String payerObjType = feeDtos.get(0).getPayerObjType();
@@ -306,8 +460,9 @@
             ownerId = ownerRoomRelDtos.get(0).getOwnerId();
         } else if (payerObjType.equals("6666")) {
             OwnerCarDto ownerCarDto = new OwnerCarDto();
-            ownerCarDto.setPsId(payerObjId);
+            ownerCarDto.setCarId(payerObjId);
             List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMO.queryOwnerCars(ownerCarDto);
+            Assert.listOnlyOne(ownerCarDtos, "鏌ヨ杞﹁締鎵�灞炰笟涓讳俊鎭敊璇紒");
             //鍙栧緱涓氫富id
             ownerId = ownerCarDtos.get(0).getOwnerId();
         }
@@ -317,6 +472,7 @@
         ownerDto.setOwnerTypeCd("1001");
         //鏌ヨ涓氫富
         List<OwnerDto> ownerDtos = ownerInnerServiceSMO.queryOwners(ownerDto);
+        Assert.listOnlyOne(ownerDtos, "鏌ヨ涓氫富淇℃伅閿欒锛�");
         //鑾峰緱鎴愬憳id
         String memberId = ownerDtos.get(0).getMemberId();
         OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
@@ -331,13 +487,30 @@
             PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
             templateMessage.setTemplate_id(templateId);
             templateMessage.setTouser(openId);
-            data.setFirst(new Content("鏈缂磋垂宸插埌璐�"));
-            data.setKeyword1(new Content(paramIn.getString("payFeeRoom")));
-            data.setKeyword2(new Content(paramIn.getString("feeTypeCdName")));
+            if (!StringUtil.isEmpty(paramIn.getString("state")) && paramIn.getString("state").equals("1300")) {
+                data.setFirst(new Content("鏈閫�璐瑰凡鍒拌处"));
+            } else {
+                data.setFirst(new Content("鏈缂磋垂宸插埌璐�"));
+            }
+            if (payerObjType.equals("3333")) {  //鎴垮眿
+                data.setKeyword1(new Content(paramIn.getString("payFeeRoom")));
+                data.setKeyword2(new Content(paramIn.getString("feeTypeCdName")));
+            } else {  //杞﹁締
+                data.setKeyword1(new Content(communityDto.getName() + "-" + paramIn.getString("num") + "-" + paramIn.getString("spaceNum")));
+                data.setKeyword2(new Content(paramIn.getString("feeTypeCdName") + "-" + paramIn.getString("carNum")));
+            }
             data.setKeyword3(new Content(paramIn.getString("payFeeTime")));
-            data.setKeyword4(new Content(paramIn.getString("receivedAmount") + "鍏�"));
+            if (!StringUtil.isEmpty(paramIn.getString("state")) && paramIn.getString("state").equals("1300")) {
+                //鑾峰彇閫�璐归噾棰�
+                double receivedAmount = Double.parseDouble(paramIn.getString("receivedAmount"));
+                double money = receivedAmount * (-1.00);
+                data.setKeyword4(new Content("閫�璐�" + money + "鍏�"));
+            } else {
+                data.setKeyword4(new Content(paramIn.getString("receivedAmount") + "鍏�"));
+            }
             data.setRemark(new Content("鎰熻阿鎮ㄧ殑浣跨敤,濡傛湁鐤戦棶璇疯仈绯荤浉鍏崇墿涓氫汉鍛�"));
             templateMessage.setData(data);
+            //鑾峰彇涓氫富鍏紬鍙峰湴鍧�
             String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL");
             templateMessage.setUrl(wechatUrl);
             logger.info("鍙戦�佹ā鏉挎秷鎭唴瀹�:{}", JSON.toJSONString(templateMessage));

--
Gitblit v1.8.0