opt:优化

This commit is contained in:
2025-11-06 13:35:07 +08:00
parent 621075e8f7
commit 97788313fb
13 changed files with 169 additions and 54 deletions

View File

@@ -39,7 +39,7 @@
<if test="param.struct_code != null and param.struct_code != ''"> <if test="param.struct_code != null and param.struct_code != ''">
AND AND
attr.struct_code LIKE #{param.struct_code} attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%')
</if> </if>
<if test="param.material_code != null and param.material_code != ''"> <if test="param.material_code != null and param.material_code != ''">
@@ -130,8 +130,8 @@
<if test="param.struct_code != null and param.struct_code != ''"> <if test="param.struct_code != null and param.struct_code != ''">
AND AND
(attr.struct_code LIKE #{param.struct_code} or (attr.struct_code LIKE CONCAT('%', #{param.struct_code}, '%') or
attr.struct_name LIKE #{param.struct_code} ) attr.struct_name LIKE CONCAT('%', #{param.struct_code}, '%') )
</if> </if>
<if test="param.material_code != null and param.material_code != ''"> <if test="param.material_code != null and param.material_code != ''">
@@ -298,7 +298,7 @@
<if test="params.struct_code != null and params.struct_code != ''"> <if test="params.struct_code != null and params.struct_code != ''">
AND AND
(attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%') attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%')
</if> </if>
<if test="params.pcsn != null and params.pcsn != ''"> <if test="params.pcsn != null and params.pcsn != ''">

View File

@@ -95,8 +95,9 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
String is_have = (String) whereJson.get("is_have"); String is_have = (String) whereJson.get("is_have");
return structattrMapper.selectPage(new Page<>(page.getPage() + 1 ,page.getSize()), new LambdaQueryWrapper<Structattr>() return structattrMapper.selectPage(new Page<>(page.getPage() + 1 ,page.getSize()), new LambdaQueryWrapper<Structattr>()
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_code, search) .and(StrUtil.isNotEmpty(search),lam -> lam.like(StrUtil.isNotEmpty(search), Structattr::getStruct_code, search)
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_name, search) .or().like(StrUtil.isNotEmpty(search), Structattr::getStruct_name, search)
)
.eq(StrUtil.isNotEmpty(stor_id),Structattr::getStor_id, stor_id) .eq(StrUtil.isNotEmpty(stor_id),Structattr::getStor_id, stor_id)
.eq(StrUtil.isNotEmpty(sect_id),Structattr::getSect_id, sect_id) .eq(StrUtil.isNotEmpty(sect_id),Structattr::getSect_id, sect_id)
.eq(StrUtil.isNotEmpty(lock_type),Structattr::getLock_type, lock_type) .eq(StrUtil.isNotEmpty(lock_type),Structattr::getLock_type, lock_type)

View File

@@ -3,8 +3,10 @@ package org.nl.wms.pda_manage.sch_manage.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.language.LangBehavior; import org.nl.language.LangBehavior;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
@@ -14,7 +16,9 @@ import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.pda_manage.sch_manage.service.PdaSchTaskService; import org.nl.wms.pda_manage.sch_manage.service.PdaSchTaskService;
import org.nl.wms.pda_manage.util.PdaResponse; import org.nl.wms.pda_manage.util.PdaResponse;
import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
@@ -64,6 +68,19 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Autowired @Autowired
private TaskFactory taskFactory; private TaskFactory taskFactory;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
/**
* 定点作业——经与项目经理沟通,已经转化成脱机作业。不改变库位。
* @param whereJson {
* start_point_code起点点位
* end_point_code终点点位
* storagevehicle_code载具编码
* acs_typeacs任务类型
* }
* @return
*/
@Override @Override
@Transactional @Transactional
public JSONObject pointTask(JSONObject whereJson) { public JSONObject pointTask(JSONObject whereJson) {
@@ -80,10 +97,29 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
if (ObjectUtil.isEmpty(end_point)) { if (ObjectUtil.isEmpty(end_point)) {
throw new BadRequestException(LangBehavior.language("pda_manage.end_point_not_exist")); throw new BadRequestException(LangBehavior.language("pda_manage.end_point_not_exist"));
} }
start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
iStructattrService.updateById(start_point); //查询是否有执行中的点位
end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁")); //找到空点位正在执行的任务
iStructattrService.updateById(end_point); List<SchBaseTask> taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.and(wp -> wp
.eq(SchBaseTask::getPoint_code1, end_point.getStruct_code())
.or()
.eq(SchBaseTask::getPoint_code2, end_point.getStruct_code())
.or()
.eq(SchBaseTask::getPoint_code1, start_point.getStruct_code())
.or()
.eq(SchBaseTask::getPoint_code2, start_point.getStruct_code())
)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
if (CollectionUtils.isNotEmpty(taskingSchBaseTaskList)) {
throw new BadRequestException(LangBehavior.language("pda_manage.ongoing_task_at_point"));
}
// start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
// iStructattrService.updateById(start_point);
// end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁"));
// iStructattrService.updateById(end_point);
// 创建任务 // 创建任务
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("config_code", IOSConstant.PDA_POINT_TASK); task.put("config_code", IOSConstant.PDA_POINT_TASK);

View File

@@ -25,6 +25,11 @@ public interface PmFormDataMapper extends BaseMapper<PmFormData> {
List<PmFormDataDto> queryTree(@Param("query") FormDataQuery query); List<PmFormDataDto> queryTree(@Param("query") FormDataQuery query);
List<PmFormDataDto> queryTree2(@Param("query") FormDataQuery query); List<PmFormDataDto> queryTree2(@Param("query") FormDataQuery query);
/**
* 支持MyBatis-Plus分页的查询方法
*/
List<PmFormDataDto> queryTreePage(com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> page, @Param("query") FormDataQuery query);

View File

@@ -161,6 +161,62 @@
</where> </where>
ORDER BY create_time DESC ORDER BY create_time DESC
</select> </select>
<!-- 支持MyBatis-Plus分页的查询方法 -->
<select id="queryTreePage" resultMap="dataDetail">
SELECT
pm_form_data.*,
md_me_materialbase.material_code,
md_me_materialbase.material_id,
md_me_materialbase.material_name,
md_me_materialbase.material_spec,
md_me_materialbase.net_weight
FROM
pm_form_data
left join md_me_materialbase on pm_form_data.material_code = md_me_materialbase.material_code
<where>
(is_merge = 0 or is_merge is null)
<if test="query.search != null and query.search != ''">
and form_data LIKE '%${query.search}%'
</if>
<if test="query.form_type != null and query.form_type != ''">
and form_type = #{query.form_type}
</if>
<if test="query.is_finish != null and query.is_finish != ''">
and is_finish = #{query.is_finish}
</if>
<if test="query.pcsn != null and query.pcsn != ''">
and pcsn = #{query.pcsn}
</if>
<if test="query.code != null and query.code != ''">
and code LIKE '%${query.code}'
</if>
<if test="query.material_code != null and query.material_code != ''">
and (md_me_materialbase.material_code LIKE '%${query.material_code}%'
or md_me_materialbase.material_name LIKE '%${query.material_code}%')
</if>
<if test="query.start_time != null and query.start_time != ''">
and pm_form_data.source_form_date >= #{query.start_time}
</if>
<if test="query.end_time != null and query.end_time != ''">
and #{query.end_time} >= pm_form_data.source_form_date
</if>
<if test="query.status != null and query.status != ''">
and pm_form_data.status IN
<foreach collection="query.status" item="status" separator="," open="(" close=")">
#{status}
</foreach>
</if>
<if test="query.form_query != null and query.form_query.size() > 0">
<foreach collection="query.form_query" item="value" index="key">
<if test="value != null and value != ''">
and JSON_CONTAINS(form_data, '{"${key}":"${value}"}')
</if>
</foreach>
</if>
</where>
ORDER BY create_time DESC
</select>
<select id="queryTreeCounts" resultType="java.math.BigDecimal"> <select id="queryTreeCounts" resultType="java.math.BigDecimal">
SELECT SELECT
SUM(pm_form_data.qty) as counts SUM(pm_form_data.qty) as counts

View File

@@ -159,14 +159,12 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
@Override @Override
public com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> queryTree(FormDataQuery query, PageQuery pageQuery) { public com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> queryTree(FormDataQuery query, PageQuery pageQuery) {
Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageQuery.getPage() + 1, pageQuery.getSize());
page.setOrderBy("id DESC");
trimStringFields(query); trimStringFields(query);
List<PmFormDataDto> pmFormDataList = this.baseMapper.queryTree2(query); List<PmFormDataDto> pmFormDataDtos = this.baseMapper.queryTreePage(page, query);
com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); page.setRecords(pmFormDataDtos);
dtoPage.setRecords(pmFormDataList);
return dtoPage;
return page;
} }

View File

@@ -132,44 +132,44 @@ public class PdaPointTask extends AbstractTask {
@Transactional @Transactional
public void finishTask(SchBaseTask taskObj) { public void finishTask(SchBaseTask taskObj) {
// 更新起点 // // 更新起点
iStructattrService.update( // iStructattrService.update(
new UpdateWrapper<Structattr>().lambda() // new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code1()) // .eq(Structattr::getStruct_code, taskObj.getPoint_code1())
.set(Structattr::getStoragevehicle_code, null) // .set(Structattr::getStoragevehicle_code, null)
.set(Structattr::getTask_code, null) // .set(Structattr::getTask_code, null)
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); // );
// 更新终点 // // 更新终点
iStructattrService.update( // iStructattrService.update(
new UpdateWrapper<Structattr>().lambda() // new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code2()) // .eq(Structattr::getStruct_code, taskObj.getPoint_code2())
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) // .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
.set(Structattr::getTask_code, null) // .set(Structattr::getTask_code, null)
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); // );
// 更新任务 // // 更新任务
taskObj.setRemark("已完成"); // taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); // taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj); // taskService.updateById(taskObj);
} }
@Transactional @Transactional
public void cancelTask(SchBaseTask taskObj) { public void cancelTask(SchBaseTask taskObj) {
// 更新起点 // // 更新起点
iStructattrService.update( // iStructattrService.update(
new UpdateWrapper<Structattr>().lambda() // new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code1()) // .eq(Structattr::getStruct_code, taskObj.getPoint_code1())
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); // );
iStructattrService.update( // iStructattrService.update(
new UpdateWrapper<Structattr>().lambda() // new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code2()) // .eq(Structattr::getStruct_code, taskObj.getPoint_code2())
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); // );
// 更新任务 // // 更新任务
taskObj.setRemark("已取消"); // taskObj.setRemark("已取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); // taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj); // taskService.updateById(taskObj);
} }
} }

