TShandeMchController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. package com.szwl.controller;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.szwl.constant.ResponseCodesEnum;
  9. import com.szwl.model.bo.R;
  10. import com.szwl.model.bo.ResponseModel;
  11. import com.szwl.model.entity.*;
  12. import com.szwl.model.excel.ShandeMchCompanyListTarget;
  13. import com.szwl.model.excel.ShandeMchListTarget;
  14. import com.szwl.service.TAdminService;
  15. import com.szwl.service.TShandeMchCheckService;
  16. import com.szwl.service.TShandeMchService;
  17. import io.swagger.annotations.ApiOperation;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.apache.poi.ss.usermodel.Workbook;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.io.IOException;
  24. import java.io.OutputStream;
  25. import java.math.BigDecimal;
  26. import java.net.URLEncoder;
  27. import java.text.SimpleDateFormat;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.List;
  31. /**
  32. * <p>
  33. * 杉德支付收款信息 前端控制器
  34. * </p>
  35. *
  36. * @author wuhs
  37. * @since 2022-04-29
  38. */
  39. @RestController
  40. @RequestMapping("/tShandeMch")
  41. public class TShandeMchController {
  42. @Autowired
  43. TShandeMchCheckService tShandeMchCheckService;
  44. @Autowired
  45. TShandeMchService tShandeMchService;
  46. @Autowired
  47. TAdminService adminService;
  48. @ApiOperation(value = "查找杉德收款账户信息")
  49. @GetMapping("/getOne")
  50. public ResponseModel<?> getOne(String adminId) {
  51. TAdmin admin = adminService.getById(adminId);
  52. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  53. query.eq(TShandeMch::getAdminId,adminId);
  54. List<TShandeMch> list = tShandeMchService.list(query);
  55. if(list.size()>0){
  56. return R.ok(list.get(0));
  57. }else {
  58. return R.fail("尚未注册!");
  59. }
  60. }
  61. @ApiOperation(value = "获取杉德分账信息列表 分页")
  62. @GetMapping("/pageShandeMch")
  63. public ResponseModel<IPage<?>> pageShandeMch(String username, String type, long current, long size ){
  64. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  65. if(StringUtils.isNotEmpty(type)){
  66. query.eq(TShandeMch::getType,type);
  67. }else {
  68. query.eq(TShandeMch::getType,"0");
  69. }
  70. if(StringUtils.isNotEmpty(username)){
  71. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  72. query1.eq(TAdmin::getUsername,username);
  73. List<TAdmin> list = adminService.list(query1);
  74. if(list.size()>0){
  75. query.eq(TShandeMch::getAdminId,list.get(0).getId());
  76. }
  77. }
  78. Page<TShandeMch> page = new Page<>(current, size, true);
  79. IPage<TShandeMch> iPage = tShandeMchService.page(page, query);
  80. return R.ok(iPage);
  81. }
  82. @ApiOperation(value = "保存或提交审核")
  83. @PostMapping("/save")
  84. public ResponseModel<?> save(@RequestBody TShandeMch tShandeMch) {
  85. TAdmin admin = adminService.getById(tShandeMch.getAdminId());
  86. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  87. query.eq(TShandeMch::getAdminId,tShandeMch.getAdminId());
  88. List<TShandeMch> list = tShandeMchService.list(query);
  89. if(list.size()>0){
  90. //已有,属于第二次提交信息,需要审核
  91. TShandeMch oldShandeMch = list.get(0);
  92. int i = 0;
  93. if(!oldShandeMch.getType().equals(tShandeMch.getType())){
  94. i++;
  95. }
  96. if(!oldShandeMch.getBankName().equals(tShandeMch.getBankName())){
  97. i++;
  98. }
  99. if(!oldShandeMch.getBankNo().equals(tShandeMch.getBankNo())){
  100. i++;
  101. }
  102. if(i>0){
  103. TShandeMchCheck shandeMchCheck = new TShandeMchCheck();
  104. shandeMchCheck.setType(tShandeMch.getType());
  105. shandeMchCheck.setCreateDate(new Date());
  106. shandeMchCheck.setModifyDate(new Date());
  107. shandeMchCheck.setAdminId(oldShandeMch.getAdminId());
  108. shandeMchCheck.setCheckType("0");
  109. shandeMchCheck.setBankName(tShandeMch.getBankName());
  110. shandeMchCheck.setBankNo(tShandeMch.getBankNo());
  111. shandeMchCheck.setSettleableBalance(oldShandeMch.getSettleableBalance());
  112. shandeMchCheck.setTodayBalance(oldShandeMch.getTodayBalance());
  113. if(tShandeMch.getType().equals("0")){
  114. if(StringUtils.isEmpty(tShandeMch.getBankChannelName())||StringUtils.isEmpty(tShandeMch.getBankChannelNo())){
  115. R.fail("信息有空!");
  116. }
  117. shandeMchCheck.setBankChannelNo(tShandeMch.getBankChannelNo());
  118. shandeMchCheck.setBankChannelName(tShandeMch.getBankChannelName());
  119. }
  120. tShandeMchCheckService.save(shandeMchCheck);
  121. }
  122. return R.ok(list.get(0));
  123. }else {
  124. //没有,直接保存
  125. tShandeMch.setSettleableBalance(BigDecimal.valueOf(0.00));
  126. tShandeMch.setTodayBalance(BigDecimal.valueOf(0.00));
  127. tShandeMch.setTotalSettleableBalance(BigDecimal.valueOf(0.00));
  128. tShandeMch.setCreateDate(new Date());
  129. tShandeMch.setModifyDate(new Date());
  130. tShandeMchService.save(tShandeMch);
  131. return R.ok();
  132. }
  133. }
  134. @ApiOperation(value = "查找杉德收款账户信息")
  135. @GetMapping("/getShandeMch")
  136. public ResponseModel<TShandeMch> getShandeMch(@RequestParam String adminId) {
  137. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  138. query.eq(TShandeMch::getAdminId,adminId);
  139. List<TShandeMch> list = tShandeMchService.list(query);
  140. TShandeMch shandeMch = list.get(0);
  141. return R.ok(shandeMch);
  142. }
  143. @ApiOperation(value = "结算处理")
  144. @GetMapping("/jiesuan")
  145. public ResponseModel<?> jiesuan(String username, String type, String namelist) {
  146. if(StringUtils.isEmpty(type)){
  147. return R.fail(ResponseCodesEnum.A0100); }
  148. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  149. query.eq(TShandeMch::getType,type);
  150. if(StringUtils.isNotEmpty(username)){
  151. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  152. query1.eq(TAdmin::getUsername,username);
  153. List<TAdmin> list = adminService.list(query1);
  154. if(list.size()>0){
  155. query.eq(TShandeMch::getAdminId,list.get(0).getId());
  156. }
  157. }
  158. if(StringUtils.isNotEmpty(namelist)){
  159. String[] names = namelist.split(",");
  160. List<Long> ids = new ArrayList<>();
  161. if(names.length>0){
  162. for(int i=0;i<namelist.length();i++){
  163. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  164. query1.eq(TAdmin::getUsername,username);
  165. List<TAdmin> list = adminService.list(query1);
  166. if(list.size()>0){
  167. ids.add(list.get(0).getId());
  168. }
  169. }
  170. }
  171. if(ids.size()>0){
  172. query.notIn(TShandeMch::getAdminId,ids);
  173. }
  174. }
  175. List<TShandeMch> list = tShandeMchService.list(query);
  176. for(TShandeMch shandeMch:list){
  177. BigDecimal settleableBalance = shandeMch.getSettleableBalance();
  178. if(settleableBalance!=null&&settleableBalance.compareTo(new BigDecimal(0))>0){
  179. shandeMch.setSettleableDate(new Date());
  180. BigDecimal totalSettleableBalance = shandeMch.getTotalSettleableBalance();
  181. if(totalSettleableBalance!=null){
  182. shandeMch.setTotalSettleableBalance(settleableBalance.add(totalSettleableBalance));
  183. }else {
  184. shandeMch.setTotalSettleableBalance(settleableBalance);
  185. }
  186. shandeMch.setSettleableBalance(new BigDecimal(0));
  187. shandeMch.setLastSettleableBalance(settleableBalance);
  188. tShandeMchService.updateById(shandeMch);
  189. }
  190. }
  191. return R.ok();
  192. }
  193. @ApiOperation(value = "ClientId查找设备")
  194. @GetMapping("/updateShandeMch")
  195. public void updateShandeMch(@RequestBody TShandeMch shandeMch) {
  196. if(shandeMch!=null){
  197. shandeMch.setModifyDate(new Date());
  198. tShandeMchService.updateById(shandeMch);
  199. }
  200. }
  201. @ApiOperation(value = "结算处理")
  202. @GetMapping("/shandeMchListExport")
  203. public ResponseModel<?> shandeMchListExport(HttpServletResponse response, String username, String type, String namelist) {
  204. if(StringUtils.isEmpty(type)){
  205. return R.fail(ResponseCodesEnum.A0100);
  206. }
  207. LambdaQueryWrapper<TShandeMch> query = Wrappers.lambdaQuery();
  208. query.eq(TShandeMch::getType,type);
  209. if(StringUtils.isNotEmpty(username)){
  210. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  211. query1.eq(TAdmin::getUsername,username);
  212. List<TAdmin> list = adminService.list(query1);
  213. if(list.size()>0){
  214. query.eq(TShandeMch::getAdminId,list.get(0).getId());
  215. }
  216. }
  217. if(StringUtils.isNotEmpty(namelist)){
  218. String[] names = namelist.split(",");
  219. List<Long> ids = new ArrayList<>();
  220. if(names.length>0){
  221. for(int i=0;i<namelist.length();i++){
  222. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  223. query1.eq(TAdmin::getUsername,username);
  224. List<TAdmin> list = adminService.list(query1);
  225. if(list.size()>0){
  226. ids.add(list.get(0).getId());
  227. }
  228. }
  229. }
  230. if(ids.size()>0){
  231. query.notIn(TShandeMch::getAdminId,ids);
  232. }
  233. }
  234. List<TShandeMch> list = tShandeMchService.list(query);
  235. ExportParams exportParams = new ExportParams(null, "sheet1");
  236. Workbook workbook = null;
  237. //账号类型 0:对公 1:私人
  238. if(type.equals("0")){
  239. List<ShandeMchCompanyListTarget> shandeMchCompanyListTargets = new ArrayList<>();
  240. int i = 0;
  241. for(TShandeMch shandeMch: list){
  242. BigDecimal settleableBalance = shandeMch.getSettleableBalance();
  243. if(settleableBalance.compareTo(new BigDecimal(0))== 1){
  244. i++;
  245. ShandeMchCompanyListTarget shandeMchCompanyListTarget = new ShandeMchCompanyListTarget();
  246. shandeMchCompanyListTarget.setBankName(shandeMch.getBankName());
  247. shandeMchCompanyListTarget.setBankNo(shandeMch.getBankNo());
  248. shandeMchCompanyListTarget.setSettleableBalance(String.valueOf(shandeMch.getSettleableBalance()));
  249. shandeMchCompanyListTarget.setNo(String.valueOf(i));
  250. shandeMchCompanyListTarget.setBankChannelName(shandeMch.getBankChannelName());
  251. shandeMchCompanyListTarget.setBankChannelNo(shandeMch.getBankChannelNo());
  252. shandeMchCompanyListTargets.add(shandeMchCompanyListTarget);
  253. }
  254. }
  255. workbook = ExcelExportUtil.exportExcel(exportParams, ShandeMchCompanyListTarget.class, shandeMchCompanyListTargets);
  256. }
  257. if(type.equals("1")){
  258. List<ShandeMchListTarget> shandeMchListTargetList = new ArrayList<>();
  259. int i = 0;
  260. for(TShandeMch shandeMch: list){
  261. BigDecimal settleableBalance = shandeMch.getSettleableBalance();
  262. if(settleableBalance.compareTo(new BigDecimal(0))== 1){
  263. i++;
  264. ShandeMchListTarget shandeMchListTarget = new ShandeMchListTarget();
  265. shandeMchListTarget.setBankName(shandeMch.getBankName());
  266. shandeMchListTarget.setBankNo(shandeMch.getBankNo());
  267. shandeMchListTarget.setSettleableBalance(String.valueOf(shandeMch.getSettleableBalance()));
  268. shandeMchListTarget.setNo(String.valueOf(i));
  269. shandeMchListTargetList.add(shandeMchListTarget);
  270. }
  271. }
  272. workbook = ExcelExportUtil.exportExcel(exportParams, ShandeMchListTarget.class, shandeMchListTargetList);
  273. }
  274. if (workbook != null) {
  275. OutputStream os = null;
  276. try {
  277. os = response.getOutputStream();
  278. SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日HHmmss");
  279. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  280. if(type.equals("0")){
  281. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("对公账户" + format.format(new Date()) + ".xls", "UTF-8"));
  282. }else {
  283. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("个人账号" + format.format(new Date()) + ".xls", "UTF-8"));
  284. }
  285. // response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单记录数据导出" + format.format(new Date()) + ".xls", "UTF-8"));
  286. workbook.write(os);
  287. return R.ok("导出成功");
  288. } catch (Exception e) {
  289. e.printStackTrace();
  290. return R.fail("导出错误");
  291. } finally {
  292. try {
  293. os.close();
  294. workbook.close();
  295. } catch (IOException e) {
  296. e.printStackTrace();
  297. }
  298. }
  299. }
  300. return R.ok();
  301. }
  302. }