合并功能调整
This commit is contained in:
parent
66da2e471a
commit
da468a0af5
@ -134,7 +134,7 @@ spring:
|
||||
# username: root
|
||||
# password: 123456
|
||||
# driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:oracle:thin:@123.57.206.181:1521/ORCLPDB1
|
||||
url: jdbc:oracle:thin:@172.22.10.236:1521/mesdb
|
||||
username: SDKTMS
|
||||
password: SDKTMS
|
||||
driver-class-name: oracle.jdbc.OracleDriver
|
||||
@ -189,9 +189,9 @@ jeecg:
|
||||
app: http://localhost:8051
|
||||
path:
|
||||
#文件上传根目录 设置
|
||||
upload: /opt/upFiles
|
||||
upload: ../opt/upFiles
|
||||
#webapp文件路径
|
||||
webapp: /opt/webapp
|
||||
webapp: ../opt/webapp
|
||||
shiro:
|
||||
excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
|
||||
#阿里云oss存储和大鱼短信秘钥配置
|
||||
|
@ -17,6 +17,7 @@ import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.modules.tms.carinout.vehicleinout.entity.VehicleParam;
|
||||
import org.jeecg.modules.tms.constant.TmsConstants;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemand;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemandExcel;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemand.service.IDeliveryDemandService;
|
||||
@ -28,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.jeecg.modules.tms.outbound.deliverydemanddetail.entity.DeliveryDemandDetail;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemanddetail.service.IDeliveryDemandDetailService;
|
||||
import org.jeecg.modules.tms.outbound.vehicledemand.entity.VehicleDemand;
|
||||
import org.jeecg.modules.tms.outbound.vehicledemand.service.IVehicleDemandService;
|
||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
@ -60,6 +63,8 @@ public class DeliveryDemandController extends JeecgController<DeliveryDemand, ID
|
||||
private IDeliveryDemandService deliveryDemandService;
|
||||
@Autowired
|
||||
private IDeliveryDemandDetailService deliveryDemandDetailService;
|
||||
@Autowired
|
||||
private IVehicleDemandService vehicleDemandService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
@ -109,6 +114,15 @@ public class DeliveryDemandController extends JeecgController<DeliveryDemand, ID
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Result<String> add(@RequestBody DeliveryDemand deliveryDemand) {
|
||||
deliveryDemandService.save(deliveryDemand);
|
||||
if (!TmsConstants.shipType_2.equals(deliveryDemand.getShipType())) {
|
||||
VehicleDemand vehicleDemand = BeanUtil.toBean(deliveryDemand, VehicleDemand.class);
|
||||
vehicleDemand.setDeliveryDemandId(deliveryDemand.getId())
|
||||
.setTotalShips(deliveryDemand.getShipNumber())
|
||||
.setTotalPallets(deliveryDemand.getPalletsNum())
|
||||
.setPreTotalPallets(deliveryDemand.getPalletsNum())
|
||||
.setCurrentStatus(TmsConstants.currentStatus_0);
|
||||
vehicleDemandService.save(vehicleDemand);
|
||||
}
|
||||
List<DeliveryDemandDetail> deliveryDemandDetailList = deliveryDemand.getDeliveryDemandDetailList();
|
||||
deliveryDemandDetailList.forEach(item ->{
|
||||
item.setDeliveryDemandId(deliveryDemand.getId());
|
||||
|
@ -114,7 +114,81 @@ public class DeliveryDemandServiceImpl extends ServiceImpl<DeliveryDemandMapper,
|
||||
return Result.OK("合并成功!");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void timedMerge() {
|
||||
LambdaQueryWrapper<VehicleDemand> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(VehicleDemand::getCurrentStatus, TmsConstants.currentStatus_0, TmsConstants.currentStatus_1)
|
||||
.ne(VehicleDemand::getShipType, TmsConstants.shipType_2);
|
||||
List<VehicleDemand> list = vehicleDemandService.list(lambdaQueryWrapper);
|
||||
// 以发货日期,运输类型,取货地点,送货地点为key
|
||||
Map<String, VehicleDemand> mergedMap = list.stream()
|
||||
.collect(Collectors.toMap(
|
||||
demand -> String.format("%s|%s|%s|%s",
|
||||
demand.getShipType(),
|
||||
demand.getDeliveryAddress(),
|
||||
demand.getPickUpHub(),
|
||||
demand.getShipDate()),
|
||||
demand -> {
|
||||
VehicleDemand merged = new VehicleDemand();
|
||||
merged.setShipType(demand.getShipType());
|
||||
merged.setDeliveryAddress(demand.getDeliveryAddress());
|
||||
merged.setPickUpHub(demand.getPickUpHub());
|
||||
merged.setShipDate(demand.getShipDate());
|
||||
merged.setTotalPallets(demand.getTotalPallets());
|
||||
merged.setPreTotalPallets(demand.getPreTotalPallets());
|
||||
merged.setTotalShips(demand.getTotalShips());
|
||||
merged.setDeliveryDate(demand.getDeliveryDate());
|
||||
merged.setDeliveryDemandId(demand.getDeliveryDemandId());
|
||||
return merged;
|
||||
}, (merged1, merged2) -> {
|
||||
merged1.setTotalPallets(
|
||||
(merged1.getTotalPallets() == null ? 0 : merged1.getTotalPallets()) +
|
||||
(merged2.getTotalPallets() == null ? 0 : merged2.getTotalPallets())
|
||||
);
|
||||
merged1.setPreTotalPallets(
|
||||
(merged1.getPreTotalPallets() == null ? 0 : merged1.getPreTotalPallets()) +
|
||||
(merged2.getPreTotalPallets() == null ? 0 : merged2.getPreTotalPallets())
|
||||
);
|
||||
merged1.setTotalShips(
|
||||
Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO)
|
||||
.add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO))
|
||||
);
|
||||
merged1.setDeliveryDemandId(merged1.getDeliveryDemandId()+","+merged2.getDeliveryDemandId());
|
||||
return merged1;
|
||||
}
|
||||
));
|
||||
// 合并之后的用车需求集合
|
||||
List<VehicleDemand> vehicleDemandList = new ArrayList<>();
|
||||
for (Map.Entry<String, VehicleDemand> entry : mergedMap.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
VehicleDemand value = entry.getValue();
|
||||
String deliveryDemandId = value.getDeliveryDemandId();
|
||||
String sequence = generalSequenceService.getSequence(GeneralSequenceConstant.VEHICLE_DEMAND_NO);
|
||||
value.setVdNo(sequence).setCurrentStatus(TmsConstants.currentStatus_1);
|
||||
vehicleDemandList.add(value);
|
||||
String[] split = deliveryDemandId.split(",");
|
||||
LambdaUpdateWrapper<DeliveryDemand> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.in(DeliveryDemand::getId, split);
|
||||
DeliveryDemand deliveryDemand = new DeliveryDemand();
|
||||
deliveryDemand.setVdNo(sequence).setCurrentStatus(TmsConstants.currentStatus_1);
|
||||
deliveryDemandMapper.update(deliveryDemand, lambdaUpdateWrapper);
|
||||
/*list.forEach(item -> {
|
||||
if (key.equals(String.format("%s|%s",
|
||||
item.getShipDate(),
|
||||
item.getShipType()))) {
|
||||
item.setVdNo(sequence);
|
||||
}
|
||||
});*/
|
||||
}
|
||||
// 删除合并前的数据
|
||||
vehicleDemandService.removeBatchByIds(list);
|
||||
// 新增合并的数据
|
||||
vehicleDemandService.saveBatch(vehicleDemandList);
|
||||
}
|
||||
|
||||
|
||||
// 原定时合并,以发货需求信息合并
|
||||
/*@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void timedMerge() {
|
||||
LambdaQueryWrapper<DeliveryDemand> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
@ -150,8 +224,8 @@ public class DeliveryDemandServiceImpl extends ServiceImpl<DeliveryDemandMapper,
|
||||
(merged2.getPreTotalPallets() == null ? 0 : merged2.getPreTotalPallets())
|
||||
);
|
||||
merged1.setTotalShips(
|
||||
/*(merged1.getTotalShips() == null ? 0 : merged1.getTotalShips()) +
|
||||
(merged2.getTotalShips() == null ? 0 : merged2.getTotalShips())*/
|
||||
*//*(merged1.getTotalShips() == null ? 0 : merged1.getTotalShips()) +
|
||||
(merged2.getTotalShips() == null ? 0 : merged2.getTotalShips())*//*
|
||||
Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO)
|
||||
.add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO))
|
||||
);
|
||||
@ -178,7 +252,7 @@ public class DeliveryDemandServiceImpl extends ServiceImpl<DeliveryDemandMapper,
|
||||
vehicleDemands.add(value);
|
||||
}
|
||||
vehicleDemandService.saveBatch(vehicleDemands);
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public Result<?> getPalletsNum(List<DeliveryDemand> deliveryDemands) {
|
||||
|
@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
@ -18,6 +19,7 @@ import org.jeecg.modules.tms.basicdata.constant.GeneralSequenceConstant;
|
||||
import org.jeecg.modules.tms.basicdata.generalsequence.service.IGeneralSequenceService;
|
||||
import org.jeecg.modules.tms.basicdata.logisticsroute.mapper.LogisticsRouteMapper;
|
||||
import org.jeecg.modules.tms.constant.TmsConstants;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemand.entity.DeliveryDemand;
|
||||
import org.jeecg.modules.tms.outbound.deliverydemand.service.IDeliveryDemandService;
|
||||
import org.jeecg.modules.tms.outbound.vehicledemand.entity.VehicleDemand;
|
||||
import org.jeecg.modules.tms.outbound.vehicledemand.service.IVehicleDemandService;
|
||||
@ -227,9 +229,9 @@ public class VehicleDemandController extends JeecgController<VehicleDemand, IVeh
|
||||
@PostMapping("/handleMerge")
|
||||
public Result<?> handleMerge(@RequestBody List<String> ids) {
|
||||
List<VehicleDemand> vehicleDemands = vehicleDemandService.listByIds(ids);
|
||||
boolean hasEven = vehicleDemands.stream().anyMatch(item -> !TmsConstants.currentStatus_0.equals(item.getCurrentStatus()));
|
||||
boolean hasEven = vehicleDemands.stream().anyMatch(item -> TmsConstants.currentStatus_2.equals(item.getCurrentStatus()));
|
||||
if (hasEven) {
|
||||
return Result.error("数据中含有不是创建状态的数据!");
|
||||
return Result.error("数据中含有计算车辆需求完成的数据!");
|
||||
}
|
||||
List<VehicleDemandHis> vehicleDemandHisList = BeanUtil.copyToList(vehicleDemands, VehicleDemandHis.class);
|
||||
Map<String, VehicleDemand> collect = vehicleDemands.stream()
|
||||
@ -250,6 +252,7 @@ public class VehicleDemandController extends JeecgController<VehicleDemand, IVeh
|
||||
merged.setPreTotalPallets(vehicleDemand.getPreTotalPallets());
|
||||
merged.setTotalShips(vehicleDemand.getTotalShips());
|
||||
merged.setDeliveryDate(vehicleDemand.getDeliveryDate());
|
||||
merged.setDeliveryDemandId(vehicleDemand.getDeliveryDemandId());
|
||||
return merged;
|
||||
}, (merged1, merged2) -> {
|
||||
// 默认策略:保留距离更长的那个对象的 pickupHub / deliveryAddress
|
||||
@ -281,6 +284,7 @@ public class VehicleDemandController extends JeecgController<VehicleDemand, IVeh
|
||||
Optional.ofNullable(merged1.getTotalShips()).orElse(BigDecimal.ZERO)
|
||||
.add(Optional.ofNullable(merged2.getTotalShips()).orElse(BigDecimal.ZERO))
|
||||
);
|
||||
merged1.setDeliveryDemandId(merged1.getDeliveryDemandId()+","+merged2.getDeliveryDemandId());
|
||||
return merged1;
|
||||
}
|
||||
));
|
||||
@ -299,6 +303,13 @@ public class VehicleDemandController extends JeecgController<VehicleDemand, IVeh
|
||||
item.setVdNoNew(sequence);
|
||||
}
|
||||
});
|
||||
String[] split = value.getDeliveryDemandId().split(",");
|
||||
LambdaUpdateWrapper<DeliveryDemand> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.in(DeliveryDemand::getId, split)
|
||||
.set(DeliveryDemand::getVdNo, sequence)
|
||||
.set(DeliveryDemand::getCurrentStatus, TmsConstants.currentStatus_1);
|
||||
// 更新发货需求状态为创建,用车需求编号
|
||||
deliveryDemandService.update(lambdaUpdateWrapper);
|
||||
}
|
||||
// 生成新的用车需求
|
||||
vehicleDemandService.saveBatch(vehicleDemandList);
|
||||
@ -324,16 +335,34 @@ public class VehicleDemandController extends JeecgController<VehicleDemand, IVeh
|
||||
if (hasEven) {
|
||||
return Result.error("数据中含有不是已合并需求的数据!");
|
||||
}
|
||||
LambdaQueryWrapper<VehicleDemandHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
List<String> deliveryDemandIds = vehicleDemands.stream()
|
||||
.map(VehicleDemand::getDeliveryDemandId)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(idStr -> Arrays.stream(idStr.split(",")))
|
||||
.collect(Collectors.toList());
|
||||
List<DeliveryDemand> deliveryDemands = deliveryDemandService.listByIds(deliveryDemandIds);
|
||||
List<VehicleDemand> vehicleDemandList = new ArrayList<>();
|
||||
deliveryDemands.forEach(item -> {
|
||||
item.setCurrentStatus(TmsConstants.currentStatus_0);
|
||||
VehicleDemand vehicleDemand = BeanUtil.toBean(item, VehicleDemand.class);
|
||||
vehicleDemand.setTotalPallets(item.getPalletsNum())
|
||||
.setPreTotalPallets(item.getPalletsNum())
|
||||
.setTotalShips(item.getShipNumber())
|
||||
.setDeliveryDemandId(item.getId());
|
||||
vehicleDemandList.add(vehicleDemand);
|
||||
});
|
||||
deliveryDemandService.updateBatchById(deliveryDemands);
|
||||
/*LambdaQueryWrapper<VehicleDemandHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(VehicleDemandHis::getVdNoNew, vdNoNews);
|
||||
List<VehicleDemandHis> list = vehicleDemandHisService.list(lambdaQueryWrapper);
|
||||
List<VehicleDemand> vehicleDemandList = BeanUtil.copyToList(list, VehicleDemand.class);
|
||||
// 恢复原来合并删除的数据
|
||||
vehicleDemandService.saveBatch(vehicleDemandList);
|
||||
vehicleDemandService.saveBatch(vehicleDemandList);*/
|
||||
// 删除合并的数据
|
||||
vehicleDemandService.removeBatchByIds(ids);
|
||||
vehicleDemandService.saveBatch(vehicleDemandList);
|
||||
// 删除历史记录
|
||||
vehicleDemandHisService.removeByIds(list);
|
||||
// vehicleDemandHisService.removeByIds(list);
|
||||
return Result.OK("解绑成功!");
|
||||
}
|
||||
}
|
||||
|
@ -109,4 +109,5 @@ public class VehicleDemand implements Serializable {
|
||||
private java.lang.String currentStatus;
|
||||
@TableField(exist = false)
|
||||
private Integer distance;
|
||||
private String deliveryDemandId;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user