View File

@@ -198,7 +198,7 @@ public class StInTask extends AbstractTask {
//更新组盘表状态 //更新组盘表状态
iMdPbGroupplateServi.update(new LambdaUpdateWrapper<GroupPlate>() iMdPbGroupplateServi.update(new LambdaUpdateWrapper<GroupPlate>()
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
.set(GroupPlate::getUpdate_time, DateUtil.now()) .set(GroupPlate::getUpdate_time, DateUtil.now())
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())); .eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()));

View File

@@ -20,7 +20,9 @@ import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.TaskType; import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.IOutBillService; import org.nl.wms.warehouse_manage.service.IOutBillService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis; import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,9 @@ public class StOutTask extends AbstractTask {
@Resource @Resource
private IOStorInvDisMapper ioStorInvDisMapper; private IOStorInvDisMapper ioStorInvDisMapper;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Override @Override
public String create(JSONObject json) { public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask(); SchBaseTask task = new SchBaseTask();
@@ -175,6 +180,12 @@ public class StOutTask extends AbstractTask {
outBillService.allCancel(jsonObject); outBillService.allCancel(jsonObject);
} }
//更新组盘表状态
iMdPbGroupplateService.update(new LambdaUpdateWrapper<GroupPlate>()
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.set(GroupPlate::getUpdate_time, DateUtil.now())
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()));
// 更新任务状态 // 更新任务状态
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setRemark("已取消"); taskObj.setRemark("已取消");

