BmstruckStatementServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.JoinApiFeign;
  3. import com.steerinfo.dil.mapper.BmstruckCheckMapper;
  4. import com.steerinfo.dil.mapper.BmstruckDetailsOrderMapper;
  5. import com.steerinfo.dil.mapper.BmstruckDetailsStatementMapper;
  6. import com.steerinfo.dil.model.BmstruckCheck;
  7. import com.steerinfo.dil.model.BmstruckDetailsOrder;
  8. import com.steerinfo.dil.model.BmstruckDetailsStatement;
  9. import com.steerinfo.dil.util.DataChange;
  10. import com.steerinfo.dil.util.EASUtil;
  11. import com.steerinfo.dil.util.NoUtil;
  12. import com.steerinfo.dil.model.BmstruckStatement;
  13. import com.steerinfo.dil.mapper.BmstruckStatementMapper;
  14. import com.steerinfo.dil.service.IBmstruckStatementService;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import java.text.DecimalFormat;
  19. import java.util.*;
  20. import java.math.BigDecimal;
  21. /**
  22. * BmstruckStatement服务实现:
  23. *
  24. * @author generator
  25. * @version 1.0-SNAPSHORT 2021-10-15 06:20
  26. * 类描述
  27. * 修订历史:
  28. * 日期:2021-10-15
  29. * 作者:generator
  30. * 参考:
  31. * 描述:BmstruckStatement服务实现
  32. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  33. * @see null
  34. */
  35. @Service(value = "bmstruckStatementService")
  36. public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
  37. @Autowired
  38. BmstruckStatementMapper bmstruckStatementMapper;
  39. @Autowired
  40. BmstruckDetailsStatementMapper bmstruckDetailsStatementMapper;
  41. @Autowired
  42. BmstruckDetailsOrderMapper bmstruckDetailsOrderMapper;
  43. @Autowired
  44. BmstruckCheckMapper bmstruckCheckMapper;
  45. @Autowired
  46. NoUtil noUtil;
  47. @Autowired
  48. JoinApiFeign joinApiFeign;
  49. @Autowired
  50. EASUtil easUtil;
  51. /**
  52. * 展示计费账单
  53. *
  54. * @param mapValue
  55. * @return
  56. */
  57. @Override
  58. public List<Map<String, Object>> getTruckStatementList(Map<String, Object> mapValue) {
  59. List<Map<String, Object>> mapList = bmstruckStatementMapper.getTruckStatementList(mapValue);
  60. return mapList;
  61. }
  62. /**
  63. * 生成汽运账单
  64. *
  65. * @param map
  66. * @return
  67. */
  68. @Transactional
  69. @Override
  70. public int addTruckStatement(Map<String, Object> map) throws Exception {
  71. BigDecimal excludeTax = DataChange.dataToBigDecimal( map.get("excludeTax"));
  72. String url = map.get("url").toString();
  73. //查询统计信息
  74. Map<String,Object> count = bmstruckStatementMapper.getDetails(map);
  75. //查询单位
  76. List<Map<String, Object>> companys = bmstruckStatementMapper.getDetailIds(map);
  77. if(companys.size()>1){
  78. throw new Exception("存在多个承运商和收货客户!请检查所勾选的订单!");
  79. }else if(companys.size() == 0){
  80. throw new Exception("没有查询到承运商和收货客户!");
  81. }
  82. //校验是否已经绑定账单
  83. List<BigDecimal> oldStatementIds= bmstruckStatementMapper.getStatementIds(map);
  84. if(oldStatementIds.size()>0){
  85. //删除所有订单
  86. bmstruckStatementMapper.batchDelete(oldStatementIds);
  87. //取消所有绑定
  88. bmstruckStatementMapper.updateAllBind(oldStatementIds);
  89. }
  90. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  91. bmstruckStatement.setCarNum(DataChange.dataToBigDecimal(count.get("carNum")).setScale(2,BigDecimal.ROUND_HALF_UP));
  92. bmstruckStatement.setSumAmount(DataChange.dataToBigDecimal(count.get("sumAmount")).setScale(2,BigDecimal.ROUND_HALF_UP));
  93. bmstruckStatement.setConsigneeId(DataChange.dataToBigDecimal(companys.get(0).get("consigneeId")));
  94. bmstruckStatement.setCarrierId(DataChange.dataToBigDecimal(companys.get(0).get("carrierId")));
  95. bmstruckStatement.setStatementExcludTax(excludeTax.setScale(2,BigDecimal.ROUND_HALF_UP));
  96. bmstruckStatement.setPhoto(url);
  97. // 汽运账单主键
  98. BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
  99. bmstruckStatement.setStatementId(statementId);
  100. // 汽运账单编号
  101. String statementNumber = noUtil.setResultNo("QYZD", statementId);
  102. bmstruckStatement.setStatementNumber(statementNumber);
  103. // 支付单位
  104. bmstruckStatement.setStatementPaymentUnit("四川达州钢铁集团有限责任公司");
  105. // 备注
  106. bmstruckStatement.setStatementRemark("汽运费账单");
  107. // 常规字段
  108. bmstruckStatement.setInsertTime(new Date());
  109. bmstruckStatement.setInsertUsername(map.get("userId").toString());
  110. bmstruckStatement.setUpdateTime(new Date());
  111. bmstruckStatement.setUpdateUsername("admin");
  112. bmstruckStatement.setInsertUpdateRemark("无");
  113. int code = bmstruckStatementMapper.insertSelective(bmstruckStatement);
  114. //详单绑定账单ID
  115. map.put("statementId",statementId);
  116. bmstruckStatementMapper.batchUpdateDetails(map);
  117. // // 调用金蝶接口
  118. // List<Map<String, Object>> entries = joinApiFeign.getSaleDetailsOrder(statementId.intValue());
  119. // Map<String,Object> head = joinApiFeign.getStatement(statementId.intValue());
  120. // Map<String,Object> input = new HashMap<>();
  121. // input.put("entries",entries);
  122. // input.put("head",head);
  123. // Map<String, Object> totalMap = easUtil.getTotalMap();
  124. // totalMap.put("input",input);
  125. // joinApiFeign.WSFaceWay(totalMap);
  126. return code;
  127. }
  128. /**
  129. * 展示账单下的详单
  130. *
  131. * @param mapVal
  132. * @return
  133. */
  134. @Override
  135. public List<Map<String, Object>> getSaleTruckStatementDetailsOrderList(Map<String, Object> mapVal) {
  136. return bmstruckStatementMapper.getSaleTruckStatementDetailsOrderList(mapVal);
  137. }
  138. /**
  139. * 新增内转汽运账单
  140. *
  141. * @param mapList
  142. * @param orderType
  143. * @return
  144. */
  145. @Override
  146. public int addConvertedTruckStatement(List<Map<String, Object>> mapList, Integer orderType) {
  147. //orderType:1:计时,2:计数,3:计重,4:包月
  148. // 生成汽运账单主键
  149. BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
  150. // 创建账单实体
  151. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  152. // 常规字段
  153. bmstruckStatement.setInsertTime(new Date());
  154. bmstruckStatement.setInsertUsername("admin");
  155. bmstruckStatement.setInsertUpdateRemark("无");
  156. // 计算账单总金额
  157. Double doubleTotalAmount = new Double(0);
  158. //将详单id与账单id绑定至中间表
  159. for (Map<String, Object> map : mapList) {
  160. // 中间表主键
  161. BigDecimal detailsStatementId = bmstruckDetailsStatementMapper.selectDetailsStatementId();
  162. // 详单id
  163. BigDecimal detailsId = new BigDecimal((Integer) map.get("detailsId"));
  164. // 获取详单信息
  165. BmstruckDetailsOrder bmstruckDetailsOrder = bmstruckDetailsOrderMapper.selectByPrimaryKey(detailsId);
  166. // 将该详单状态变为已生成账单
  167. bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(1));
  168. bmstruckDetailsOrder.setUpdateTime(new Date());
  169. bmstruckDetailsOrder.setUpdateUsername("admin");
  170. // 修改详单信息
  171. bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
  172. // 新增中间表实体
  173. BmstruckDetailsStatement bmstruckDetailsStatement = new BmstruckDetailsStatement();
  174. //设置主键
  175. bmstruckDetailsStatement.setDetailsStatementId(detailsStatementId);
  176. bmstruckDetailsStatement.setStatementId(statementId);
  177. bmstruckDetailsStatement.setDetailsId(detailsId);
  178. // 设置常规字段
  179. bmstruckDetailsStatement.setInsertTime(new Date());
  180. bmstruckDetailsStatement.setInsertUsername("admin");
  181. bmstruckDetailsStatement.setInsertUpdateRemark("无");
  182. BigDecimal detailsAmount = new BigDecimal((Double) map.get("detailsAmount"));
  183. Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
  184. doubleTotalAmount += detailsAmountDouble;
  185. bmstruckDetailsStatementMapper.insertSelective(bmstruckDetailsStatement);
  186. }
  187. if (orderType == 1) {
  188. // 备注
  189. bmstruckStatement.setStatementRemark("计时汽运费账单");
  190. } else if (orderType == 2) {
  191. // 备注
  192. bmstruckStatement.setStatementRemark("计数汽运费账单");
  193. } else if (orderType == 3) {
  194. // 备注
  195. bmstruckStatement.setStatementRemark("计重汽运费账单");
  196. } else if (orderType == 4) {
  197. // 备注
  198. bmstruckStatement.setStatementRemark("包月汽运费账单");
  199. }
  200. bmstruckStatement.setStatementExcludTax(new BigDecimal(doubleTotalAmount));
  201. return bmstruckStatementMapper.insertSelective(bmstruckStatement);
  202. }
  203. @Override
  204. public int delete(BigDecimal statementId) {
  205. //取消所有绑定
  206. List<BigDecimal> oldStatementIds=new ArrayList<>();
  207. oldStatementIds.add(statementId);
  208. bmstruckStatementMapper.updateAllBind(oldStatementIds);
  209. //删除账单
  210. return bmstruckStatementMapper.deleteByPrimaryKey(statementId);
  211. }
  212. @Override
  213. public int update(BigDecimal statementId) {
  214. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  215. bmstruckStatement.setStatementType(new BigDecimal(1));
  216. bmstruckStatement.setUpdateTime(new Date());
  217. bmstruckStatement.setUpdateUsername("admin");
  218. return bmstruckStatementMapper.updateByPrimaryKeySelective(bmstruckStatement);
  219. }
  220. @Override
  221. public List<Map<String, Object>> findDetailsForStatement(Map<String, Object> map) {
  222. return bmstruckStatementMapper.findDetailsForStatement(map);
  223. }
  224. @Override
  225. public String getStatementPhoto(BigDecimal statementId) {
  226. return bmstruckStatementMapper.selectByPrimaryKey(statementId).getPhoto();
  227. }
  228. }