xinyb_
2022-02-17 6e94d52d0ce0c92c2169cdb19bc675ae08391a35
提交 | 用户 | age
d3ae0a 1 package com.yc.MaintenanceFee.controller;
X 2
3 import com.yc.MaintenanceFee.entiy.PayInfo;
4 import com.yc.MaintenanceFee.entiy.PayLog;
5 import com.yc.MaintenanceFee.entiy.Receipt;
6 import com.yc.MaintenanceFee.service.*;
7 import com.yc.MaintenanceFee.utils.BackMsg;
dff633 8 import com.yc.MaintenanceFee.utils.PayCallBackUtil;
35f116 9 import com.yc.entity.DataSourceEntity;
6e94d5 10 import com.yc.exception.ApplicationException;
35f116 11 import com.yc.multiData.MultiDataSource;
d3ae0a 12 import com.yc.multiData.SpObserver;
X 13 import com.yc.service.grid.GridServiceIfc;
74e060 14 import com.yc.service.impl.DBHelper;
d3ae0a 15 import com.yc.utils.SessionKey;
X 16 import org.apache.commons.lang3.StringUtils;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.web.bind.annotation.RequestMapping;
19 import org.springframework.web.bind.annotation.RequestMethod;
20 import org.springframework.web.bind.annotation.RestController;
dff633 21
d3ae0a 22 import javax.servlet.http.HttpServletRequest;
X 23 import javax.servlet.http.HttpServletResponse;
24 import javax.servlet.http.HttpSession;
25 import java.time.LocalDateTime;
26 import java.time.format.DateTimeFormatter;
27 import java.util.*;
28
29 /**
30  * 生成维护费界面。显示维护费单号和生成收款单
31  *
32  * @USER: xinyb_
33  * @DATE: 2021-11-10 17:40
34  */
35 @RestController
36 @RequestMapping("/Maintain")
37 public class MaintainController {
38     @Autowired
39     private PayInfoService payInfoService;
40
41     @Autowired
42     private PayLogService payLogService;
43
44     @Autowired
45     GridServiceIfc grid;
46
47     @Autowired
48     ReceiptService receiptService;
35f116 49     @Autowired
X 50     MaintainService maintainService;
d3ae0a 51
X 52     private static final String DBID = "_338";
53
54     /**
55      * 获取对应客户订单所有数据,用于页面显示
56      *
57      * @param request
58      * @return
59      */
60     @RequestMapping(value = "/Cost.do", method = RequestMethod.GET)
61     public BackMsg getCost(HttpServletRequest request) {
62         BackMsg msg = new BackMsg();
63         try {
64             HttpSession session = request.getSession();
65             SpObserver.setDBtoInstance(DBID);
66             //通过session携带dbId查询表得到相对应的客户编号
67             String dbId = (String) session.getAttribute(SessionKey.DATA_BASE_ID);
68             //根据cltCode查询所有维护费用数据
74e060 69             List<PayInfo> info = payInfoService.queryListByCltCode(dbId);
X 70             if (info != null && info.size() > 0) {
71                 List<String> doc = new ArrayList<>();
72                 for (PayInfo i : info) {
73                     doc.add(i.getDocCode());
74                 }
75                 msg.setCltCode(info.get(0).getCltCode());
76                 List<Map<String, Object>> d = receiptService.getReceiptStatus(String.join(",", doc));
77                 if (d != null && d.size() > 0) {
78                     for (PayInfo f : info) {
79                         for (Map<String, Object> m : d) {
80                             if (f.getDocCode().equals(DBHelper.getValue(m,"soDocCode"))) {
6e94d5 81                                 f.setDocStatus(DBHelper.getValueInt(m, "docStatus"));
74e060 82                                 f.setSkCode(DBHelper.getValue(m,"docCode"));
d3ae0a 83                             }
X 84                         }
85                     }
86                 }
74e060 87                 msg.setOk(info);
X 88             } else {
89                 msg.setCltCode(payInfoService.queryCltCodeByDbId(dbId));
90                 msg.setOk(null);
d3ae0a 91             }
X 92         } catch (Exception e) {
93             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
94         } finally {
95             SpObserver.setDBtoInstance();
96         }
97         return msg;
98     }
99
100     /**
101      * 生成一张收款单信息
102      *
103      * @param whCode
104      * @param request
105      * @param response
106      * @return
107      */
108     @RequestMapping("/skCreate.do")
dff633 109     public BackMsg getSKCode(String whCode, String cltCode, HttpServletRequest request, HttpServletResponse response) {
d3ae0a 110         BackMsg msg = new BackMsg();
X 111         try {
112             if (StringUtils.isBlank(whCode)) {
113                 msg.setError("维护费单号不能为空!");
114                 return msg;
115             }
dff633 116
X 117             Integer feeId = PayCallBackUtil.chargeMaintenanceFee(request);
118             DataSourceEntity data = MultiDataSource.getDataSourceMap(feeId + "");//获取对应数据源设置的维护费账户
6e94d5 119             if(data.getMaintenanceFeeToDbId()==null){
X 120                 msg.setError("【收取维护费所属公司】不能为空,请在【快捷->维护系统设置】中录入");
d3ae0a 121                 return msg;
X 122             }
35f116 123             SpObserver.setDBtoInstance(DBID);
dff633 124             String skCode = maintainService.createSKCode(whCode, data.getMaintenanceFeeAcctCode());
35f116 125             if (!StringUtils.isBlank(skCode)) {
d3ae0a 126                 try {
X 127                     //生成日志
128                     PayLog log = new PayLog();
129                     log.setRefDoccode(skCode);
130                     log.setMerchantID(cltCode);
35f116 131                     log.setRefformid(150101);
X 132                     log.setRefformtype(496);
d3ae0a 133                     log.setInsertTime(new Date());
74e060 134                     log.setBatchNo(0);
d3ae0a 135                     log.setStatus("0");
X 136                     log.setMerchantRemarks("维护费生成信息。生成了收款单:" + skCode + ",未支付。");
137                     //使用自定义的格式
138                     DateTimeFormatter df = DateTimeFormatter.ofPattern("y/M/d-H:m:s");
139                     //要格式化的时间日期对象,只能用LocalDateTime。只涉及到日期也可以用LocalDate类,只涉及时间也可以用LocalTime类
140                     LocalDateTime ldt = LocalDateTime.now();
141                     String[] d = df.format(ldt).split("-");
142                     log.setHostDate(d[0]);
143                     log.setHostTime(d[1]);
144                     log.setNotifyType((String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
145                     payLogService.saveOrUpdatePayLog(log);
146                 } catch (Exception e) {
147                     skCode = skCode;
148                 }
149                 msg.setOk(skCode);//返回收款单号
150             } else {
35f116 151                 msg.setError("收款单创建失败:" + skCode);
d3ae0a 152             }
X 153         } catch (Exception e) {
154             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
155         } finally {
156             SpObserver.setDBtoInstance();
157         }
158         return msg;
159     }
160
161     /**
162      * 查询收款单信息
163      *
164      * @param skCode
165      * @param request
166      * @return
167      */
168     @RequestMapping("/skSelect.do")
169     public BackMsg getSKSelect(String skCode, HttpServletRequest request) {
170         BackMsg msg = new BackMsg();
171         try {
172             if (StringUtils.isBlank(skCode)) {
173                 msg.setError("收款单单号不能为空!");
174                 return msg;
175             }
176             SpObserver.setDBtoInstance(DBID);
177             Receipt receipt = receiptService.QueryReceipt(skCode, 0);
74e060 178             if (receipt != null && !StringUtils.isBlank(receipt.getDocCode())) {
X 179                 String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
4257cf 180                 //获取收款人
X 181                 receipt.setPayee(PayCallBackUtil.getReceivingCompany(dbId));
6e94d5 182                 if (receipt.getIsPaid() == 1) {
X 183                     msg.setOkEd(receipt,"已支付成功,不能重复支付。");
184                     return msg;
185                 }
186                 if (receipt.getDocStatus() == -200) {
187                     msg.setOkEd(receipt,"订单已被取消,支付失败。");
188                     return msg;
189                 }
190                 if (receipt.getDocStatus() != 0) {
191                     msg.setOkEd(receipt,"订单不是待支付状态,支付失败。");
192                     return msg;
193                 }
4257cf 194             }
d3ae0a 195             msg.setOk(receipt);
X 196         } catch (Exception e) {
197             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
198         } finally {
199             SpObserver.setDBtoInstance();
200         }
201         return msg;
202     }
203
204     /**
205      * 取消支付,关闭收款单
206      *
207      * @param skCode
208      * @param request
209      * @return
210      */
211 //    @RequestMapping("/skClose.do")
212 //    public BackMsg delSKCode(String skCode, HttpServletRequest request) {
213 //        BackMsg msg = new BackMsg();
214 //        try {
215 //            if (StringUtils.isBlank(skCode)) {
216 //                msg.setError("收款单单号不能为空!");
217 //                return msg;
218 //            }
219 //            SpObserver.setDBtoInstance(DBID);
220 //            receiptService.cancelReceipt(skCode);
221 //            PayLog log = new PayLog();
222 //            log.setStatus("-200");
223 //            log.setRefDoccode(skCode);
224 //            log.setMerchantRemarks("维护费取消信息。取消收款单:" + skCode + ",不能再进行支付操作!");
225 //            payLogService.saveOrUpdatePayLog(log);
226 //            msg.setOk("收款单:" + skCode + ",已失效!");
227 //        } catch (Exception e) {
228 //            msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
229 //        } finally {
230 //            SpObserver.setDBtoInstance();
231 //        }
232 //        return msg;
233 //    }
234
235     /**
236      * 根据不同的收款单状态查询收款单集合
237      *
238      * @param cltCode
239      * @param docStatus
240      * @param request
241      * @param response
242      * @return
243      */
244     @RequestMapping("/toBePaid.do")
245     public BackMsg getToBePaid(String cltCode, Integer docStatus, HttpServletRequest request, HttpServletResponse response) {
246         BackMsg msg = new BackMsg();
247         try {
248             if (StringUtils.isBlank(cltCode)) {
74e060 249 //                msg.setError("客户编号不能为空!");
X 250                 msg.setOk(null);
d3ae0a 251                 return msg;
X 252             }
253             if (docStatus == null) {
74e060 254 //                msg.setError("输入查询的状态值");
X 255                 msg.setOk(null);
d3ae0a 256                 return msg;
X 257             }
258             SpObserver.setDBtoInstance(DBID);
259             List<Receipt> receipts = receiptService.selectReceipt(cltCode, docStatus);
260             msg.setOk(receipts);
261         } catch (Exception e) {
262             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
263         } finally {
264             SpObserver.setDBtoInstance();
265         }
266         return msg;
267     }
dff633 268
X 269     /**
270      * 支付后更新推送信息
74e060 271      *
dff633 272      * @param skCode
X 273      * @param request
274      * @return
275      */
276     @RequestMapping("/updateMessage.do")
277     public BackMsg getUpdateMessage(String skCode, HttpServletRequest request) {
278         BackMsg msg = new BackMsg();
279         List<String> list = null;
74e060 280         String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
dff633 281         try {
X 282             SpObserver.setDBtoInstance(DBID);
283             list = maintainService.selectWHCode(skCode);
284             msg.setOk(maintainService.selectMaintainCunt(dbId));
285         } catch (Exception e) {
286             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
287         } finally {
288             SpObserver.setDBtoInstance();
289         }
290         try {
291             SpObserver.setDBtoInstance("_" + dbId);
292             if (list != null && list.size() > 0) {
74e060 293                 maintainService.updateMessage(String.join(",", list));
dff633 294             }
74e060 295         } finally {
dff633 296             SpObserver.setDBtoInstance();
X 297         }
298         return msg;
299     }
300
301     /**
302      * 维护费提醒信息数量
303      *
304      * @param request
305      * @return
306      */
307     @RequestMapping("remind.do")
308     public BackMsg getRemind(HttpServletRequest request) {
309         BackMsg msg = new BackMsg();
310         try {
311             DataSourceEntity data = MultiDataSource.getDataSourceMap(request);
312             SpObserver.setDBtoInstance(DBID);
313             msg.setOk(maintainService.selectMaintainCunt(data.getDbId() + ""));
314         } catch (Exception e) {
315             msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
316         } finally {
317             SpObserver.setDBtoInstance();
318         }
319         return msg;
320     }
d3ae0a 321 }