View File

@@ -126,7 +126,8 @@
dtl.*, dtl.*,
mb.material_code, mb.material_code,
mb.material_name, mb.material_name,
mst.bill_code mst.bill_code,
mst.vehicle_code storagevehicle_code
FROM FROM
st_ivt_iostorinvdtl dtl st_ivt_iostorinvdtl dtl
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id

View File

@@ -194,6 +194,11 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
io_mst.put("syscompanyid", deptId + ""); io_mst.put("syscompanyid", deptId + "");
for (int i = 0; i < rows.size(); i++) { for (int i = 0; i < rows.size(); i++) {
HashMap<String, Object> row = rows.get(i); HashMap<String, Object> row = rows.get(i);
if(whereJson.get("vehicle_code") == null){
whereJson.put("vehicle_code",row.get("storagevehicle_code"));
io_mst.put("vehicle_code",whereJson.get("vehicle_code"));
}
JSONObject ioStorInvDtl = new JSONObject(); JSONObject ioStorInvDtl = new JSONObject();
ioStorInvDtl.putAll(row); ioStorInvDtl.putAll(row);
ioStorInvDtl.put("iostorinvdtl_id",IdUtil.getStringId()); ioStorInvDtl.put("iostorinvdtl_id",IdUtil.getStringId());

View File

@@ -1575,6 +1575,7 @@ var config = {
"frozen_quantity_cannot_be_negative": "Số lượng đóng băng không thể âm, vui lòng kiểm tra số lượng thay đổi! Số lượng đóng băng hiện tại là 【%s】 Số lượng thay đổi hiện tại là 【%s】" "frozen_quantity_cannot_be_negative": "Số lượng đóng băng không thể âm, vui lòng kiểm tra số lượng thay đổi! Số lượng đóng băng hiện tại là 【%s】 Số lượng thay đổi hiện tại là 【%s】"
}, },
"pda_manage": { "pda_manage": {
"ongoing_task_at_point":"Điểm này có nhiệm vụ đang thực hiện",
"change_type_cannot_be_empty": "Loại thay đổi không được để trống!", "change_type_cannot_be_empty": "Loại thay đổi không được để trống!",
"carrier_code_cannot_be_empty": "Mã phương tiện không được để trống!", "carrier_code_cannot_be_empty": "Mã phương tiện không được để trống!",
"material_id_cannot_be_empty": "Định danh vật liệu không được để trống!", "material_id_cannot_be_empty": "Định danh vật liệu không được để trống!",

View File

@@ -1575,6 +1575,7 @@ var config = {
"frozen_quantity_cannot_be_negative": "冻结数不能为负数,请检查变动数量!当前冻结为【%s】当前变动数为【%s】" "frozen_quantity_cannot_be_negative": "冻结数不能为负数,请检查变动数量!当前冻结为【%s】当前变动数为【%s】"
}, },
"pda_manage": { "pda_manage": {
"ongoing_task_at_point":"该点位存在正在执行的任务",
"change_type_cannot_be_empty": "变动类型不能为空!", "change_type_cannot_be_empty": "变动类型不能为空!",
"carrier_code_cannot_be_empty": "载具编码不能为空!", "carrier_code_cannot_be_empty": "载具编码不能为空!",
"material_id_cannot_be_empty": "物料标识不能为空!", "material_id_cannot_be_empty": "物料标识不能为空!",
@@ -1586,7 +1587,7 @@ var config = {
"vehicle_info_cannot_be_empty": "载具信息不能为空!", "vehicle_info_cannot_be_empty": "载具信息不能为空!",
"vehicle_already_has_group_plate_info": "载具编码:【%s】已存在组盘信息请对数据进行核实", "vehicle_already_has_group_plate_info": "载具编码:【%s】已存在组盘信息请对数据进行核实",
"vehicle_already_in_storage": "载具编码:【%s】已存在库内:【%s】请对数据进行核实", "vehicle_already_in_storage": "载具编码:【%s】已存在库内:【%s】请对数据进行核实",
"dtllist_cannot_be_empty": "dtlList不可为空", "dtllist_cannot_be_empty": "料框不可为空",
"vehicle_not_group_plated": "此载具未组盘,请检查!", "vehicle_not_group_plated": "此载具未组盘,请检查!",
"vehicle_not_in_group_plate_status": "此载具非组盘状态,请检查!", "vehicle_not_in_group_plate_status": "此载具非组盘状态,请检查!",
"point_not_exists": "点位不存在:【%s】", "point_not_exists": "点位不存在:【%s】",