package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.OmstruckOrderMapper; import com.steerinfo.dil.mapper.OmstruckOrderMaterialMapper; import com.steerinfo.dil.mapper.RmsCapacityMapper; import com.steerinfo.dil.mapper.RmsPwarehouseGridMapper; import com.steerinfo.dil.model.OmstruckOrderMaterial; import com.steerinfo.dil.model.RmsCapacity; import com.steerinfo.dil.model.RmsPwarehouseGrid; import com.steerinfo.dil.service.IOmstruckOrderMaterialService; import com.steerinfo.dil.util.DataChange; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; /** * OmstruckOrderMaterial服务实现: * * @author TXF * @version 1.0-SNAPSHORT 2021-09-03 04:55 * 类描述 * 修订历史: * 日期:2021-09-03 * 作者:generator * 参考: * 描述:OmstruckOrderMaterial服务实现 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. * @see null */ @Service(value = "omstruckOrderMaterialService") public class OmstruckOrderMaterialServiceImpl implements IOmstruckOrderMaterialService { @Autowired private OmstruckOrderMapper omstruckOrderMapper; @Autowired private OmstruckOrderMaterialMapper omstruckOrderMaterialMapper; @Autowired RmsCapacityMapper rmsCapacityMapper; @Autowired RmsPwarehouseGridMapper rmsPwarehouseGridMapper; /** * 远程调用订单子表新增 * * @param omstruckOrderMaterial * @return */ @Override public int insertSelective(OmstruckOrderMaterial omstruckOrderMaterial) { return omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial); } /** * 仓库 * @return */ @Override public List> warehouseId() { return rmsCapacityMapper.warehouseId(); } /** * 月台 * @return */ @Override public List> platformId() { return rmsCapacityMapper.platformId(); } /** * 垛位 * @return */ @Override public List> stackingId() { return rmsCapacityMapper.stackingId(); } /** * 主键 * @return */ @Override public BigDecimal gridId() { return rmsCapacityMapper.gridId(); } @Override public int insertSelective(RmsPwarehouseGrid rmsPwarehouseGrid) { return rmsPwarehouseGridMapper.insertSelective(rmsPwarehouseGrid); } @Override public int insertGrid() { int count = 0; // 仓库 List> warehouseIdList = warehouseId(); // 月台 List> platformIdList = platformId(); // 垛位 List> stackingIdList = stackingId(); // 遍历仓库 for (Map warehouseIdMap : warehouseIdList) { BigDecimal warehouseId = (BigDecimal) warehouseIdMap.get("warehouseId"); // 遍历月台 for (Map platformIdMap : platformIdList) { BigDecimal platformId = (BigDecimal) platformIdMap.get("platformId"); // 遍历垛位 for (Map stackingIdMap : stackingIdList) { BigDecimal stackingId = (BigDecimal) stackingIdMap.get("stackingId"); // 遍历层次 for (int i = 1; i <= 25; i++) { // 遍历层序 for (int j = 1; j <= 24; j++) { // 一棒库时 if (warehouseId.intValue() == 1) { // A月台 if (platformId.intValue() == 1) { // A月台的垛位 if (stackingId.intValue() == 1) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } // B月台 if (platformId.intValue() == 1) { // B月台的垛位: 2-8 if (stackingId.intValue() >= 2 && stackingId.intValue() <= 8) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } } // 二棒库时: if (warehouseId.intValue() == 2) { // A月台 if (platformId.intValue() == 3) { // A月台的垛位 : 1-3 if (stackingId.intValue() >= 41 && stackingId.intValue() <= 43) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } // B月台 if (platformId.intValue() == 4) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); insertSelective(rmsPwarehouseGrid); count++; } // C月台 if (platformId.intValue() == 5) { // C月台的垛位:4-18 if (stackingId.intValue() >= 44 && stackingId.intValue() <= 58) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } // D月台 if (platformId.intValue() == 6) { // D月台的垛位:19 if (stackingId.intValue() == 59) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } } // 配送库时: if (warehouseId.intValue() == 4) { // A月台 if (platformId.intValue() == 8) { // A月台的垛位:8-14 || 24-32 if ((stackingId.intValue() >= 16 && stackingId.intValue() <= 22) || (stackingId.intValue() >= 32 && stackingId.intValue() <= 40)) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } // B月台 if (platformId.intValue() == 9) { // B月台的垛位:1-7 || 15-23 if ((stackingId.intValue() >= 9 && stackingId.intValue() <= 15) || (stackingId.intValue() >= 23 && stackingId.intValue() <= 31)) { RmsPwarehouseGrid rmsPwarehouseGrid = new RmsPwarehouseGrid(); BigDecimal gridId = gridId(); rmsPwarehouseGrid.setGridId(gridId); rmsPwarehouseGrid.setWarehouseId(warehouseId); rmsPwarehouseGrid.setPlatformId(platformId); rmsPwarehouseGrid.setStackingId(stackingId); rmsPwarehouseGrid.setGridGradationNumber(new BigDecimal(i)); rmsPwarehouseGrid.setGridSequenceNumber(new BigDecimal(j)); insertSelective(rmsPwarehouseGrid); count++; } } } } } } } } System.out.println(count); return count; } /** * 车牌号 * @param capacityId * @return */ public List> getSteelOrderNum(String capacityId){ return omstruckOrderMaterialMapper.getSteelOrderNumByCapacityNumber(new BigDecimal(capacityId)); } /** * 查询订单信息给钢材科 * @param orderId * @return */ public Map getMesToSteelDepartment(Integer orderId){ Map map = new HashMap<>(); map.put("orderId", orderId); map.put("status", 333); Map returnMap = omstruckOrderMapper.getSteelOrderMessageToApp(map); returnMap.put("materialMes", omstruckOrderMaterialMapper.getOrderMaterial(orderId)); return returnMap; } /** * 更新物资信息 * @param map * @return */ @Transactional public int updateMaterialMes(Map map) { OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial(); List>mapList = (List>) map.get("mapList"); Object orderIds = map.get("orderId"); Object saleOrderMaterialId = map.get("saleOrderMaterialId"); for (Mapmap1 : mapList) { if (orderIds != null) { BigDecimal orderId = DataChange.dataToBigDecimal(orderIds); BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId")); BigDecimal materialNum = DataChange.dataToBigDecimal(map1.get("materialNum")); map1.put("orderId",orderId); //修改物资子表总理重 通过订单ID找到件数和总理重,算出单件理重 Map saleMaterialMes = omstruckOrderMaterialMapper.getSaleOrderMaterialNum(map1); BigDecimal saleMaterialId = DataChange.dataToBigDecimal(saleMaterialMes.get("saleMaterialId"));//销售订单存放物资子表id BigDecimal materialWeight = DataChange.dataToBigDecimal(saleMaterialMes.get("materialWeight"));//旧总理重 BigDecimal newWeight = null; if (materialWeight.intValue() != 0) { //如果总重量不为0,才进行重量更新 BigDecimal orderMaterialNumber = DataChange.dataToBigDecimal(saleMaterialMes.get("orderMaterialNumber"));//旧件数 BigDecimal theoreticalWeight = materialWeight.multiply(materialNum); newWeight = theoreticalWeight.divide(orderMaterialNumber,3, 4);//得到现有理重 omstruckOrderMaterial.setOrderMaterialWeight(newWeight); } //修改销售订单物资子表 omstruckOrderMaterialMapper.updateSaleOrderMaterialMes(saleMaterialId, materialNum, newWeight); //修改订单物资子表 与出库实绩 omstruckOrderMaterial.setOrderId(orderId); omstruckOrderMaterial.setMaterialId(materialId); omstruckOrderMaterial.setOrderMaterialNumber(materialNum); omstruckOrderMaterial.setUpdateTime(new Date()); omstruckOrderMaterialMapper.updateMaterialMes(omstruckOrderMaterial); omstruckOrderMaterialMapper.updateOutBoundResult(omstruckOrderMaterial); } else { BigDecimal materialNum = DataChange.dataToBigDecimal(map1.get("materialNum")); map1.put("saleOrderMaterialId",saleOrderMaterialId); //修改物资子表总理重 通过订单ID找到件数和总理重,算出单件理重 Map saleMaterialMes = omstruckOrderMaterialMapper.getSaleOrderMaterialNum(map1); BigDecimal saleMaterialId = DataChange.dataToBigDecimal(saleMaterialMes.get("saleMaterialId"));//销售订单存放物资子表id BigDecimal materialWeight = DataChange.dataToBigDecimal(saleMaterialMes.get("materialWeight"));//旧总理重 BigDecimal newWeight = null; if (materialWeight.intValue() != 0) { //如果总重量不为0,才进行重量更新 BigDecimal orderMaterialNumber = DataChange.dataToBigDecimal(saleMaterialMes.get("materialNumber"));//旧件数 BigDecimal theoreticalWeight = materialWeight.multiply(materialNum); newWeight = theoreticalWeight.divide(orderMaterialNumber,2, 4);//得到现有理重 } //修改销售订单物资子表 omstruckOrderMaterialMapper.updateSaleOrderMaterialMes(saleMaterialId, materialNum, newWeight); } } return 1; } }