opt:修复看板时间统计

This commit is contained in:
2024-12-22 01:45:33 +08:00
parent b7d5f473ea
commit 8a8cee04d8
4 changed files with 108 additions and 49 deletions

View File

@@ -1,12 +1,12 @@
package org.nl.wms.md_manage.group_dick.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
@@ -15,19 +15,20 @@ import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.*;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.RedissonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import org.nl.wms.md_manage.group_dick.service.dao.mapper.MdGruopDickMapper;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.md_manage.group_dick.service.dto.GroupDickQuery;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
@@ -45,7 +46,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -160,16 +160,53 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
.in("vehicle_code", map.keySet()));
if (tmpCount1.size()>0){
List<MdPbVehicleMater> collect = tmpCount1.stream().filter(mdPbVehicleMater -> mdPbVehicleMater.getNeed_pick()&&mdPbVehicleMater.getVehicle_code().contains("T")).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)){
if (!CollectionUtils.isEmpty(collect)) {
String vehicles = collect.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(","));
throw new BadRequestException("载具"+vehicles+"为拣选回库无需组盘");
throw new BadRequestException("载具" + vehicles + "为拣选回库无需组盘");
}
throw new BadRequestException("组盘失败:载具已经存在组盘信息"+tmpCount1.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(",")));
throw new BadRequestException("组盘失败:载具已经存在组盘信息" + tmpCount1.stream().map(MdPbVehicleMater::getVehicle_code).collect(Collectors.joining(",")));
}
this.saveBatch(map.values());
iMdPbVehicleMaterService.saveBatch(vehicleMaters);
}
/**
* 无单重物料导入修改
*/
@Transactional
public void excelImport1(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
try {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
List<List<Object>> read = excelReader.read();
if (read.size() > 1) {
for (int i = 1; i < read.size(); i++) {
List<Object> list = read.get(i);
String material_code = (String) list.get(0);
String single_weight = String.valueOf(list.get(1));
if (StringUtils.isEmpty(material_code) || StringUtils.isEmpty(single_weight)) {
throw new BadRequestException("" + (i + 1) + "行数据不全");
}
MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
if (materialCode == null) {
throw new BadRequestException(material_code + "物料编码不存在");
}
materialCode.setSingle_weight(new BigDecimal(single_weight));
//更新单重
LambdaUpdateWrapper<MdMeMaterialbase> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(MdMeMaterialbase::getNearby_weight, new BigDecimal(single_weight));
updateWrapper.eq(MdMeMaterialbase::getMaterial_id, materialCode.getMaterial_id());
mdMeMaterialbaseService.update(updateWrapper);
}
}
} catch (Exception ex) {
throw new BadRequestException("导入失败" + ex.getMessage());
}
}
@Override
@Transactional
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
@@ -178,30 +215,37 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
List<List<Object>> read = excelReader.read();
String now = DateUtil.now();
if (read.size()>1){
if (read.size() > 1) {
List<MdGruopDick> groups = new ArrayList<>();
List<MdPbVehicleMater> vms = new ArrayList<>();
for (int i = 1; i < read.size(); i++) {
List<Object> list = read.get(i);
String vehicle_code = (String)list.get(0);
String material_code = (String)list.get(1);
String pcsn = (String)list.get(2);
String vehicle_code = (String) list.get(0);
String material_code = (String) list.get(1);
String pcsn = (String) list.get(2);
String qty = String.valueOf(list.get(3));
if (StringUtils.isEmpty(vehicle_code)||StringUtils.isEmpty(material_code)||StringUtils.isEmpty(pcsn)||StringUtils.isEmpty(qty)){
throw new BadRequestException(""+(i+1)+"行数据不全");
String single_weight = String.valueOf(list.get(4));
if (StringUtils.isEmpty(vehicle_code) || StringUtils.isEmpty(material_code) || StringUtils.isEmpty(pcsn) || StringUtils.isEmpty(qty) || StringUtils.isEmpty(single_weight)) {
throw new BadRequestException("" + (i + 1) + "行数据不全");
}
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle_code);
if (vehicleInfo==null){
throw new BadRequestException(vehicle_code+"载具信息不存在");
if (vehicleInfo == null) {
throw new BadRequestException(vehicle_code + "载具信息不存在");
}
List<MdPbVehicleMaterVo> vehicleMaters = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code);
if (!CollectionUtils.isEmpty(vehicleMaters)){
throw new BadRequestException(vehicle_code+"存在信息,先出库确认在使用");
if (!CollectionUtils.isEmpty(vehicleMaters)) {
throw new BadRequestException(vehicle_code + "存在信息,先出库确认在使用");
}
MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
if (materialCode==null){
throw new BadRequestException(material_code+"物料编码不存在");
if (materialCode == null) {
throw new BadRequestException(material_code + "物料编码不存在");
}
materialCode.setSingle_weight(new BigDecimal(single_weight));
//更新单重
LambdaUpdateWrapper<MdMeMaterialbase> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(MdMeMaterialbase::getNearby_weight, new BigDecimal(single_weight));
updateWrapper.eq(MdMeMaterialbase::getMaterial_id, materialCode.getMaterial_id());
mdMeMaterialbaseService.update(updateWrapper);
MdGruopDick dick = new MdGruopDick();
dick.setVehicle_code(vehicle_code);
dick.setCode(CodeUtil.getNewCode("md_group_dick"));

View File

@@ -174,7 +174,7 @@ public class CockpitServiceImpl implements CockpitService {
obj4.put("total", total4);
obj4.put("box", box4);
obj4.put("time", time4);
List<TaskInfo> taskList = cockpitMapper.getTaskListByDays(7);
List<TaskInfo> taskList = cockpitMapper.getTaskListByDays(0);
if (ObjectUtil.isNotEmpty(taskList)) {
//料箱库入库
List<TaskInfo> stockList1 = taskList.stream()
@@ -442,7 +442,13 @@ public class CockpitServiceImpl implements CockpitService {
if (StringUtils.isNotBlank(task.getCreate_time()) && StringUtils.isNotBlank(task.getUpdate_time())) {
LocalDateTime createTime = LocalDateTime.parse(task.getCreate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime updateTime = LocalDateTime.parse(task.getUpdate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return Duration.between(createTime, updateTime);
// 计算时间间隔
Duration duration = Duration.between(createTime, updateTime);
//时间间隔大于10分钟就是异常任务默认为5分钟最长出入库时间
if (duration.toMinutes() >= 15) {
duration = Duration.ofMinutes(5);
}
return duration;
} else {
return Duration.ZERO;
}
@@ -463,11 +469,21 @@ public class CockpitServiceImpl implements CockpitService {
real_qty_default.add(item);
}
if (ObjectUtil.isNotEmpty(real_qty)) {
//计算数量
// Map<String, BigDecimal> ghRealQtyMap = real_qty.stream()
// .filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
// .collect(Collectors.groupingBy(
// TaskInfo::getCreate_time,
// Collectors.reducing(BigDecimal.ZERO, TaskInfo::getQty, BigDecimal::add)
// ));
Map<String, BigDecimal> ghRealQtyMap = real_qty.stream()
.filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
.collect(Collectors.groupingBy(
TaskInfo::getCreate_time,
Collectors.reducing(BigDecimal.ZERO, TaskInfo::getQty, BigDecimal::add)
Collectors.reducing(BigDecimal.ZERO, task -> {
int boxCount = task.getVehicle_code().split(",").length;
return BigDecimal.valueOf(boxCount);
}, BigDecimal::add)
));
real_qty_default.forEach(tbItem -> {
String date = (String) tbItem.get("date");

View File

@@ -13,18 +13,19 @@
</select>
<select id="getTaskListByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
SELECT
i.`bill_type` as task_type,
i.create_time,
i.update_time,
t.task_type,
t.vehicle_code,
t.create_time,
t.update_time,
d.stor_code,
d.qty,
d.vehicle_code
d.qty
FROM
`st_ivt_iostorinvdtl` d
`sch_base_task` t
LEFT JOIN st_ivt_iostorinvdtl d ON d.vehicle_code = t.vehicle_code
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
WHERE
i.`status`='80'
AND i.create_time >=
t.`status` = '80'
AND t.create_time >=
<choose>
<when test="days == 0">
CURDATE()
@@ -35,19 +36,17 @@
</choose>
</select>
<select id="getTaskCountsByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
SELECT
i.`bill_type` as task_type,
DATE_FORMAT(i.create_time,'%m-%d') as create_time ,
i.update_time,
d.stor_code,
d.qty,
d.vehicle_code
FROM
`st_ivt_iostorinvdtl` d
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
WHERE
i.`status` = '80'
AND i.create_time >= CURDATE() - INTERVAL 7 DAY
SELECT t.task_type,
t.vehicle_code,
DATE_FORMAT(t.create_time, '%m-%d') as create_time,
t.update_time,
d.stor_code,
d.qty
FROM `sch_base_task` t
LEFT JOIN st_ivt_iostorinvdtl d ON d.vehicle_code = t.vehicle_code
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
WHERE t.`status` = '80'
AND t.create_time >= CURDATE() - INTERVAL 7 DAY
</select>
<select id="getPickingTask" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
SELECT

View File

@@ -274,7 +274,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
if (!CollectionUtils.isEmpty(pmFormDataDtos)) {
handleFormDatas(pmFormDataDtos);
} else {
//根据单据编号同步ERP单据
//根据单据编号查询Erp单据
List<SyncFormMapping> list = iSyncFormMappingService.list(new LambdaQueryWrapper<SyncFormMapping>().eq(SyncFormMapping::getForm_type, query.getForm_type()));
if (ObjectUtils.isNotEmpty(list)) {
JSONArray mappingJson = list.get(0).getMapping_json();