BmsshipStatementServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.JoinApiFeign;
  3. import com.steerinfo.dil.mapper.BmsshipStatementMapper;
  4. import com.steerinfo.dil.model.BmsshipDetailsOrder;
  5. import com.steerinfo.dil.model.BmsshipDetailsStatement;
  6. import com.steerinfo.dil.model.BmsshipStatement;
  7. import com.steerinfo.dil.service.IBmsshipStatementService;
  8. import com.steerinfo.dil.util.EASUtil;
  9. import com.steerinfo.dil.util.NoUtil;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.math.BigDecimal;
  14. import java.text.DecimalFormat;
  15. import java.util.*;
  16. /**
  17. * @Description:
  18. * @Author:HuJianGuo
  19. * @GreateTime:2021/9/8 19:26
  20. * @Version:V2.0
  21. */
  22. @Service
  23. public class BmsshipStatementServiceImpl implements IBmsshipStatementService {
  24. @Autowired
  25. BmsshipStatementMapper bmsshipStatementMapper;
  26. @Autowired
  27. BmsshipDetailsStatementServiceImpl bmsshipDetailsStatementService;
  28. @Autowired
  29. BmsshipDetailsOrderSerivceImpl bmsshipDetailsOrderSerivce;
  30. @Autowired
  31. BmstruckFormulaServiceImpl bmstruckFormulaService;
  32. @Autowired
  33. NoUtil noUtil;
  34. @Autowired
  35. JoinApiFeign joinApiFeign;
  36. @Autowired
  37. EASUtil easUtil;
  38. /**
  39. * 生成水运费账单
  40. * @param listMap
  41. * @return
  42. */
  43. @Transactional
  44. @Override
  45. public int insertSelective(List<Map<String, Object>> listMap) throws Exception {
  46. // 生成水运费账单
  47. BmsshipStatement bmsshipStatement = new BmsshipStatement();
  48. BigDecimal statementId = selectMaxId();
  49. bmsshipStatement.setStatementId(statementId);
  50. String statementNo = noUtil.setResultNo("CYZD",statementId);
  51. bmsshipStatement.setStatementNo(statementNo);
  52. BigDecimal statementShipperId = new BigDecimal((Integer) listMap.get(0).get("statementShipperId"));
  53. bmsshipStatement.setStatementShipperId(statementShipperId);
  54. bmsshipStatement.setStatementDate(new Date());
  55. // 设置常规字段
  56. bmsshipStatement.setInsertTime(new Date());
  57. bmsshipStatement.setInsertUsername("admin");
  58. bmsshipStatement.setUpdateTime(new Date());
  59. bmsshipStatement.setUpdateUsername("admin");
  60. bmsshipStatement.setInsertUpdateRemark("无");
  61. Double doubleTotalAmount = new Double(0);
  62. // 详单-账单
  63. List<BmsshipDetailsStatement> list = new LinkedList<>();
  64. for (int i = 0;i < listMap.size(); i++) {
  65. BigDecimal detailsStatementId = bmsshipDetailsStatementService.selectMaxId();
  66. BigDecimal detailsId = new BigDecimal((Integer) listMap.get(i).get("detailsId"));
  67. BmsshipDetailsOrder bmsshipDetailsOrder = bmsshipDetailsOrderSerivce.selectByPrimaryKey(detailsId);
  68. bmsshipDetailsOrder.setWetherToStatement(new BigDecimal(1));
  69. bmsshipDetailsOrderSerivce.updateByPrimaryKeySelective(bmsshipDetailsOrder);
  70. BmsshipDetailsStatement bmsshipDetailsStatement = new BmsshipDetailsStatement();
  71. bmsshipDetailsStatement.setDetailsStatementId(detailsStatementId);
  72. bmsshipDetailsStatement.setStatementId(statementId);
  73. bmsshipDetailsStatement.setDetailsId(detailsId);
  74. // 设置常规字段
  75. bmsshipDetailsStatement.setInsertTime(new Date());
  76. bmsshipDetailsStatement.setInsertUsername("admin");
  77. bmsshipDetailsStatement.setUpdateTime(new Date());
  78. bmsshipDetailsStatement.setUpdateUsername("admin");
  79. bmsshipDetailsStatement.setInsertUpdateRemark("无");
  80. list.add(bmsshipDetailsStatement);
  81. Object detailsAmount = listMap.get(i).get("detailsAmount");
  82. Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
  83. doubleTotalAmount += detailsAmountDouble;
  84. bmsshipDetailsStatementService.insertSelective(bmsshipDetailsStatement);
  85. }
  86. DecimalFormat df = new DecimalFormat("0.00");
  87. String statementTotalAmount = df.format(doubleTotalAmount);
  88. bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
  89. bmsshipStatement.setStatementType("水运费");
  90. int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
  91. // 调用金蝶接口
  92. List<Map<String,Object>> entries = joinApiFeign.getPurchaseShipDetails(statementId.intValue());
  93. Map<String,Object> head = joinApiFeign.getShipStatement(statementId.intValue());
  94. Map<String,Object> input = new HashMap<>();
  95. input.put("head",head);
  96. input.put("entries",entries);
  97. Map<String, Object> totalMap = easUtil.getTotalMap();
  98. totalMap.put("input",input);
  99. joinApiFeign.WSFaceWay(totalMap);
  100. return code;
  101. }
  102. /**
  103. * 生成质检费账单
  104. * @param mapList
  105. * @return
  106. */
  107. public int insertWaterFeesStatement(List<Map<String,Object>> mapList) throws Exception {
  108. // 生成水运费账单
  109. BmsshipStatement bmsshipStatement = new BmsshipStatement();
  110. Map<String, Object> map = mapList.get(0);
  111. BigDecimal batchId = new BigDecimal((Integer) map.get("batchId"));
  112. BigDecimal statementId = selectMaxId();
  113. bmsshipStatement.setStatementId(statementId);
  114. bmsshipStatement.setBatchId(batchId);
  115. String statementNo = noUtil.setResultNo("ZD",statementId);
  116. bmsshipStatement.setStatementNo(statementNo);
  117. bmsshipStatement.setStatementDate(new Date());
  118. BigDecimal doubleTotalAmount = bmstruckFormulaService.generateWaterFees(mapList);
  119. // 详单-账单
  120. DecimalFormat df = new DecimalFormat("0.00");
  121. String statementTotalAmount = df.format(doubleTotalAmount.doubleValue());
  122. bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
  123. bmsshipStatement.setStatementType("水分检测费");
  124. // 设置常规字段
  125. bmsshipStatement.setInsertTime(new Date());
  126. bmsshipStatement.setInsertUsername("admin");
  127. bmsshipStatement.setUpdateTime(new Date());
  128. bmsshipStatement.setUpdateUsername("admin");
  129. bmsshipStatement.setInsertUpdateRemark("无");
  130. bmsshipStatement.setStatementShipperId(new BigDecimal(1));
  131. int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
  132. // 调用金蝶接口
  133. Map<String, Object> totalMap = easUtil.getTotalMap();
  134. Map<String, Object> input = joinApiFeign.getShipStatement(statementId.intValue());
  135. totalMap.put("input",input);
  136. joinApiFeign.WSFaceWay(totalMap);
  137. return code;
  138. }
  139. /**
  140. * 生成物流途损超标扣款账单
  141. * @param batchId
  142. * @return
  143. */
  144. public int insertLossStatement(BigDecimal batchId) throws Exception {
  145. // 生成水运费账单
  146. BmsshipStatement bmsshipStatement = new BmsshipStatement();
  147. BigDecimal statementId = selectMaxId();
  148. bmsshipStatement.setStatementId(statementId);
  149. String statementNo = noUtil.setResultNo("ZD",statementId);
  150. bmsshipStatement.setStatementNo(statementNo);
  151. bmsshipStatement.setStatementDate(new Date());
  152. BigDecimal statementShipperId = bmsshipStatementMapper.getCarrierId(batchId);
  153. bmsshipStatement.setStatementShipperId(statementShipperId);
  154. BigDecimal doubleTotalAmount = bmstruckFormulaService.generateLossCost(batchId);
  155. // 详单-账单
  156. DecimalFormat df = new DecimalFormat("0.00");
  157. String statementTotalAmount = df.format(doubleTotalAmount.doubleValue());
  158. bmsshipStatement.setStatementTotalAmount(new BigDecimal(statementTotalAmount));
  159. bmsshipStatement.setStatementType("物流途损超标扣款");
  160. bmsshipStatement.setBatchId(batchId);
  161. // 设置常规字段
  162. bmsshipStatement.setInsertTime(new Date());
  163. bmsshipStatement.setInsertUsername("admin");
  164. bmsshipStatement.setUpdateTime(new Date());
  165. bmsshipStatement.setUpdateUsername("admin");
  166. bmsshipStatement.setInsertUpdateRemark("无");
  167. int code = bmsshipStatementMapper.insertSelective(bmsshipStatement);
  168. // 调用金蝶接口
  169. Map<String, Object> totalMap = easUtil.getTotalMap();
  170. Map<String, Object> input = joinApiFeign.getShipStatement(statementId.intValue());
  171. totalMap.put("input",input);
  172. joinApiFeign.WSFaceWay(totalMap);
  173. return code;
  174. }
  175. /**
  176. * 得到最大id
  177. * @return
  178. */
  179. @Override
  180. public BigDecimal selectMaxId() {
  181. return bmsshipStatementMapper.selectStatementId();
  182. }
  183. /**
  184. * 展示账单信息
  185. * @param mapValue
  186. * @return
  187. */
  188. @Override
  189. public List<Map<String, Object>> getStatementList(Map<String, Object> mapValue) {
  190. return bmsshipStatementMapper.getStatementList(mapValue);
  191. }
  192. /**
  193. * 展示账单中的详单
  194. * @param mapValue
  195. * @return
  196. */
  197. @Override
  198. public List<Map<String, Object>> getDetailsOrder(Map<String, Object> mapValue) {
  199. return bmsshipStatementMapper.getDetailsOrder(mapValue);
  200. }
  201. /**
  202. * 得到总金额和支付单位
  203. * @param batchId
  204. * @return
  205. */
  206. @Override
  207. public List<Map<String, Object>> getShipperAndAmount(BigDecimal batchId) {
  208. return bmsshipStatementMapper.getShipperAndAmount(batchId);
  209. }
  210. /**
  211. * 得到汽运实绩
  212. * @param batchId
  213. * @return
  214. */
  215. @Override
  216. public List<Map<String, Object>> getTruckResult(BigDecimal batchId) {
  217. return bmsshipStatementMapper.getTruckResult(batchId);
  218. }
  219. /**
  220. * 得到船运实绩
  221. * @param mapVal
  222. * @return
  223. */
  224. @Override
  225. public List<Map<String, Object>> getShipResult(Map<String,Object> mapVal) {
  226. return bmsshipStatementMapper.getShipResult(mapVal);
  227. }
  228. /**
  229. * 展示途损费账单列表
  230. * @param mapValue
  231. * @return
  232. */
  233. @Override
  234. public List<Map<String, Object>> getLossStatementList(Map<String, Object> mapValue) {
  235. return bmsshipStatementMapper.getLossStatementList(mapValue);
  236. }
  237. /**
  238. * 展示水分检测实绩
  239. * @param mapValue
  240. * @return
  241. */
  242. @Override
  243. public List<Map<String, Object>> getWaterResult(Map<String, Object> mapValue) {
  244. return bmsshipStatementMapper.getWaterResult(mapValue);
  245. }
  246. /**
  247. * 得到批次信息
  248. * @param mapVal
  249. * @return
  250. */
  251. @Override
  252. public List<Map<String, Object>> getBatch(Map<String, Object> mapVal) {
  253. return bmsshipStatementMapper.getBatch(mapVal);
  254. }
  255. }