opt:修复看板时间统计
This commit is contained in:
@@ -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"));
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user