123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588 |
- package com.steerinfo.dil.service.impl;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.steerinfo.dil.feign.BmsTruckFeign;
- import com.steerinfo.dil.mapper.OyeInboundResultMapper;
- import com.steerinfo.dil.mapper.OyeOutboundResultMapper;
- import com.steerinfo.dil.mapper.OyeRealtimeInventoryMapper;
- import com.steerinfo.dil.mapper.TmstruckWeightBatchMapper;
- import com.steerinfo.dil.model.*;
- import com.steerinfo.dil.service.IOyeResultService;
- import com.steerinfo.dil.util.DataChange;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Service
- public class OyeResultServiceImpl implements IOyeResultService {
- @Resource
- OyeInboundResultMapper oyeInboundResultMapper;
- @Resource
- OyeOutboundResultMapper oyeOutboundResultMapper;
- @Resource
- OyeRealtimeInventoryMapper oyeRealtimeInventoryMapper;
- @Resource
- TmstruckWeightBatchMapper tmstruckWeightBatchMapper;
- @Resource
- BmsTruckFeign bmsTruckFeign;
- public List<Map<String, Object>> getOyeInboundResult(Map<String, Object> mapValue) {
- List<Map<String,Object>> mapList = oyeInboundResultMapper.getOyeInboundResult(mapValue);
- int i = 0;
- for (Map<String,Object> map : mapList) {
- if(i == 0) {
- i++;
- continue;
- }
- Map<String,Object> stringObjectMap = mapList.get(i-1);
- if (DataChange.dataToBigDecimal(stringObjectMap.get("weightBatchId")).compareTo(DataChange.dataToBigDecimal(map.get("weightBatchId"))) == 0) {
- map.put("netWeight",0);
- map.put("orderNetWeight",0);
- }
- i++;
- }
- return mapList;
- }
- public List<Map<String, Object>> getOyeOutboundResult(Map<String, Object> mapValue) {
- return oyeOutboundResultMapper.oyeOutboundResultMapper(mapValue);
- }
- public List<Map<String, Object>> getOyeRealTimeResult(Map<String, Object> mapValue) {
- return oyeRealtimeInventoryMapper.getOyeRealTimeResult(mapValue);
- }
- /**
- * 入库作业
- * @param mapValue
- * @return
- */
- public synchronized String insertInboundResult(Map<String, Object> mapValue) throws Exception {
- List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
- System.out.println("===========" + new Date());
- JSONObject jsonObject = new JSONObject(mapValue);
- System.out.println(jsonObject);
- System.out.println("===========" + new Date());
- for (Map<String,Object> map : mapList) {
- //判断该拼是否入库
- if (oyeInboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
- throw new Exception("该分录已入库,无法继续入库");
- }
- //判断该分录是否有净重
- if (DataChange.dataToBigDecimal(map.get("netWeight")) == null || DataChange.dataToBigDecimal(map.get("netWeight")).intValue() == 0) {
- throw new Exception("该分录无净重,不允许入库");
- }
- }
- for (Map<String,Object> map : mapList) {
- insertInboundResultReal(map);
- }
- return "入库成功";
- }
- @Transactional(rollbackFor = Exception.class)
- public synchronized int insertInboundResultReal(Map<String,Object> map) throws Exception {
- int i = 0;
- //根据分录ID查询理重
- BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
- BigDecimal theoryWeightSaleMaterial = oyeRealtimeInventoryMapper.getTheoryWeight(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- BigDecimal singleWeight = theoryWeightSaleMaterial.divide(materialNumber,4,BigDecimal.ROUND_HALF_UP);
- //根据分录理重
- OyeInboundResult oyeInboundResult = new OyeInboundResult();
- BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
- BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
- BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
- oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
- oyeInboundResult.setSaleArea(map.get("saleArea").toString());
- oyeInboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
- oyeInboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
- oyeInboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
- oyeInboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- oyeInboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
- oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
- oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
- oyeInboundResult.setSaleNo(map.get("saleNo") + "");
- if (meter != null && meter.intValue() != 0) {
- oyeInboundResult.setMeter(meter);
- }
- oyeInboundResult.setMaterialId(materialId);
- oyeInboundResult.setTheoryWeight(theoryWeight);
- oyeInboundResult.setSingleWeight(singleWeight);
- oyeInboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- oyeInboundResult.setMaterialNumber(materialNumber);
- oyeInboundResult.setInsertUsername(map.get("userName") + "");
- oyeInboundResult.setInsertTime(new Date());
- map.put("singleWeight",singleWeight);
- //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
- BigDecimal inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
- if (inventoryId == null) {
- //新增实时库存
- map.put("flag",1);
- OyeRealtimeInventory oyeRealtimeInventory = insertRealTimeInventory(map);
- oyeInboundResult.setInventoryId(oyeRealtimeInventory.getInventoryId());
- map.put("inventoryId",oyeRealtimeInventory.getInventoryId());
- oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventory);
- }else{
- map.put("inventoryId",inventoryId);
- map.put("flag",1);
- OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(map);
- oyeInboundResult.setInventoryId(oyeRealtimeInventory.getInventoryId());
- oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventory);
- }
- if (!map.get("place").equals(map.get("inboundWarehouse"))) {
- //如果收货地址与place,则需要修改收货地址
- BigDecimal newPlaceId = oyeInboundResultMapper.getPlaceId(map.get("inboundWarehouse").toString());
- //修改收货地址
- Map<String, Object> addressMap = new HashMap<>();
- addressMap.put("newPlaceId",newPlaceId);
- addressMap.put("placeId",DataChange.dataToBigDecimal(map.get("placeId")));
- addressMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- oyeInboundResultMapper.updateAddressPlace(addressMap);
- }
- //判断该运单有没有签收实绩
- String receiptAddress = oyeInboundResultMapper.selectReceiptResultId(DataChange.dataToBigDecimal(map.get("orderId")));
- if(receiptAddress != null) {
- oyeInboundResultMapper.updateOOOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
- }
- // 修改运单状态
- oyeInboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
- //新增入库实绩
- oyeInboundResultMapper.insertSelective(oyeInboundResult);
- return i;
- }
- @Transactional(rollbackFor = Exception.class)
- public synchronized String insertOutboundResult(Map<String,Object> mapValue) throws Exception {
- if (DataChange.dataToBigDecimal(mapValue.get("reUpdateOutBound")).intValue() == 1) {
- reUpdateOutBound(mapValue);
- return "操作成功";
- }
- List<OyeOutboundResult> oyeOutboundResults = new ArrayList<>();
- List<TmstruckWeightBatch> tmstruckWeightBatches = new ArrayList<>();
- List<OyeRealtimeInventory> oyeRealtimeInventories = new ArrayList<>();
- List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
- System.out.println("===========" + new Date());
- JSONObject jsonObject = new JSONObject(mapValue);
- System.out.println(jsonObject);
- System.out.println("===========" + new Date());
- for (Map<String,Object> map : mapList) {
- //判断该拼是否出库
- if (oyeOutboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
- throw new Exception("该分录已出库,无法继续出库");
- }
- //根据实时库存ID获取单重
- BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
- BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
- BigDecimal singleWeight = oyeRealtimeInventoryMapper.getSingleWeight(inventoryId);
- BigDecimal theoryWeightSaleMaterial = singleWeight.multiply(materialNumber);
- OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
- BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
- BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
- BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
- if(materialNumber == null || materialNumber.intValue() == 0) {
- throw new Exception("物资件数错误");
- }
- if(netWeight == null || netWeight.intValue() == 0) {
- continue;
- }
- //查询比例
- BigDecimal compareValue = DataChange.dataToBigDecimal(oyeRealtimeInventoryMapper.selectCompareValue());
- BigDecimal theoryAdd = theoryWeightSaleMaterial.multiply(compareValue.add(new BigDecimal(1)));
- BigDecimal theorySub = theoryWeightSaleMaterial.multiply(new BigDecimal(1).subtract(compareValue));
- if (netWeight.compareTo(theoryAdd) > 0 || netWeight.compareTo(theorySub) < 0) {
- throw new Exception("净重不在理重的" + compareValue + "范围内");
- }
- //BigDecimal singleWeight = theoryWeight.divide(materialNumber);
- BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
- oyeOutboundResult.setResultId(oyeOutboundResultMapper.getResultId());
- oyeOutboundResult.setSaleArea(map.get("saleArea").toString());
- oyeOutboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
- oyeOutboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
- oyeOutboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
- oyeOutboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
- oyeOutboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
- oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
- oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
- oyeOutboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- //更新制单日期
- oyeOutboundResult.setMeter(meter);
- oyeOutboundResult.setMaterialId(materialId);
- oyeOutboundResult.setTheoryWeight(theoryWeight);
- oyeOutboundResult.setSingleWeight(singleWeight);
- oyeOutboundResult.setNetWeight(netWeight);
- oyeOutboundResult.setMaterialNumber(materialNumber);
- oyeOutboundResult.setInsertUsername(map.get("userName") + "");
- oyeOutboundResult.setInsertTime(new Date());
- map.put("singleWeight",singleWeight);
- //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
- oyeOutboundResult.setInventoryId(inventoryId);
- map.put("inventoryId",inventoryId);
- map.put("flag",2);
- OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(map);
- oyeRealtimeInventories.add(oyeRealtimeInventory);
- TmstruckWeightBatch tmstruckWeightBatch = generateWeightBatch(map);
- tmstruckWeightBatches.add(tmstruckWeightBatch);
- Map<String, Object> updateMap = new HashMap<>();
- updateMap.put("weightBatchId",tmstruckWeightBatch.getWeightBatchId());
- updateMap.put("materialNumber",materialNumber);
- updateMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- updateMap.put("materialWeight",theoryWeight);
- oyeOutboundResultMapper.updateSaleMakeDate(updateMap);
- oyeOutboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
- oyeOutboundResults.add(oyeOutboundResult);
- }
- oyeOutboundResultMapper.batchInsert(oyeOutboundResults);
- oyeRealtimeInventoryMapper.batchUpdate(oyeRealtimeInventories);
- tmstruckWeightBatchMapper.batchInsert(tmstruckWeightBatches);
- return "出库成功";
- }
- /**
- * 新增实时库存
- */
- @Transactional(rollbackFor = Exception.class)
- public synchronized OyeRealtimeInventory insertRealTimeInventory(Map<String,Object> map) {
- BigDecimal inventoryId = oyeRealtimeInventoryMapper.getResultId();
- OyeRealtimeInventory oyeRealtimeInventory = new OyeRealtimeInventory();
- oyeRealtimeInventory.setInventoryId(inventoryId);
- oyeRealtimeInventory.setSaleArea(map.get("saleArea").toString());
- oyeRealtimeInventory.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
- oyeRealtimeInventory.setInboundWarehouse(map.get("inboundWarehouse").toString());
- oyeRealtimeInventory.setInboundArea(map.get("inboundArea").toString());
- oyeRealtimeInventory.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
- BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
- if (meter != null && meter.intValue() != 0) {
- oyeRealtimeInventory.setMeter(meter);
- }
- oyeRealtimeInventory.setSingleWeight(DataChange.dataToBigDecimal(map.get("singleWeight")));
- oyeRealtimeInventory.setTheoryWeight(DataChange.dataToBigDecimal(map.get("theoryWeight")));
- oyeRealtimeInventory.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
- oyeRealtimeInventory.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- oyeRealtimeInventory.setInsertTime(new Date());
- return oyeRealtimeInventory;
- }
- /**
- * 更新实时库存
- */
- @Transactional(rollbackFor = Exception.class)
- public synchronized OyeRealtimeInventory updateRealTimeInventory(Map<String,Object> map) throws Exception {
- //更新实时库存
- BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
- // flag为1,则为入库,为2则为出库
- BigDecimal flag = DataChange.dataToBigDecimal(map.get("flag"));
- BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
- BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
- BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
- OyeRealtimeInventory oyeRealtimeInventory = oyeRealtimeInventoryMapper.selectByPrimaryKey(inventoryId);
- if (flag.compareTo(new BigDecimal(1)) == 0) {
- oyeRealtimeInventory.setNetWeight(oyeRealtimeInventory.getNetWeight().add(netWeight));
- oyeRealtimeInventory.setTheoryWeight(oyeRealtimeInventory.getTheoryWeight().add(theoryWeight));
- oyeRealtimeInventory.setMaterialNumber(oyeRealtimeInventory.getMaterialNumber().add(materialNumber));
- } else {
- BigDecimal realTimeTheoryWeight = oyeRealtimeInventory.getTheoryWeight();
- BigDecimal realTimeMaterialNumber = oyeRealtimeInventory.getMaterialNumber();
- BigDecimal realTimeNetWeight = oyeRealtimeInventory.getNetWeight();
- if (realTimeTheoryWeight.compareTo(theoryWeight) >= 0) {
- oyeRealtimeInventory.setTheoryWeight(realTimeTheoryWeight.subtract(theoryWeight));
- }
- if (realTimeMaterialNumber.compareTo(materialNumber) >= 0 ) {
- oyeRealtimeInventory.setMaterialNumber(realTimeMaterialNumber.subtract(materialNumber));
- }else{
- throw new Exception("出库件数大于库存件数,无法出库");
- }
- oyeRealtimeInventory.setNetWeight(realTimeNetWeight.subtract(netWeight));
- }
- return oyeRealtimeInventory;
- }
- @Transactional(rollbackFor = Exception.class)
- public TmstruckWeightBatch generateWeightBatch(Map<String,Object> map) {
- TmstruckWeightBatch tmstruckWeightBatch = new TmstruckWeightBatch();
- BigDecimal weightBatchId = tmstruckWeightBatchMapper.weightBatchID();
- tmstruckWeightBatch.setId(weightBatchId);
- tmstruckWeightBatch.setBatchNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- tmstruckWeightBatch.setBatchGrossWeightTime(new Date());
- tmstruckWeightBatch.setBatchRemark("出库生成批次");
- return tmstruckWeightBatch;
- }
- @Transactional(rollbackFor = Exception.class)
- public synchronized String updateInsertRealTime(Map<String, Object> map) throws Exception{
- System.out.println("===========" + new Date());
- JSONObject jsonObject = new JSONObject(map);
- System.out.println(jsonObject);
- System.out.println("===========" + new Date());
- // 划分实时库存数据
- // 针对原先的库存,需要进行出库;针对划分后的库存需要进行入库;先出后入;
- // 创建出库需要的数据;
- Map<String, Object> jiChuMap = new HashMap<>();
- jiChuMap.put("inventoryId",map.get("inventoryId"));
- BigDecimal newInventoryId = DataChange.dataToBigDecimal(map.get("newInventoryId"));
- OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
- oyeOutboundResult.setId(oyeOutboundResultMapper.getResultId());
- BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
- BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
- BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
- if(materialNumber == null || materialNumber.intValue() == 0) {
- throw new Exception("物资件数错误");
- }
- BigDecimal singleWeight = DataChange.dataToBigDecimal(map.get("singleWeight"));
- BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
- oyeOutboundResult.setSaleArea(map.get("oldSaleArea").toString());
- oyeOutboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
- oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
- oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
- //更新制单日期
- oyeOutboundResult.setMeter(meter);
- oyeOutboundResult.setMaterialId(materialId);
- oyeOutboundResult.setTheoryWeight(theoryWeight);
- oyeOutboundResult.setSingleWeight(singleWeight);
- oyeOutboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- oyeOutboundResult.setMaterialNumber(materialNumber);
- oyeOutboundResult.setInsertUsername(map.get("userName") + "");
- oyeOutboundResult.setInsertTime(new Date());
- oyeOutboundResult.setInventoryId(DataChange.dataToBigDecimal(map.get("inventoryId")));
- oyeOutboundResult.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
- oyeOutboundResult.setTheoryWeight(DataChange.dataToBigDecimal(map.get("theoryWeight")));
- oyeOutboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- Map<String, Object> outBoundMap = new HashMap<>();
- outBoundMap.put("inventoryId",map.get("inventoryId"));
- outBoundMap.put("materialNumber",oyeOutboundResult.getMaterialNumber());
- outBoundMap.put("netWeight",oyeOutboundResult.getNetWeight());
- outBoundMap.put("theoryWeight",oyeOutboundResult.getTheoryWeight());
- outBoundMap.put("flag",2);
- OyeRealtimeInventory oyeRealtimeInventoryOut = updateRealTimeInventory(outBoundMap);
- // 创建入库需要的数据
- OyeInboundResult oyeInboundResult = new OyeInboundResult();
- oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
- oyeInboundResult.setSaleArea(map.get("saleArea").toString());
- oyeInboundResult.setConsigneeId(DataChange.dataToBigDecimal(map.get("consigneeId")));
- oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
- oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
- oyeInboundResult.setMeter(meter);
- oyeInboundResult.setMaterialId(materialId);
- oyeInboundResult.setTheoryWeight(theoryWeight);
- oyeInboundResult.setSingleWeight(singleWeight);
- oyeInboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
- oyeInboundResult.setMaterialNumber(materialNumber);
- oyeInboundResult.setInsertUsername(map.get("userName") + "");
- oyeInboundResult.setInsertTime(new Date());
- map.put("singleWeight",singleWeight);
- OyeRealtimeInventory oyeRealtimeInventoryInsert = null;
- OyeRealtimeInventory oyeRealtimeInventoryUpdate = null;
- //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
- BigDecimal inventoryId = null ;
- if(newInventoryId == null || newInventoryId.intValue() == 0) {
- inventoryId = oyeRealtimeInventoryMapper.getInventoryId(map);
- }else{
- inventoryId = newInventoryId;
- }
- if (inventoryId != null && inventoryId.compareTo(DataChange.dataToBigDecimal(map.get("inventoryId"))) == 0) {
- throw new Exception("库存ID一致无法划分");
- }
- if (inventoryId == null) {
- //新增实时库存
- map.put("flag",1);
- oyeRealtimeInventoryInsert = insertRealTimeInventory(map);
- oyeInboundResult.setInventoryId(oyeRealtimeInventoryInsert.getInventoryId());
- }else{
- map.put("inventoryId",inventoryId);
- map.put("flag",1);
- oyeRealtimeInventoryUpdate = updateRealTimeInventory(map);
- oyeInboundResult.setInventoryId(oyeRealtimeInventoryUpdate.getInventoryId());
- }
- if (oyeRealtimeInventoryInsert != null) {
- oyeRealtimeInventoryMapper.insertSelective(oyeRealtimeInventoryInsert);
- }
- if (oyeRealtimeInventoryUpdate != null) {
- oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryUpdate);
- }
- oyeInboundResultMapper.insertSelective(oyeInboundResult);
- oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventoryOut);
- oyeOutboundResultMapper.insertSelective(oyeOutboundResult);
- return "操作成功";
- }
- @Transactional(rollbackFor = Exception.class)
- public List<Map<String, Object>> receiveSendReport(Map<String, Object> map) {
- return oyeRealtimeInventoryMapper.receiveSendReport(map);
- }
- public int updateSingleWeight() {
- //
- //查找实时库存里面盘螺的
- List<BigDecimal> inventoryIds = oyeRealtimeInventoryMapper.getInventoryIds();
- //获取实时库存的理重
- for(BigDecimal inventoryId : inventoryIds) {
- //
- BigDecimal singleWeight = oyeRealtimeInventoryMapper.getSingleWeightByOIR(inventoryId);
- //
- OyeRealtimeInventory oyeRealtimeInventory = oyeRealtimeInventoryMapper.selectByPrimaryKey(inventoryId);
- oyeRealtimeInventory.setSingleWeight(singleWeight);
- oyeRealtimeInventoryMapper.updateByPrimaryKeySelective(oyeRealtimeInventory);
- }
- return 1;
- }
- public int batchUpdateRealTime(Map<String,Object> mapValue) {
- //获取
- List<Map<String,Object>> mapList = oyeRealtimeInventoryMapper.getRealTimeGroupBy(mapValue);
- for(Map<String,Object> map : mapList) {
- if (DataChange.dataToBigDecimal(map.get("num")).intValue() > 1) {
- List<Map<String,Object>> mapList1 = oyeRealtimeInventoryMapper.getInventoryInfo(map);
- //第一个为移入,下一个为移出;
- for(int i=0;i < mapList1.size();i++ ){
- if(i == 0) {
- continue;
- }
- Map<String, Object> stringObjectMap = new HashMap<>();
- stringObjectMap.putAll(mapList1.get(0));
- Map<String,Object> realMap = mapList1.get(i);
- realMap.put("newInventoryId",stringObjectMap.get("inventoryId"));
- realMap.put("oldSaleArea",stringObjectMap.get("saleArea"));
- try {
- updateInsertRealTime(realMap);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- return 1;
- }
- @Transactional(rollbackFor = Exception.class)
- public int reUpdateOutBound(Map<String, Object> mapValue) throws Exception {
- List<OyeOutboundResult> oyeOutboundResults = new ArrayList<>();
- List<TmstruckWeightBatch> tmstruckWeightBatches = new ArrayList<>();
- List<OyeRealtimeInventory> oyeRealtimeInventories = new ArrayList<>();
- List<Map<String,Object>> mapList = (List<Map<String,Object>>) mapValue.get("mapList");
- System.out.println("===========" + new Date());
- JSONObject jsonObject = new JSONObject(mapValue);
- System.out.println(jsonObject);
- System.out.println("===========" + new Date());
- for (Map<String,Object> map : mapList) {
- BigDecimal resultId = DataChange.dataToBigDecimal(map.get("resultId"));
- BigDecimal weightBatchId = DataChange.dataToBigDecimal(map.get("weightBatchId"));
- //判断有没有实绩ID
- if(resultId == null || resultId.intValue() == 0) {
- continue;
- }
- //获取前端传输过来的件数、理重、净重
- BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
- BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
- BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
- if(materialNumber == null || materialNumber.intValue() == 0) {
- throw new Exception("物资件数错误");
- }
- if(theoryWeight == null || theoryWeight.intValue() == 0) {
- throw new Exception("理重信息错误");
- }
- if(netWeight == null || netWeight.intValue() == 0) {
- throw new Exception("净重信息错误");
- }
- //根据实绩id获取件数、理重、净重
- Map<String,Object> oldMes = oyeOutboundResultMapper.getOldMes(resultId);
- BigDecimal netWeightSub = netWeight.subtract(DataChange.dataToBigDecimal(oldMes.get("netWeight")));
- BigDecimal theoryWeightSub = theoryWeight.subtract(DataChange.dataToBigDecimal(oldMes.get("theoryWeight")));
- if (netWeightSub.compareTo(new BigDecimal(0)) == 0 && theoryWeightSub.compareTo(new BigDecimal(0)) == 0) {
- continue;
- }
- OyeOutboundResult oyeOutboundResult = oyeOutboundResultMapper.selectByPrimaryKey(resultId);
- oyeOutboundResult.setTheoryWeight(theoryWeight);
- oyeOutboundResult.setNetWeight(netWeight);
- oyeOutboundResult.setMaterialNumber(materialNumber);
- oyeOutboundResult.setUpdateTime(new Date());
- map.put("flag",2);
- Map<String, Object> updateRealMap = new HashMap<>();
- updateRealMap.put("inventoryId",oldMes.get("inventoryId"));
- updateRealMap.put("materialNumber",materialNumber.subtract(DataChange.dataToBigDecimal(oldMes.get("materialNumber"))));
- updateRealMap.put("netWeight",netWeightSub);
- updateRealMap.put("theoryWeight",theoryWeightSub);
- OyeRealtimeInventory oyeRealtimeInventory = updateRealTimeInventory(updateRealMap);
- oyeRealtimeInventories.add(oyeRealtimeInventory);
- TmstruckWeightBatch tmstruckWeightBatch = tmstruckWeightBatchMapper.selectByPrimaryKey(weightBatchId);
- tmstruckWeightBatch.setBatchNetWeight(netWeight);
- tmstruckWeightBatches.add(tmstruckWeightBatch);
- Map<String, Object> updateMap = new HashMap<>();
- updateMap.put("weightBatchId",tmstruckWeightBatch.getWeightBatchId());
- updateMap.put("materialNumber",materialNumber);
- updateMap.put("saleMaterialId",DataChange.dataToBigDecimal(map.get("saleMaterialId")));
- updateMap.put("materialWeight",theoryWeight);
- oyeOutboundResultMapper.updateSaleMakeDate1(updateMap);
- oyeOutboundResultMapper.updateOrderStatus(DataChange.dataToBigDecimal(map.get("orderId")));
- oyeOutboundResults.add(oyeOutboundResult);
- }
- oyeOutboundResultMapper.batchUpdate(oyeOutboundResults);
- oyeRealtimeInventoryMapper.batchUpdate(oyeRealtimeInventories);
- tmstruckWeightBatchMapper.batchUpdate(tmstruckWeightBatches);
- return 1;
- }
- public void reportToExcel() {
- try {
- Calendar calendar = Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH) + 1;
- int day = calendar.get(Calendar.DAY_OF_MONTH);
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- String dateStr = simpleDateFormat.format(calendar.getTime());
- //实现写操作
- //1.设置写入文件夹地址和excel文件名称
- String filename = "/shared/" + dateStr + ".xlsx";
- //2.调用easyexcel里的方法实现写操作
- //String filename = "D:\\write.xlsx";
- //write方法的两个参数:第一个参数是:文件路径,第二个参数是:实体类的class
- List<ReceiveSendReport> list = new ArrayList<>();
- Map<String, Object> map = new HashMap<>();
- SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- DataChange.queryDataByDateTime(null,null,map,sdfDateTime);
- List<Map<String,Object>> mapList = oyeRealtimeInventoryMapper.receiveSendReport(map);
- for(Map<String,Object> mapVal : mapList) {
- JSONObject jsonObject = new JSONObject(mapVal);
- String mapValToString = jsonObject.toString();
- ReceiveSendReport receiveSendReport = JSON.parseObject(mapValToString,ReceiveSendReport.class);
- list.add(receiveSendReport);
- }
- EasyExcel.write(filename, ReceiveSendReport.class).sheet("出入库台账报表").doWrite(list);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Scheduled(cron = "0 40 10 * * ?")
- public synchronized void dsExportExcel() {
- reportToExcel();
- }
- }
|