OyeResultServiceImpl.java 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.steerinfo.dil.feign.BmsTruckFeign;
  6. import com.steerinfo.dil.mapper.OyeInboundResultMapper;
  7. import com.steerinfo.dil.mapper.OyeOutboundResultMapper;
  8. import com.steerinfo.dil.mapper.OyeRealtimeInventoryMapper;
  9. import com.steerinfo.dil.mapper.TmstruckWeightBatchMapper;
  10. import com.steerinfo.dil.model.*;
  11. import com.steerinfo.dil.service.IOyeResultService;
  12. import com.steerinfo.dil.util.DataChange;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import javax.annotation.Resource;
  17. import java.math.BigDecimal;
  18. import java.math.RoundingMode;
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21. @Service
  22. public class OyeResultServiceImpl implements IOyeResultService {
  23. @Resource
  24. OyeInboundResultMapper oyeInboundResultMapper;
  25. @Resource
  26. OyeOutboundResultMapper oyeOutboundResultMapper;
  27. @Resource
  28. OyeRealtimeInventoryMapper oyeRealtimeInventoryMapper;
  29. @Resource
  30. TmstruckWeightBatchMapper tmstruckWeightBatchMapper;
  31. @Resource
  32. BmsTruckFeign bmsTruckFeign;
  33. public List<Map<String, Object>> getOyeInboundResult(Map<String, Object> mapValue) {
  34. List<Map<String,Object>> mapList = oyeInboundResultMapper.getOyeInboundResult(mapValue);
  35. int i = 0;
  36. for (Map<String,Object> map : mapList) {
  37. if(i == 0) {
  38. i++;
  39. continue;
  40. }
  41. if(map.get("weightBatchId") == null){
  42. continue;
  43. }
  44. Map<String,Object> stringObjectMap = mapList.get(i-1);
  45. if (DataChange.dataToBigDecimal(stringObjectMap.get("weightBatchId")).compareTo(DataChange.dataToBigDecimal(map.get("weightBatchId"))) == 0) {
  46. map.put("netWeight",0);
  47. map.put("orderNetWeight",0);
  48. }
  49. i++;
  50. }
  51. return mapList;
  52. }
  53. public List<Map<String, Object>> getOyeOutboundResult(Map<String, Object> mapValue) {
  54. return oyeOutboundResultMapper.oyeOutboundResultMapper(mapValue);
  55. }
  56. public List<Map<String, Object>> getOyeRealTimeResult(Map<String, Object> mapValue) {
  57. return oyeRealtimeInventoryMapper.getOyeRealTimeResult(mapValue);
  58. }
  59. /**
  60. * 入库作业
  61. * @param mapValue
  62. * @return
  63. */
  64. public synchronized String insertInboundResult(Map<String, Object> mapValue) throws Exception {
  65. List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
  66. System.out.println("===========" + new Date());
  67. JSONObject jsonObject = new JSONObject(mapValue);
  68. System.out.println(jsonObject);
  69. System.out.println("===========" + new Date());
  70. for (Map<String,Object> map : mapList) {
  71. //判断该拼是否入库
  72. if (oyeInboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
  73. throw new Exception("该分录已入库,无法继续入库");
  74. }
  75. //判断该分录是否有净重
  76. if (DataChange.dataToBigDecimal(map.get("netWeight")) == null || DataChange.dataToBigDecimal(map.get("netWeight")).intValue() == 0) {
  77. throw new Exception("该分录无净重,不允许入库");
  78. }
  79. }
  80. for (Map<String,Object> map : mapList) {
  81. insertInboundResultReal(map);
  82. }
  83. return "入库成功";
  84. }
  85. @Transactional(rollbackFor = Exception.class)
  86. public synchronized int insertInboundResultReal(Map<String,Object> map) throws Exception {
  87. int i = 0;
  88. //根据分录ID查询理重
  89. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  90. BigDecimal theoryWeightSaleMaterial = oyeRealtimeInventoryMapper.getTheoryWeight(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  91. BigDecimal singleWeight = theoryWeightSaleMaterial.divide(materialNumber,4,BigDecimal.ROUND_HALF_UP);
  92. //根据分录理重
  93. OyeInboundResult oyeInboundResult = new OyeInboundResult();
  94. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  95. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  96. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  97. oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
  98. oyeInboundResult.setSaleArea(map.get("saleArea").toString());
  99. oyeInboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  100. oyeInboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
  101. oyeInboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  102. oyeInboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  103. oyeInboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
  104. oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
  105. oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
  106. oyeInboundResult.setSaleNo(map.get("saleNo") + "");
  107. if (meter != null && meter.intValue() != 0) {
  108. oyeInboundResult.setMeter(meter);
  109. }
  110. oyeInboundResult.setMaterialId(materialId);
  111. oyeInboundResult.setTheoryWeight(theoryWeight);
  112. oyeInboundResult.setSingleWeight(singleWeight);
  113. oyeInboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  114. oyeInboundResult.setMaterialNumber(materialNumber);
  115. oyeInboundResult.setInsertUsername(map.get("userName") + "");
  116. oyeInboundResult.setInsertTime(new Date());
  117. map.put("singleWeight",singleWeight);
  118. //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
  119. BigDecimal inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
  120. if (inventoryId == null) {
  121. //新增实时库存
  122. map.put("flag",1);
  123. OyeRealtimeInventory oyeRealtimeInventory = insertRealTimeInventory(map);
  124. oyeInboundResult.setInventoryId(oyeRealtimeInventory.getInventoryId());
  125. map.put("inventoryId",oyeRealtimeInventory.getInventoryId());
  126. oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventory);
  127. }else{
  128. map.put("inventoryId",inventoryId);
  129. map.put("flag",1);
  130. OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(map);
  131. oyeInboundResult.setInventoryId(oyeRealtimeInventory.getInventoryId());
  132. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventory);
  133. }
  134. if (!map.get("place").equals(map.get("inboundWarehouse"))) {
  135. //如果收货地址与place,则需要修改收货地址
  136. BigDecimal newPlaceId = oyeInboundResultMapper.getPlaceId(map.get("inboundWarehouse").toString());
  137. //修改收货地址
  138. Map<String, Object> addressMap = new HashMap<>();
  139. addressMap.put("newPlaceId",newPlaceId);
  140. addressMap.put("placeId",DataChange.dataToBigDecimal(map.get("placeId")));
  141. addressMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  142. oyeInboundResultMapper.updateAddressPlace(addressMap);
  143. }
  144. //判断该运单有没有签收实绩
  145. String receiptAddress = oyeInboundResultMapper.selectReceiptResultId(DataChange.dataToBigDecimal(map.get("orderId")));
  146. if(receiptAddress != null) {
  147. oyeInboundResultMapper.updateOOOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
  148. }
  149. // 修改运单状态
  150. oyeInboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
  151. //新增入库实绩
  152. oyeInboundResultMapper.insertSelective(oyeInboundResult);
  153. return i;
  154. }
  155. @Transactional(rollbackFor = Exception.class)
  156. public synchronized String insertOutboundResult(Map<String,Object> mapValue) throws Exception {
  157. if (DataChange.dataToBigDecimal(mapValue.get("reUpdateOutBound")).intValue() == 1) {
  158. reUpdateOutBound(mapValue);
  159. return "操作成功";
  160. }
  161. List<OyeOutboundResult> oyeOutboundResults = new ArrayList<>();
  162. List<TmstruckWeightBatch> tmstruckWeightBatches = new ArrayList<>();
  163. List<OyeRealtimeInventory> oyeRealtimeInventories = new ArrayList<>();
  164. List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
  165. System.out.println("===========" + new Date());
  166. JSONObject jsonObject = new JSONObject(mapValue);
  167. System.out.println(jsonObject);
  168. System.out.println("===========" + new Date());
  169. for (Map<String,Object> map : mapList) {
  170. //判断该拼是否出库
  171. if (oyeOutboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
  172. throw new Exception("该分录已出库,无法继续出库");
  173. }
  174. //根据实时库存ID获取单重
  175. BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
  176. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  177. BigDecimal singleWeight = oyeRealtimeInventoryMapper.getSingleWeight(inventoryId);
  178. BigDecimal theoryWeightSaleMaterial = singleWeight.multiply(materialNumber);
  179. OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
  180. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  181. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  182. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  183. if(materialNumber == null || materialNumber.intValue() == 0) {
  184. throw new Exception("物资件数错误");
  185. }
  186. if(netWeight == null || netWeight.intValue() == 0) {
  187. continue;
  188. }
  189. //查询比例
  190. BigDecimal compareValue = DataChange.dataToBigDecimal(oyeRealtimeInventoryMapper.selectCompareValue());
  191. BigDecimal theoryAdd = theoryWeightSaleMaterial.multiply(compareValue.add(new BigDecimal(1)));
  192. BigDecimal theorySub = theoryWeightSaleMaterial.multiply(new BigDecimal(1).subtract(compareValue));
  193. if (netWeight.compareTo(theoryAdd) > 0 || netWeight.compareTo(theorySub) < 0) {
  194. throw new Exception("净重不在理重的" + compareValue + "范围内");
  195. }
  196. //BigDecimal singleWeight = theoryWeight.divide(materialNumber);
  197. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  198. oyeOutboundResult.setResultId(oyeOutboundResultMapper.getResultId());
  199. oyeOutboundResult.setSaleArea(map.get("saleArea").toString());
  200. oyeOutboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  201. oyeOutboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
  202. oyeOutboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
  203. oyeOutboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
  204. oyeOutboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
  205. oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
  206. oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
  207. oyeOutboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  208. //更新制单日期
  209. oyeOutboundResult.setMeter(meter);
  210. oyeOutboundResult.setMaterialId(materialId);
  211. oyeOutboundResult.setTheoryWeight(theoryWeight);
  212. oyeOutboundResult.setSingleWeight(singleWeight);
  213. oyeOutboundResult.setNetWeight(netWeight);
  214. oyeOutboundResult.setMaterialNumber(materialNumber);
  215. oyeOutboundResult.setInsertUsername(map.get("userName") + "");
  216. oyeOutboundResult.setInsertTime(new Date());
  217. map.put("singleWeight",singleWeight);
  218. //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
  219. oyeOutboundResult.setInventoryId(inventoryId);
  220. map.put("inventoryId",inventoryId);
  221. map.put("flag",2);
  222. OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(map);
  223. //更新库存信息BUG修改
  224. //oyeRealtimeInventories.add(oyeRealtimeInventory);
  225. oyeRealtimeInventoryMapper.updateByPrimaryKey(oyeRealtimeInventory);
  226. TmstruckWeightBatch tmstruckWeightBatch = generateWeightBatch(map);
  227. tmstruckWeightBatches.add(tmstruckWeightBatch);
  228. Map<String, Object> updateMap = new HashMap<>();
  229. updateMap.put("weightBatchId",tmstruckWeightBatch.getWeightBatchId());
  230. updateMap.put("materialNumber",materialNumber);
  231. updateMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  232. updateMap.put("materialWeight",theoryWeight);
  233. oyeOutboundResultMapper.updateSaleMakeDate(updateMap);
  234. oyeOutboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
  235. oyeOutboundResults.add(oyeOutboundResult);
  236. }
  237. oyeOutboundResultMapper.batchInsert(oyeOutboundResults);
  238. //oyeRealtimeInventoryMapper.batchUpdate(oyeRealtimeInventories);
  239. tmstruckWeightBatchMapper.batchInsert(tmstruckWeightBatches);
  240. return "出库成功";
  241. }
  242. /**
  243. * 新增实时库存
  244. */
  245. @Transactional(rollbackFor = Exception.class)
  246. public synchronized OyeRealtimeInventory insertRealTimeInventory(Map<String,Object> map) {
  247. BigDecimal inventoryId = oyeRealtimeInventoryMapper.getResultId();
  248. OyeRealtimeInventory oyeRealtimeInventory = new OyeRealtimeInventory();
  249. oyeRealtimeInventory.setInventoryId(inventoryId);
  250. oyeRealtimeInventory.setSaleArea(map.get("saleArea").toString());
  251. oyeRealtimeInventory.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  252. oyeRealtimeInventory.setInboundWarehouse(map.get("inboundWarehouse").toString());
  253. oyeRealtimeInventory.setInboundArea(map.get("inboundArea").toString());
  254. oyeRealtimeInventory.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  255. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  256. if (meter != null && meter.intValue() != 0) {
  257. oyeRealtimeInventory.setMeter(meter);
  258. }
  259. oyeRealtimeInventory.setSingleWeight(DataChange.dataToBigDecimal(map.get("singleWeight")));
  260. oyeRealtimeInventory.setTheoryWeight(DataChange.dataToBigDecimal(map.get("theoryWeight")));
  261. oyeRealtimeInventory.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
  262. oyeRealtimeInventory.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  263. oyeRealtimeInventory.setInsertTime(new Date());
  264. return oyeRealtimeInventory;
  265. }
  266. /**
  267. * 更新实时库存(2025-4-10 14:00:22)
  268. */
  269. @Transactional(rollbackFor = Exception.class)
  270. public OyeRealtimeInventory updateRealTimeInventory(Map<String,Object> map) throws Exception {
  271. //更新实时库存
  272. BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
  273. // flag为1,则为入库,为2则为出库
  274. BigDecimal flag = DataChange.dataToBigDecimal(map.get("flag"));
  275. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  276. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  277. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  278. OyeRealtimeInventory oyeRealtimeInventory = oyeRealtimeInventoryMapper.selectByPrimaryKey(inventoryId);
  279. if (flag.compareTo(new BigDecimal(1)) == 0) {
  280. oyeRealtimeInventory.setNetWeight(oyeRealtimeInventory.getNetWeight().add(netWeight));
  281. oyeRealtimeInventory.setTheoryWeight(oyeRealtimeInventory.getTheoryWeight().add(theoryWeight));
  282. oyeRealtimeInventory.setMaterialNumber(oyeRealtimeInventory.getMaterialNumber().add(materialNumber));
  283. } else {
  284. BigDecimal realTimeTheoryWeight = oyeRealtimeInventory.getTheoryWeight();
  285. BigDecimal realTimeMaterialNumber = oyeRealtimeInventory.getMaterialNumber();
  286. BigDecimal realTimeNetWeight = oyeRealtimeInventory.getNetWeight();
  287. if (realTimeMaterialNumber.compareTo(materialNumber) >= 0 ) {
  288. oyeRealtimeInventory.setMaterialNumber(realTimeMaterialNumber.subtract(materialNumber));
  289. }else{
  290. throw new Exception("出库件数大于库存件数,无法出库");
  291. }
  292. oyeRealtimeInventory.setTheoryWeight(realTimeTheoryWeight.subtract(theoryWeight));
  293. oyeRealtimeInventory.setNetWeight(realTimeNetWeight.subtract(netWeight));
  294. }
  295. oyeRealtimeInventory.setUpdateTime(new Date());
  296. return oyeRealtimeInventory;
  297. }
  298. @Transactional(rollbackFor = Exception.class)
  299. public synchronized void updateRealTimeInventoryOye(Map<String,Object> map) throws Exception{
  300. OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(map);
  301. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventory);
  302. }
  303. @Transactional(rollbackFor = Exception.class)
  304. public TmstruckWeightBatch generateWeightBatch(Map<String,Object> map) {
  305. TmstruckWeightBatch tmstruckWeightBatch = new TmstruckWeightBatch();
  306. BigDecimal weightBatchId = tmstruckWeightBatchMapper.weightBatchID();
  307. tmstruckWeightBatch.setId(weightBatchId);
  308. tmstruckWeightBatch.setBatchNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  309. tmstruckWeightBatch.setBatchGrossWeightTime(new Date());
  310. tmstruckWeightBatch.setBatchRemark("出库生成批次");
  311. return tmstruckWeightBatch;
  312. }
  313. @Transactional(rollbackFor = Exception.class)
  314. public synchronized String updateInsertRealTime(Map<String, Object> map) throws Exception{
  315. System.out.println("===========" + new Date());
  316. JSONObject jsonObject = new JSONObject(map);
  317. System.out.println(jsonObject);
  318. System.out.println("===========" + new Date());
  319. // 划分实时库存数据
  320. // 针对原先的库存,需要进行出库;针对划分后的库存需要进行入库;先出后入;
  321. // 创建出库需要的数据;
  322. BigDecimal newInventoryId = DataChange.dataToBigDecimal(map.get("newInventoryId"));
  323. OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
  324. oyeOutboundResult.setId(oyeOutboundResultMapper.getResultId());
  325. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  326. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  327. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  328. if(materialNumber == null || materialNumber.intValue() == 0) {
  329. throw new Exception("物资件数错误");
  330. }
  331. BigDecimal singleWeight = DataChange.dataToBigDecimal(map.get("singleWeight"));
  332. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  333. oyeOutboundResult.setSaleArea(map.get("oldSaleArea").toString());
  334. oyeOutboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  335. oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
  336. oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
  337. //更新制单日期
  338. oyeOutboundResult.setMeter(meter);
  339. oyeOutboundResult.setMaterialId(materialId);
  340. oyeOutboundResult.setTheoryWeight(theoryWeight);
  341. oyeOutboundResult.setSingleWeight(singleWeight);
  342. oyeOutboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  343. oyeOutboundResult.setMaterialNumber(materialNumber);
  344. oyeOutboundResult.setInsertUsername(map.get("userName") + "");
  345. oyeOutboundResult.setInsertTime(new Date());
  346. oyeOutboundResult.setInventoryId(DataChange.dataToBigDecimal(map.get("inventoryId")));
  347. oyeOutboundResult.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
  348. oyeOutboundResult.setTheoryWeight(DataChange.dataToBigDecimal(map.get("theoryWeight")));
  349. oyeOutboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  350. Map<String, Object> outBoundMap = new HashMap<>();
  351. outBoundMap.put("inventoryId",map.get("inventoryId"));
  352. outBoundMap.put("materialNumber",oyeOutboundResult.getMaterialNumber());
  353. outBoundMap.put("netWeight",oyeOutboundResult.getNetWeight());
  354. outBoundMap.put("theoryWeight",oyeOutboundResult.getTheoryWeight());
  355. outBoundMap.put("flag",2);
  356. OyeRealtimeInventory oyeRealtimeInventoryOut = updateRealTimeInventory(outBoundMap);
  357. // 创建入库需要的数据
  358. OyeInboundResult oyeInboundResult = new OyeInboundResult();
  359. oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
  360. oyeInboundResult.setSaleArea(map.get("saleArea").toString());
  361. oyeInboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  362. oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
  363. oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
  364. oyeInboundResult.setMeter(meter);
  365. oyeInboundResult.setMaterialId(materialId);
  366. oyeInboundResult.setTheoryWeight(theoryWeight);
  367. oyeInboundResult.setSingleWeight(singleWeight);
  368. oyeInboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  369. oyeInboundResult.setMaterialNumber(materialNumber);
  370. oyeInboundResult.setInsertUsername(map.get("userName") + "");
  371. oyeInboundResult.setInsertTime(new Date());
  372. map.put("singleWeight",singleWeight);
  373. OyeRealtimeInventory oyeRealtimeInventoryInsert = null;
  374. OyeRealtimeInventory oyeRealtimeInventoryUpdate = null;
  375. //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
  376. BigDecimal inventoryId;
  377. if(newInventoryId.intValue() == 0) {
  378. inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
  379. }else{
  380. inventoryId = newInventoryId;
  381. }
  382. if (inventoryId != null && inventoryId.compareTo(DataChange.dataToBigDecimal(map.get("inventoryId"))) == 0) {
  383. throw new Exception("库存ID一致无法划分");
  384. }
  385. if (inventoryId == null) {
  386. //新增实时库存
  387. map.put("flag",1);
  388. oyeRealtimeInventoryInsert = insertRealTimeInventory(map);
  389. oyeInboundResult.setInventoryId(oyeRealtimeInventoryInsert.getInventoryId());
  390. }else{
  391. map.put("inventoryId",inventoryId);
  392. map.put("flag",1);
  393. oyeRealtimeInventoryUpdate = updateRealTimeInventory(map);
  394. oyeInboundResult.setInventoryId(oyeRealtimeInventoryUpdate.getInventoryId());
  395. }
  396. if (oyeRealtimeInventoryInsert != null) {
  397. oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventoryInsert);
  398. }
  399. if (oyeRealtimeInventoryUpdate != null) {
  400. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryUpdate);
  401. }
  402. oyeInboundResultMapper.insertSelective(oyeInboundResult);
  403. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryOut);
  404. oyeOutboundResultMapper.insertSelective(oyeOutboundResult);
  405. return "操作成功";
  406. }
  407. /**
  408. * 划拨实时库存重量
  409. * @param map
  410. * @return
  411. * @throws Exception
  412. */
  413. @Transactional(rollbackFor = Exception.class)
  414. public synchronized String updateInsertRealTimeWeight(Map<String, Object> map) throws Exception{
  415. System.out.println("===========" + new Date());
  416. JSONObject jsonObject = new JSONObject(map);
  417. System.out.println(jsonObject);
  418. System.out.println("===========" + new Date());
  419. // 划分实时库存数据
  420. // 针对原先的库存,需要进行出库;针对划分后的库存需要进行入库;先出后入;
  421. // 创建出库需要的数据;
  422. BigDecimal newInventoryId = DataChange.dataToBigDecimal(map.get("newInventoryId"));
  423. OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
  424. oyeOutboundResult.setId(oyeOutboundResultMapper.getResultId());
  425. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  426. BigDecimal singleWeight = DataChange.dataToBigDecimal(map.get("singleWeight"));
  427. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  428. map.put("materialNumber", map.get("materialNumberEdit"));
  429. map.put("theoryWeight", map.get("theoryWeightEdit"));
  430. map.put("netWeight", map.get("netWeightEdit"));
  431. //划拨件数
  432. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  433. //划拨理重
  434. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  435. //划拨净重
  436. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  437. //重量划拨,允许件数为0
  438. /*if(materialNumber == null || materialNumber.intValue() == 0) {
  439. throw new Exception("物资件数错误");
  440. }*/
  441. materialNumber = materialNumber == null || materialNumber.intValue() < 0 ? new BigDecimal(0) : materialNumber;
  442. oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
  443. oyeOutboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("oldConsigneeId")));
  444. oyeOutboundResult.setSaleArea(map.get("oldSaleArea").toString());
  445. oyeOutboundResult.setInboundWarehouse(map.get("oldInboundWarehouse").toString());
  446. //更新制单日期
  447. oyeOutboundResult.setMaterialId(materialId);
  448. oyeOutboundResult.setMeter(meter);
  449. oyeOutboundResult.setSingleWeight(singleWeight);
  450. oyeOutboundResult.setTheoryWeight(theoryWeight);
  451. oyeOutboundResult.setNetWeight(netWeight);
  452. oyeOutboundResult.setMaterialNumber(materialNumber);
  453. oyeOutboundResult.setInsertUsername(map.get("userName") + "");
  454. oyeOutboundResult.setInsertTime(new Date());
  455. oyeOutboundResult.setInventoryId(DataChange.dataToBigDecimal(map.get("inventoryId")));
  456. oyeOutboundResult.setAlternateFields2("库存重量划拨");
  457. oyeOutboundResult.setCapacityNumbher("库存重量划拨");
  458. Map<String, Object> outBoundMap = new HashMap<>();
  459. outBoundMap.put("inventoryId",map.get("inventoryId"));
  460. outBoundMap.put("materialNumber",oyeOutboundResult.getMaterialNumber());
  461. outBoundMap.put("netWeight",oyeOutboundResult.getNetWeight());
  462. outBoundMap.put("theoryWeight",oyeOutboundResult.getTheoryWeight());
  463. outBoundMap.put("flag",2);
  464. OyeRealtimeInventory oyeRealtimeInventoryOut = updateRealTimeInventory(outBoundMap);
  465. // 创建入库需要的数据
  466. OyeInboundResult oyeInboundResult = new OyeInboundResult();
  467. oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
  468. oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
  469. oyeInboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
  470. oyeInboundResult.setSaleArea(map.get("saleArea").toString());
  471. oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
  472. oyeInboundResult.setMeter(meter);
  473. oyeInboundResult.setMaterialId(materialId);
  474. oyeInboundResult.setSingleWeight(singleWeight);
  475. oyeInboundResult.setTheoryWeight(theoryWeight);
  476. oyeInboundResult.setNetWeight(netWeight);
  477. oyeInboundResult.setMaterialNumber(materialNumber);
  478. oyeInboundResult.setInsertUsername(map.get("userName") + "");
  479. oyeInboundResult.setInsertTime(new Date());
  480. oyeInboundResult.setAlternateFields2("库存重量划拨");
  481. oyeInboundResult.setCapacityNumbher("库存重量划拨");
  482. map.put("singleWeight",singleWeight);
  483. OyeRealtimeInventory oyeRealtimeInventoryInsert = null;
  484. OyeRealtimeInventory oyeRealtimeInventoryUpdate = null;
  485. //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
  486. BigDecimal inventoryId = null ;
  487. if(newInventoryId == null || newInventoryId.intValue() == 0) {
  488. inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
  489. }else{
  490. inventoryId = newInventoryId;
  491. }
  492. if (inventoryId != null && inventoryId.compareTo(DataChange.dataToBigDecimal(map.get("inventoryId"))) == 0) {
  493. throw new Exception("库存ID一致无法划分");
  494. }
  495. if (inventoryId == null) {
  496. //新增实时库存
  497. map.put("flag",1);
  498. oyeRealtimeInventoryInsert = insertRealTimeInventory(map);
  499. oyeInboundResult.setInventoryId(oyeRealtimeInventoryInsert.getInventoryId());
  500. }else{
  501. map.put("inventoryId",inventoryId);
  502. map.put("flag",1);
  503. oyeRealtimeInventoryUpdate = updateRealTimeInventory(map);
  504. oyeInboundResult.setInventoryId(oyeRealtimeInventoryUpdate.getInventoryId());
  505. }
  506. if (oyeRealtimeInventoryInsert != null) {
  507. oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventoryInsert);
  508. }
  509. if (oyeRealtimeInventoryUpdate != null) {
  510. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryUpdate);
  511. }
  512. oyeInboundResultMapper.insertSelective(oyeInboundResult);
  513. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryOut);
  514. oyeOutboundResultMapper.insertSelective(oyeOutboundResult);
  515. return "操作成功";
  516. }
  517. /**
  518. * 新厂钢材入库
  519. * @param map
  520. * @return
  521. * @throws Exception
  522. */
  523. @Transactional(rollbackFor = Exception.class)
  524. public synchronized String putNewFactory(Map<String, Object> map) throws Exception{
  525. map.put("inboundArea", "厂外库");
  526. System.out.println("+++++++++++" + new Date());
  527. JSONObject jsonObject = new JSONObject(map);
  528. System.out.println(jsonObject);
  529. System.out.println("+++++++++++" + new Date());
  530. // 新增新厂钢材入库数据
  531. //客户ID
  532. BigDecimal consigneeId = DataChange.dataToBigDecimal(map.get("consigneeId"));
  533. //片区
  534. String saleArea = map.get("saleArea") == null ? "" : map.get("saleArea").toString();
  535. //仓库
  536. String inboundWarehouse = map.get("inboundWarehouse") == null ? "" : map.get("inboundWarehouse").toString();
  537. //物资信息
  538. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  539. String materialName = map.get("materialName") == null ? "" : map.get("materialName").toString();
  540. BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
  541. //入库件数
  542. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  543. //入库净重
  544. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  545. if(!(consigneeId.doubleValue() > 0)) {
  546. throw new Exception("客户不能为空!");
  547. }
  548. if(saleArea.isEmpty()){
  549. throw new Exception("片区不能为空!");
  550. }
  551. if(inboundWarehouse.isEmpty()){
  552. throw new Exception("仓库不能为空!");
  553. }
  554. if(!(materialNumber.doubleValue() > 0)) {
  555. throw new Exception("物资件数错误!");
  556. }
  557. //重量划拨,允许件数为0
  558. if(!(materialId.doubleValue() > 0)) {
  559. throw new Exception("物资不能为空!");
  560. }
  561. if(!(netWeight.doubleValue() > 0)) {
  562. throw new Exception("物资净重不能为空!");
  563. }
  564. //入库理重
  565. BigDecimal theoryWeight;
  566. //单件理重
  567. BigDecimal singleWeight;
  568. if(materialName.contains("定尺")){
  569. singleWeight = DataChange.dataToBigDecimal(map.get("singleWeight"));
  570. if(!(singleWeight.doubleValue() > 0)){
  571. throw new RuntimeException("定尺类必须输入单件理重!");
  572. }
  573. if(!(meter.doubleValue() > 0)){
  574. throw new RuntimeException("定尺类必须输入米数!");
  575. }
  576. theoryWeight = singleWeight.multiply(materialNumber).setScale(3, RoundingMode.HALF_UP);
  577. } else {
  578. theoryWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  579. singleWeight = theoryWeight.divide(materialNumber, 3, RoundingMode.HALF_UP);
  580. }
  581. map.put("theoryWeight", theoryWeight);
  582. map.put("singleWeight", singleWeight);
  583. // 创建入库需要的数据
  584. OyeInboundResult oyeInboundResult = new OyeInboundResult();
  585. oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
  586. oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
  587. oyeInboundResult.setConsigneeId(consigneeId);
  588. oyeInboundResult.setSaleArea(saleArea);
  589. oyeInboundResult.setInboundWarehouse(inboundWarehouse);
  590. oyeInboundResult.setMeter(meter);
  591. oyeInboundResult.setMaterialId(materialId);
  592. oyeInboundResult.setSingleWeight(singleWeight);
  593. oyeInboundResult.setTheoryWeight(theoryWeight);
  594. oyeInboundResult.setNetWeight(netWeight);
  595. oyeInboundResult.setMaterialNumber(materialNumber);
  596. oyeInboundResult.setInsertUsername(map.get("userId") + "");
  597. oyeInboundResult.setInsertTime(new Date());
  598. oyeInboundResult.setAlternateFields2("新厂钢材入库");
  599. oyeInboundResult.setCapacityNumbher("新厂钢材入库");
  600. OyeRealtimeInventory oyeRealtimeInventoryInsert = null;
  601. OyeRealtimeInventory oyeRealtimeInventoryUpdate = null;
  602. //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
  603. BigDecimal inventoryId ;
  604. inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
  605. if (inventoryId == null) {
  606. //新增实时库存
  607. map.put("flag",1);
  608. oyeRealtimeInventoryInsert = insertRealTimeInventory(map);
  609. oyeInboundResult.setInventoryId(oyeRealtimeInventoryInsert.getInventoryId());
  610. }else{
  611. map.put("inventoryId",inventoryId);
  612. map.put("flag",1);
  613. oyeRealtimeInventoryUpdate = updateRealTimeInventory(map);
  614. oyeInboundResult.setInventoryId(oyeRealtimeInventoryUpdate.getInventoryId());
  615. }
  616. if (oyeRealtimeInventoryInsert != null) {
  617. oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventoryInsert);
  618. }
  619. if (oyeRealtimeInventoryUpdate != null) {
  620. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryUpdate);
  621. }
  622. oyeInboundResultMapper.insertSelective(oyeInboundResult);
  623. return "操作成功";
  624. }
  625. @Transactional(rollbackFor = Exception.class)
  626. public List<Map<String, Object>> receiveSendReport(Map<String, Object> map) {
  627. return oyeRealtimeInventoryMapper.receiveSendReport(map);
  628. }
  629. public int updateSingleWeight() {
  630. //
  631. //查找实时库存里面盘螺的
  632. List<BigDecimal> inventoryIds = oyeRealtimeInventoryMapper.getInventoryIds();
  633. //获取实时库存的理重
  634. for(BigDecimal inventoryId : inventoryIds) {
  635. //
  636. BigDecimal singleWeight = oyeRealtimeInventoryMapper.getSingleWeightByOIR(inventoryId);
  637. //
  638. OyeRealtimeInventory oyeRealtimeInventory = oyeRealtimeInventoryMapper.selectByPrimaryKey(inventoryId);
  639. oyeRealtimeInventory.setSingleWeight(singleWeight);
  640. oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventory);
  641. }
  642. return 1;
  643. }
  644. public int batchUpdateRealTime(Map<String,Object> mapValue) {
  645. //获取
  646. List<Map<String,Object>> mapList = oyeRealtimeInventoryMapper.getRealTimeGroupBy(mapValue);
  647. for(Map<String,Object> map : mapList) {
  648. if (DataChange.dataToBigDecimal(map.get("num")).intValue() > 1) {
  649. List<Map<String,Object>> mapList1 = oyeRealtimeInventoryMapper.getInventoryInfo(map);
  650. //第一个为移入,下一个为移出;
  651. for(int i=0;i < mapList1.size();i++ ){
  652. if(i == 0) {
  653. continue;
  654. }
  655. Map<String, Object> stringObjectMap = new HashMap<>();
  656. stringObjectMap.putAll(mapList1.get(0));
  657. Map<String,Object> realMap = mapList1.get(i);
  658. realMap.put("newInventoryId",stringObjectMap.get("inventoryId"));
  659. realMap.put("oldSaleArea",stringObjectMap.get("saleArea"));
  660. try {
  661. updateInsertRealTime(realMap);
  662. } catch (Exception e) {
  663. e.printStackTrace();
  664. }
  665. }
  666. }
  667. }
  668. return 1;
  669. }
  670. @Transactional(rollbackFor = Exception.class)
  671. public synchronized int reUpdateOutBound(Map<String, Object> mapValue) throws Exception {
  672. List<OyeOutboundResult> oyeOutboundResults = new ArrayList<>();
  673. List<TmstruckWeightBatch> tmstruckWeightBatches = new ArrayList<>();
  674. List<OyeRealtimeInventory> oyeRealtimeInventories = new ArrayList<>();
  675. List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
  676. System.out.println("===========" + new Date());
  677. JSONObject jsonObject = new JSONObject(mapValue);
  678. System.out.println(jsonObject);
  679. System.out.println("===========" + new Date());
  680. for (Map<String,Object> map : mapList) {
  681. BigDecimal resultId = DataChange.dataToBigDecimal(map.get("resultId"));
  682. BigDecimal weightBatchId = DataChange.dataToBigDecimal(map.get("weightBatchId"));
  683. //判断有没有实绩ID
  684. if(resultId == null || resultId.intValue() == 0) {
  685. continue;
  686. }
  687. //获取前端传输过来的件数、理重、净重
  688. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  689. BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
  690. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  691. if(materialNumber == null || materialNumber.intValue() == 0) {
  692. throw new Exception("物资件数错误");
  693. }
  694. if(theoryWeight == null || theoryWeight.intValue() == 0) {
  695. throw new Exception("理重信息错误");
  696. }
  697. if(netWeight == null || netWeight.intValue() == 0) {
  698. throw new Exception("净重信息错误");
  699. }
  700. //根据实绩id获取件数、理重、净重
  701. Map<String,Object> oldMes = oyeOutboundResultMapper.getOldMes(resultId);
  702. BigDecimal materialNumberOld = materialNumber.subtract(DataChange.dataToBigDecimal(oldMes.get("materialNumber")));
  703. BigDecimal netWeightOld = netWeight.subtract(DataChange.dataToBigDecimal(oldMes.get("netWeight")));
  704. BigDecimal theoryWeightOld = theoryWeight.subtract(DataChange.dataToBigDecimal(oldMes.get("theoryWeight")));
  705. if (netWeightOld.compareTo(new BigDecimal(0)) == 0 && theoryWeightOld.compareTo(new BigDecimal(0)) == 0
  706. && materialNumberOld.compareTo(new BigDecimal(0)) == 0) {
  707. continue;
  708. }
  709. OyeOutboundResult oyeOutboundResult = oyeOutboundResultMapper.selectByPrimaryKey(resultId);
  710. oyeOutboundResult.setTheoryWeight(theoryWeight);
  711. oyeOutboundResult.setNetWeight(netWeight);
  712. oyeOutboundResult.setMaterialNumber(materialNumber);
  713. oyeOutboundResult.setUpdateTime(new Date());
  714. map.put("flag",2);
  715. Map<String, Object> updateRealMap = new HashMap<>();
  716. updateRealMap.put("inventoryId",oldMes.get("inventoryId"));
  717. updateRealMap.put("materialNumber", materialNumberOld);
  718. updateRealMap.put("netWeight",netWeightOld);
  719. updateRealMap.put("theoryWeight",theoryWeightOld);
  720. OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(updateRealMap);
  721. //库存批量更新BUG
  722. //oyeRealtimeInventories.add(oyeRealtimeInventory);
  723. oyeRealtimeInventoryMapper.updateByPrimaryKey(oyeRealtimeInventory);
  724. TmstruckWeightBatch tmstruckWeightBatch = tmstruckWeightBatchMapper.selectByPrimaryKey(weightBatchId);
  725. tmstruckWeightBatch.setBatchNetWeight(netWeight);
  726. tmstruckWeightBatches.add(tmstruckWeightBatch);
  727. Map<String, Object> updateMap = new HashMap<>();
  728. updateMap.put("weightBatchId",tmstruckWeightBatch.getWeightBatchId());
  729. updateMap.put("materialNumber",materialNumber);
  730. updateMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
  731. updateMap.put("materialWeight",theoryWeight);
  732. oyeOutboundResultMapper.updateSaleMakeDate1(updateMap);
  733. oyeOutboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
  734. oyeOutboundResults.add(oyeOutboundResult);
  735. }
  736. if(oyeOutboundResults.isEmpty()){
  737. return 1;
  738. }
  739. oyeOutboundResultMapper.batchUpdate(oyeOutboundResults);
  740. //oyeRealtimeInventoryMapper.batchUpdate(oyeRealtimeInventories);
  741. tmstruckWeightBatchMapper.batchUpdate(tmstruckWeightBatches);
  742. return 1;
  743. }
  744. public void reportToExcel() {
  745. try {
  746. Calendar calendar = Calendar.getInstance();
  747. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
  748. String dateStr = simpleDateFormat.format(calendar.getTime());
  749. //1.设置写入文件夹地址和excel文件名称
  750. String filename = "/shared/" + dateStr + ".xlsx";
  751. //2.调用easyexcel里的方法实现写操作
  752. //String filename = "D:\\write.xlsx";
  753. //write方法的两个参数:第一个参数是:文件路径,第二个参数是:实体类的class
  754. List<ReceiveSendReport> list = new ArrayList<>();
  755. Map<String, Object> map = new HashMap<>();
  756. SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  757. DataChange.queryDataByDateTime(null,null,map,sdfDateTime);
  758. List<Map<String,Object>> mapList = oyeRealtimeInventoryMapper.receiveSendReport(map);
  759. String excelDate = sdfDateTime.format(new Date());
  760. for(Map<String,Object> mapVal : mapList) {
  761. mapVal.put("excelDate",excelDate);
  762. JSONObject jsonObject = new JSONObject(mapVal);
  763. String mapValToString = jsonObject.toString();
  764. ReceiveSendReport receiveSendReport = JSON.parseObject(mapValToString,ReceiveSendReport.class);
  765. list.add(receiveSendReport);
  766. }
  767. EasyExcel.write(filename, ReceiveSendReport.class).sheet("出入库台账报表").doWrite(list);
  768. } catch (Exception e) {
  769. e.printStackTrace();
  770. }
  771. }
  772. @Scheduled(cron = "59 59 23 * * ?")
  773. public synchronized void dsExportExcel() {
  774. reportToExcel();
  775. }
  776. }