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 != ''">
AND
attr.struct_code LIKE #{param.struct_code}
attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%')
</if>
<if test="param.material_code != null and param.material_code != ''">
@@ -130,8 +130,8 @@
<if test="param.struct_code != null and param.struct_code != ''">
AND
(attr.struct_code LIKE #{param.struct_code} or
attr.struct_name LIKE #{param.struct_code} )
(attr.struct_code LIKE CONCAT('%', #{param.struct_code}, '%') or
attr.struct_name LIKE CONCAT('%', #{param.struct_code}, '%') )
</if>
<if test="param.material_code != null and param.material_code != ''">
@@ -298,7 +298,7 @@
<if test="params.struct_code != null and params.struct_code != ''">
AND
(attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%')
attr.struct_code LIKE CONCAT('%', #{params.struct_code}, '%')
</if>
<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");
return structattrMapper.selectPage(new Page<>(page.getPage() + 1 ,page.getSize()), new LambdaQueryWrapper<Structattr>()
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_code, search)
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_name, search)
.and(StrUtil.isNotEmpty(search),lam -> lam.like(StrUtil.isNotEmpty(search), Structattr::getStruct_code, search)
.or().like(StrUtil.isNotEmpty(search), Structattr::getStruct_name, search)
)
.eq(StrUtil.isNotEmpty(stor_id),Structattr::getStor_id, stor_id)
.eq(StrUtil.isNotEmpty(sect_id),Structattr::getSect_id, sect_id)
.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.http.HttpStatus;
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.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.language.LangBehavior;
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.util.PdaResponse;
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.ISchBaseTaskService;
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.mapper.SchBaseTaskMapper;
@@ -64,6 +68,19 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Autowired
private TaskFactory taskFactory;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
/**
* 定点作业——经与项目经理沟通,已经转化成脱机作业。不改变库位。
* @param whereJson {
* start_point_code起点点位
* end_point_code终点点位
* storagevehicle_code载具编码
* acs_typeacs任务类型
* }
* @return
*/
@Override
@Transactional
public JSONObject pointTask(JSONObject whereJson) {
@@ -80,10 +97,29 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
if (ObjectUtil.isEmpty(end_point)) {
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();
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> 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>
ORDER BY create_time DESC
</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
SUM(pm_form_data.qty) as counts

View File

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

View File

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

View File

@@ -198,7 +198,7 @@ public class StInTask extends AbstractTask {
//更新组盘表状态
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())
.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.TaskType;
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.dao.GroupPlate;
import org.nl.wms.warehouse_manage.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.service.dao.mapper.IOStorInvDisMapper;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,9 @@ public class StOutTask extends AbstractTask {
@Resource
private IOStorInvDisMapper ioStorInvDisMapper;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -175,6 +180,12 @@ public class StOutTask extends AbstractTask {
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.setRemark("已取消");

View File

@@ -126,7 +126,8 @@
dtl.*,
mb.material_code,
mb.material_name,
mst.bill_code
mst.bill_code,
mst.vehicle_code storagevehicle_code
FROM
st_ivt_iostorinvdtl dtl
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 + "");
for (int i = 0; i < rows.size(); 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();
ioStorInvDtl.putAll(row);
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】"
},
"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!",
"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!",

View File

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