package com.yc.MaintenanceFee.controller;
|
|
import com.yc.MaintenanceFee.entiy.PayInfo;
|
import com.yc.MaintenanceFee.entiy.PayLog;
|
import com.yc.MaintenanceFee.entiy.Receipt;
|
import com.yc.MaintenanceFee.service.*;
|
import com.yc.MaintenanceFee.utils.BackMsg;
|
import com.yc.MaintenanceFee.utils.PayCallBackUtil;
|
import com.yc.entity.DataSourceEntity;
|
import com.yc.exception.ApplicationException;
|
import com.yc.multiData.MultiDataSource;
|
import com.yc.multiData.SpObserver;
|
import com.yc.service.grid.GridServiceIfc;
|
import com.yc.service.impl.DBHelper;
|
import com.yc.utils.SessionKey;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
|
/**
|
* 生成维护费界面。显示维护费单号和生成收款单
|
*
|
* @USER: xinyb_
|
* @DATE: 2021-11-10 17:40
|
*/
|
@RestController
|
@RequestMapping("/Maintain")
|
public class MaintainController {
|
@Autowired
|
private PayInfoService payInfoService;
|
|
@Autowired
|
private PayLogService payLogService;
|
|
@Autowired
|
GridServiceIfc grid;
|
|
@Autowired
|
ReceiptService receiptService;
|
@Autowired
|
MaintainService maintainService;
|
|
private static final String DBID = "_338";
|
|
/**
|
* 获取对应客户订单所有数据,用于页面显示
|
*
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "/Cost.do", method = RequestMethod.GET)
|
public BackMsg getCost(HttpServletRequest request) {
|
BackMsg msg = new BackMsg();
|
try {
|
HttpSession session = request.getSession();
|
SpObserver.setDBtoInstance(DBID);
|
//通过session携带dbId查询表得到相对应的客户编号
|
String dbId = (String) session.getAttribute(SessionKey.DATA_BASE_ID);
|
//根据cltCode查询所有维护费用数据
|
List<PayInfo> info = payInfoService.queryListByCltCode(dbId);
|
if (info != null && info.size() > 0) {
|
List<String> doc = new ArrayList<>();
|
for (PayInfo i : info) {
|
doc.add(i.getDocCode());
|
}
|
msg.setCltCode(info.get(0).getCltCode());
|
List<Map<String, Object>> d = receiptService.getReceiptStatus(String.join(",", doc));
|
if (d != null && d.size() > 0) {
|
for (PayInfo f : info) {
|
for (Map<String, Object> m : d) {
|
if (f.getDocCode().equals(DBHelper.getValue(m,"soDocCode"))) {
|
f.setDocStatus(DBHelper.getValueInt(m, "docStatus"));
|
f.setSkCode(DBHelper.getValue(m,"docCode"));
|
}
|
}
|
}
|
}
|
msg.setOk(info);
|
} else {
|
msg.setCltCode(payInfoService.queryCltCodeByDbId(dbId));
|
msg.setOk(null);
|
}
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 生成一张收款单信息
|
*
|
* @param whCode
|
* @param request
|
* @param response
|
* @return
|
*/
|
@RequestMapping("/skCreate.do")
|
public BackMsg getSKCode(String whCode, String cltCode, HttpServletRequest request, HttpServletResponse response) {
|
BackMsg msg = new BackMsg();
|
try {
|
if (StringUtils.isBlank(whCode)) {
|
msg.setError("维护费单号不能为空!");
|
return msg;
|
}
|
|
Integer feeId = PayCallBackUtil.chargeMaintenanceFee(request);
|
DataSourceEntity data = MultiDataSource.getDataSourceMap(feeId + "");//获取对应数据源设置的维护费账户
|
if(data.getMaintenanceFeeToDbId()==null){
|
msg.setError("【收取维护费所属公司】不能为空,请在【快捷->维护系统设置】中录入");
|
return msg;
|
}
|
SpObserver.setDBtoInstance(DBID);
|
String skCode = maintainService.createSKCode(whCode, data.getMaintenanceFeeAcctCode());
|
if (!StringUtils.isBlank(skCode)) {
|
try {
|
//生成日志
|
PayLog log = new PayLog();
|
log.setRefDoccode(skCode);
|
log.setMerchantID(cltCode);
|
log.setRefformid(150101);
|
log.setRefformtype(496);
|
log.setInsertTime(new Date());
|
log.setBatchNo(0);
|
log.setStatus("0");
|
log.setMerchantRemarks("维护费生成信息。生成了收款单:" + skCode + ",未支付。");
|
//使用自定义的格式
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("y/M/d-H:m:s");
|
//要格式化的时间日期对象,只能用LocalDateTime。只涉及到日期也可以用LocalDate类,只涉及时间也可以用LocalTime类
|
LocalDateTime ldt = LocalDateTime.now();
|
String[] d = df.format(ldt).split("-");
|
log.setHostDate(d[0]);
|
log.setHostTime(d[1]);
|
log.setNotifyType((String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
|
payLogService.saveOrUpdatePayLog(log);
|
} catch (Exception e) {
|
skCode = skCode;
|
}
|
msg.setOk(skCode);//返回收款单号
|
} else {
|
msg.setError("收款单创建失败:" + skCode);
|
}
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 查询收款单信息
|
*
|
* @param skCode
|
* @param request
|
* @return
|
*/
|
@RequestMapping("/skSelect.do")
|
public BackMsg getSKSelect(String skCode, HttpServletRequest request) {
|
BackMsg msg = new BackMsg();
|
try {
|
if (StringUtils.isBlank(skCode)) {
|
msg.setError("收款单单号不能为空!");
|
return msg;
|
}
|
SpObserver.setDBtoInstance(DBID);
|
Receipt receipt = receiptService.QueryReceipt(skCode, 0);
|
if (receipt != null && !StringUtils.isBlank(receipt.getDocCode())) {
|
String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
|
//获取收款人
|
receipt.setPayee(PayCallBackUtil.getReceivingCompany(dbId));
|
if (receipt.getIsPaid() == 1) {
|
msg.setOkEd(receipt,"已支付成功,不能重复支付。");
|
return msg;
|
}
|
if (receipt.getDocStatus() == -200) {
|
msg.setOkEd(receipt,"订单已被取消,支付失败。");
|
return msg;
|
}
|
if (receipt.getDocStatus() != 0) {
|
msg.setOkEd(receipt,"订单不是待支付状态,支付失败。");
|
return msg;
|
}
|
}
|
msg.setOk(receipt);
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 取消支付,关闭收款单
|
*
|
* @param skCode
|
* @param request
|
* @return
|
*/
|
// @RequestMapping("/skClose.do")
|
// public BackMsg delSKCode(String skCode, HttpServletRequest request) {
|
// BackMsg msg = new BackMsg();
|
// try {
|
// if (StringUtils.isBlank(skCode)) {
|
// msg.setError("收款单单号不能为空!");
|
// return msg;
|
// }
|
// SpObserver.setDBtoInstance(DBID);
|
// receiptService.cancelReceipt(skCode);
|
// PayLog log = new PayLog();
|
// log.setStatus("-200");
|
// log.setRefDoccode(skCode);
|
// log.setMerchantRemarks("维护费取消信息。取消收款单:" + skCode + ",不能再进行支付操作!");
|
// payLogService.saveOrUpdatePayLog(log);
|
// msg.setOk("收款单:" + skCode + ",已失效!");
|
// } catch (Exception e) {
|
// msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
// } finally {
|
// SpObserver.setDBtoInstance();
|
// }
|
// return msg;
|
// }
|
|
/**
|
* 根据不同的收款单状态查询收款单集合
|
*
|
* @param cltCode
|
* @param docStatus
|
* @param request
|
* @param response
|
* @return
|
*/
|
@RequestMapping("/toBePaid.do")
|
public BackMsg getToBePaid(String cltCode, Integer docStatus, HttpServletRequest request, HttpServletResponse response) {
|
BackMsg msg = new BackMsg();
|
try {
|
if (StringUtils.isBlank(cltCode)) {
|
// msg.setError("客户编号不能为空!");
|
msg.setOk(null);
|
return msg;
|
}
|
if (docStatus == null) {
|
// msg.setError("输入查询的状态值");
|
msg.setOk(null);
|
return msg;
|
}
|
SpObserver.setDBtoInstance(DBID);
|
List<Receipt> receipts = receiptService.selectReceipt(cltCode, docStatus);
|
msg.setOk(receipts);
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 支付后更新推送信息
|
*
|
* @param skCode
|
* @param request
|
* @return
|
*/
|
@RequestMapping("/updateMessage.do")
|
public BackMsg getUpdateMessage(String skCode, HttpServletRequest request) {
|
BackMsg msg = new BackMsg();
|
List<String> list = null;
|
String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID);
|
try {
|
SpObserver.setDBtoInstance(DBID);
|
list = maintainService.selectWHCode(skCode);
|
msg.setOk(maintainService.selectMaintainCunt(dbId));
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
try {
|
SpObserver.setDBtoInstance("_" + dbId);
|
if (list != null && list.size() > 0) {
|
maintainService.updateMessage(String.join(",", list));
|
}
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
|
/**
|
* 维护费提醒信息数量
|
*
|
* @param request
|
* @return
|
*/
|
@RequestMapping("remind.do")
|
public BackMsg getRemind(HttpServletRequest request) {
|
BackMsg msg = new BackMsg();
|
try {
|
DataSourceEntity data = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance(DBID);
|
msg.setOk(maintainService.selectMaintainCunt(data.getDbId() + ""));
|
} catch (Exception e) {
|
msg.setError(e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
return msg;
|
}
|
}
|