opt:修复看板时间统计
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
package org.nl.wms.md_manage.group_dick.service.impl;
|
package org.nl.wms.md_manage.group_dick.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.poi.excel.ExcelReader;
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
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.entity.PageQuery;
|
||||||
import org.nl.common.domain.exception.BadRequestException;
|
import org.nl.common.domain.exception.BadRequestException;
|
||||||
import org.nl.common.enums.StatusEnum;
|
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.IMdMeMaterialbaseService;
|
||||||
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
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.IBmVehicleInfoService;
|
||||||
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
|
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.group_dick.service.IMdGruopDickService;
|
||||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
|
||||||
|
|
||||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
|
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.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.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.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
|
||||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
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.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -160,16 +160,53 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
|||||||
.in("vehicle_code", map.keySet()));
|
.in("vehicle_code", map.keySet()));
|
||||||
if (tmpCount1.size()>0){
|
if (tmpCount1.size()>0){
|
||||||
List<MdPbVehicleMater> collect = tmpCount1.stream().filter(mdPbVehicleMater -> mdPbVehicleMater.getNeed_pick()&&mdPbVehicleMater.getVehicle_code().contains("T")).collect(Collectors.toList());
|
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(","));
|
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());
|
this.saveBatch(map.values());
|
||||||
iMdPbVehicleMaterService.saveBatch(vehicleMaters);
|
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
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
|
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);
|
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
|
||||||
List<List<Object>> read = excelReader.read();
|
List<List<Object>> read = excelReader.read();
|
||||||
String now = DateUtil.now();
|
String now = DateUtil.now();
|
||||||
if (read.size()>1){
|
if (read.size() > 1) {
|
||||||
List<MdGruopDick> groups = new ArrayList<>();
|
List<MdGruopDick> groups = new ArrayList<>();
|
||||||
List<MdPbVehicleMater> vms = new ArrayList<>();
|
List<MdPbVehicleMater> vms = new ArrayList<>();
|
||||||
for (int i = 1; i < read.size(); i++) {
|
for (int i = 1; i < read.size(); i++) {
|
||||||
List<Object> list = read.get(i);
|
List<Object> list = read.get(i);
|
||||||
String vehicle_code = (String)list.get(0);
|
String vehicle_code = (String) list.get(0);
|
||||||
String material_code = (String)list.get(1);
|
String material_code = (String) list.get(1);
|
||||||
String pcsn = (String)list.get(2);
|
String pcsn = (String) list.get(2);
|
||||||
String qty = String.valueOf(list.get(3));
|
String qty = String.valueOf(list.get(3));
|
||||||
if (StringUtils.isEmpty(vehicle_code)||StringUtils.isEmpty(material_code)||StringUtils.isEmpty(pcsn)||StringUtils.isEmpty(qty)){
|
String single_weight = String.valueOf(list.get(4));
|
||||||
throw new BadRequestException("第"+(i+1)+"行数据不全");
|
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);
|
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle_code);
|
||||||
if (vehicleInfo==null){
|
if (vehicleInfo == null) {
|
||||||
throw new BadRequestException(vehicle_code+"载具信息不存在");
|
throw new BadRequestException(vehicle_code + "载具信息不存在");
|
||||||
}
|
}
|
||||||
List<MdPbVehicleMaterVo> vehicleMaters = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code);
|
List<MdPbVehicleMaterVo> vehicleMaters = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code);
|
||||||
if (!CollectionUtils.isEmpty(vehicleMaters)){
|
if (!CollectionUtils.isEmpty(vehicleMaters)) {
|
||||||
throw new BadRequestException(vehicle_code+"存在信息,先出库确认在使用");
|
throw new BadRequestException(vehicle_code + "存在信息,先出库确认在使用");
|
||||||
}
|
}
|
||||||
MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
||||||
if (materialCode==null){
|
if (materialCode == null) {
|
||||||
throw new BadRequestException(material_code+"物料编码不存在");
|
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();
|
MdGruopDick dick = new MdGruopDick();
|
||||||
dick.setVehicle_code(vehicle_code);
|
dick.setVehicle_code(vehicle_code);
|
||||||
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
|
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ public class CockpitServiceImpl implements CockpitService {
|
|||||||
obj4.put("total", total4);
|
obj4.put("total", total4);
|
||||||
obj4.put("box", box4);
|
obj4.put("box", box4);
|
||||||
obj4.put("time", time4);
|
obj4.put("time", time4);
|
||||||
List<TaskInfo> taskList = cockpitMapper.getTaskListByDays(7);
|
List<TaskInfo> taskList = cockpitMapper.getTaskListByDays(0);
|
||||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||||
//料箱库入库
|
//料箱库入库
|
||||||
List<TaskInfo> stockList1 = taskList.stream()
|
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())) {
|
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 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"));
|
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 {
|
} else {
|
||||||
return Duration.ZERO;
|
return Duration.ZERO;
|
||||||
}
|
}
|
||||||
@@ -463,11 +469,21 @@ public class CockpitServiceImpl implements CockpitService {
|
|||||||
real_qty_default.add(item);
|
real_qty_default.add(item);
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(real_qty)) {
|
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()
|
Map<String, BigDecimal> ghRealQtyMap = real_qty.stream()
|
||||||
.filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
|
.filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
|
||||||
.collect(Collectors.groupingBy(
|
.collect(Collectors.groupingBy(
|
||||||
TaskInfo::getCreate_time,
|
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 -> {
|
real_qty_default.forEach(tbItem -> {
|
||||||
String date = (String) tbItem.get("date");
|
String date = (String) tbItem.get("date");
|
||||||
|
|||||||
@@ -13,18 +13,19 @@
|
|||||||
</select>
|
</select>
|
||||||
<select id="getTaskListByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
<select id="getTaskListByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
||||||
SELECT
|
SELECT
|
||||||
i.`bill_type` as task_type,
|
t.task_type,
|
||||||
i.create_time,
|
t.vehicle_code,
|
||||||
i.update_time,
|
t.create_time,
|
||||||
|
t.update_time,
|
||||||
d.stor_code,
|
d.stor_code,
|
||||||
d.qty,
|
d.qty
|
||||||
d.vehicle_code
|
|
||||||
FROM
|
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
|
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
|
||||||
WHERE
|
WHERE
|
||||||
i.`status`='80'
|
t.`status` = '80'
|
||||||
AND i.create_time >=
|
AND t.create_time >=
|
||||||
<choose>
|
<choose>
|
||||||
<when test="days == 0">
|
<when test="days == 0">
|
||||||
CURDATE()
|
CURDATE()
|
||||||
@@ -35,19 +36,17 @@
|
|||||||
</choose>
|
</choose>
|
||||||
</select>
|
</select>
|
||||||
<select id="getTaskCountsByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
<select id="getTaskCountsByDays" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
||||||
SELECT
|
SELECT t.task_type,
|
||||||
i.`bill_type` as task_type,
|
t.vehicle_code,
|
||||||
DATE_FORMAT(i.create_time,'%m-%d') as create_time ,
|
DATE_FORMAT(t.create_time, '%m-%d') as create_time,
|
||||||
i.update_time,
|
t.update_time,
|
||||||
d.stor_code,
|
d.stor_code,
|
||||||
d.qty,
|
d.qty
|
||||||
d.vehicle_code
|
FROM `sch_base_task` t
|
||||||
FROM
|
LEFT JOIN st_ivt_iostorinvdtl d ON d.vehicle_code = t.vehicle_code
|
||||||
`st_ivt_iostorinvdtl` d
|
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
|
||||||
LEFT JOIN st_ivt_iostorinv i ON d.inv_id = i.id
|
WHERE t.`status` = '80'
|
||||||
WHERE
|
AND t.create_time >= CURDATE() - INTERVAL 7 DAY
|
||||||
i.`status` = '80'
|
|
||||||
AND i.create_time >= CURDATE() - INTERVAL 7 DAY
|
|
||||||
</select>
|
</select>
|
||||||
<select id="getPickingTask" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
<select id="getPickingTask" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
||||||
SELECT
|
SELECT
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
|||||||
if (!CollectionUtils.isEmpty(pmFormDataDtos)) {
|
if (!CollectionUtils.isEmpty(pmFormDataDtos)) {
|
||||||
handleFormDatas(pmFormDataDtos);
|
handleFormDatas(pmFormDataDtos);
|
||||||
} else {
|
} else {
|
||||||
//根据单据编号同步ERP单据
|
//根据单据编号查询Erp单据
|
||||||
List<SyncFormMapping> list = iSyncFormMappingService.list(new LambdaQueryWrapper<SyncFormMapping>().eq(SyncFormMapping::getForm_type, query.getForm_type()));
|
List<SyncFormMapping> list = iSyncFormMappingService.list(new LambdaQueryWrapper<SyncFormMapping>().eq(SyncFormMapping::getForm_type, query.getForm_type()));
|
||||||
if (ObjectUtils.isNotEmpty(list)) {
|
if (ObjectUtils.isNotEmpty(list)) {
|
||||||
JSONArray mappingJson = list.get(0).getMapping_json();
|
JSONArray mappingJson = list.get(0).getMapping_json();
|
||||||
|
|||||||
Reference in New Issue
Block a user