xzh #1

Merged
xuzh merged 3 commits from xzh into main 2026-06-15 19:49:03 +08:00
53 changed files with 1572 additions and 67 deletions

View File

@@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.gateway.dto.InteracteDto;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

View File

@@ -23,14 +23,14 @@ import java.util.List;
* @Date 2024/4/6 16:18
* 先进先出策略
*/
@Service("fIfONoStor")
//@Service("fIfONoStor")
@Slf4j
public class FIFONoStorHandler extends Decisioner<StrategyStructMaterialVO, StrategyStructParam> {
/**
* 出入库明细服务
*/
@Autowired
// @Autowired
private IStructattrService iStructattrService;
@Override

View File

@@ -2,7 +2,7 @@ package org.nl.wms.ext_manage.service;
import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import java.util.List;

View File

@@ -10,8 +10,8 @@ import org.nl.wms.ext_manage.service.AcsToWmsService;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.TaskFactory;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -5,7 +5,7 @@ import org.nl.wms.ext_manage.enums.EXTConstant;
import org.nl.wms.ext_manage.service.WmsToAcsService;
import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.ext_manage.util.AcsUtil;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.springframework.stereotype.Service;
import java.util.List;

View File

@@ -30,8 +30,8 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseRegionService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseRegion;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.tasks.BackInTask;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.tasks.BackInTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;

View File

@@ -34,13 +34,11 @@ import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.tasks.PdaPointTask;
import org.nl.wms.sch_manage.service.core.tasks.VehicleOutTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
@@ -51,7 +49,6 @@ import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMappe
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_manage.service.util.UpdateIvtUtils;
import org.nl.wms.warehouse_manage.stockReturn.service.IPmStockReturnService;
import org.nl.wms.warehouse_manage.stockReturn.service.dao.PmStockReturn;
import org.nl.wms.warehouse_manage.stockReturn.service.enums.StockReturnStatusEnum;

View File

@@ -17,9 +17,9 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
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;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.TaskFactory;
import org.nl.wms.sch_manage.service.core.tasks.PdaPointTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import cn.hutool.core.util.ObjectUtil;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import cn.hutool.core.collection.CollectionUtil;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import com.alibaba.fastjson.JSONObject;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util;
package org.nl.wms.sch_manage.service.core;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -15,9 +15,9 @@ 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.util.AbstractTask;
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.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,9 +11,9 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
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.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.service.IStIvtMoveinvService;
import org.nl.wms.warehouse_manage.service.IStIvtMoveinvdtlService;
import org.nl.wms.warehouse_manage.service.dao.StIvtMoveinvdtl;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -15,9 +15,9 @@ 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.util.AbstractTask;
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.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,9 +11,9 @@ import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
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.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,9 +11,9 @@ import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
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.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -15,9 +15,9 @@ 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.util.AbstractTask;
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.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.sch_manage.service.util.tasks;
package org.nl.wms.sch_manage.service.core.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -11,9 +11,9 @@ import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
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.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import org.nl.wms.sch_manage.service.core.TaskType;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;

View File

@@ -26,7 +26,7 @@ import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseRegionMapper;
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.sch_manage.service.dto.SchBasePointQuery;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.core.PointUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@@ -12,29 +12,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.StatusEnum;
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;
import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.core.AbstractTask;
import org.nl.wms.sch_manage.service.core.TaskFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author Liuxy

View File

@@ -29,7 +29,7 @@ import org.nl.wms.basedata_manage.service.dto.StrategyMater;
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
import org.nl.wms.sch_manage.service.core.tasks.StInTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;

View File

@@ -37,7 +37,7 @@ 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.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
import org.nl.wms.sch_manage.service.core.tasks.StOutTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inventory.IStInventoryService;

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -36,9 +37,18 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
*/
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
//查询载具物料信息
List<JSONObject> getVehicleMaterial(@Param("params") Map whereJson);
//根据托盘码和物料ID获取对应数据
List<JSONObject> qryDelByPalletCode(String palletCode, String materialId);
/**
* 修改组盘数量
* @param group_id
* @param qty
*/
void updateGroupPalletById(String group_id, BigDecimal qty);
void insertAllData(List<JSONObject> data);
}

View File

@@ -85,4 +85,34 @@
</where>
ORDER BY gro.create_time Desc
</select>
<select id="qryDelByPalletCode" resultType="com.alibaba.fastjson.JSONObject">
SELECT * FROM md_pb_groupplate WHERE storagevehicle_code = #{palletCode} AND material_id = #{materialId} ORDER BY create_time DESC LIMIT 1
</select>
<update id="updateGroupPalletById">
UPDATE md_pb_groupplate SET qty = qty + #{qty} WHERE group_id = #{group_id}
</update>
<insert id="insertAllData">
INSERT INTO md_pb_groupplate(
group_id,storagevehicle_code,material_id,pcsn,qty,qty_unit_id,qty_unit_name,ext_code,load_port,create_id,create_name,create_time
) values
<foreach collection="data" item="item" separator=",">
(
#{item.group_id},
#{item.storagevehicle_code},
#{item.material_id},
#{item.pcsn},
#{item.qty},
#{item.qty_unit_id},
#{item.qty_unit_name},
#{item.ext_code},
#{item.load_port},
#{item.create_id},
#{item.create_name},
#{item.create_time}
)
</foreach>
</insert>
</mapper>

View File

@@ -18,7 +18,7 @@ import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.tasks.MoveTask;
import org.nl.wms.sch_manage.service.core.tasks.MoveTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;

View File

@@ -13,7 +13,7 @@ import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.sch_manage.enums.TaskEnum;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.util.tasks.MoveTask;
import org.nl.wms.sch_manage.service.core.tasks.MoveTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;

View File

@@ -0,0 +1,34 @@
package org.nl.wms.welding_manage.controller.device_interaction;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @desc 焊接区设备上下料
*/
@RestController
@RequestMapping("/api")
@Slf4j
public class InteractionController {
@PostMapping("/feed")
@Log("产线缺料请求")
public ResponseEntity<Object> feed()
{
return null;
}
@PostMapping("/blank")
@Log("产线下料半成品入库请求")
public ResponseEntity<Object> blank()
{
return null;
}
}

View File

@@ -0,0 +1,36 @@
package org.nl.wms.welding_manage.controller.product_group;
import cn.dev33.satoken.annotation.SaIgnore;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.welding_manage.service.product_group.IProductGroupService;
import org.nl.wms.welding_manage.service.product_group.dto.GroupPalletDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @desc 产品配盘接口
*/
@RestController
@RequestMapping("/api/productGroup")
@Slf4j
@SaIgnore
public class ProductGroupController {
@Autowired
private IProductGroupService productGroupService;
@PostMapping
@Log("人工组盘")
public ResponseEntity<Object> groupPallet(@Validated @RequestBody GroupPalletDto dto) {
productGroupService.groupPallet(dto);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,37 @@
package org.nl.wms.welding_manage.controller.secure_interaction;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.welding_manage.service.secure_interaction.ISecureInteractionService;
import org.nl.wms.welding_manage.service.secure_interaction.dto.SecureInteractionDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @desc 安全交互功能
*/
@RestController
@RequestMapping("/api/secureInteraction")
@Slf4j
public class SecureInteractionController {
@Autowired
private ISecureInteractionService iSecureInteractionService;
public ResponseEntity<Object> pickUpRequest(@Validated @RequestBody SecureInteractionDto dto)
{
boolean status = iSecureInteractionService.secureInteraction(dto);
if (!status) {
//失败返回
return new ResponseEntity<>(null);
}
// iSecureInteractionService.
return new ResponseEntity<>(null);
}
}

View File

@@ -0,0 +1,59 @@
package org.nl.wms.welding_manage.controller.work_order;
import cn.dev33.satoken.annotation.SaIgnore;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
import org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 工单接口类
*/
@RestController
@RequestMapping("/api/workOrder")
@Slf4j
@SaIgnore
public class WorkOrderController {
@Autowired
private IWorkOrderService iWorkOrderService;
@GetMapping
@Log("分页查询工单列表和详情")
public ResponseEntity<Object> query(@RequestParam Map params, PageQuery page)
{
return new ResponseEntity<>(TableDataInfo.build(iWorkOrderService.queryList(page, params)), HttpStatus.OK);
}
@PostMapping
@Log("保存工单")
public ResponseEntity<Object> save(@Validated @RequestBody WorkOrderDto dto)
{
iWorkOrderService.insert(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改工单")
public ResponseEntity<Object> update()
{
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除工单")
public ResponseEntity<Object> delete()
{
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,26 @@
package org.nl.wms.welding_manage.enums.secure_interaction;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum TypeEnum {
PICK_REQUEST(1, "取请求"),
PICK_FINISH(3, "取完成"),
RELEASE_REQUEST(2, "放请求"),
RELEASE_FINISH(4, "放完成");
private final Integer code;
private final String description;
public static TypeEnum find(Integer code) {
for (TypeEnum value : TypeEnum.values()) {
if (code.equals(value.getCode())) {
return value;
}
}
return null;
}
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.welding_manage.enums.work_order;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum StatusEnum {
WORK_ORDER_WAIT(1, "待执行"),
WORK_ORDER_EXEC(2, "执行中"),
WORK_ORDER_FINISH(3, "完成"),
WORK_ORDER_PAUSE(4, "暂停"),
WORK_ORDER_REVOKE(5, "撤销"),
;
private final Integer code;
private final String description;
}

View File

@@ -0,0 +1,17 @@
package org.nl.wms.welding_manage.service.device_interaction;
import org.nl.wms.welding_manage.service.device_interaction.dto.BlankDto;
import org.nl.wms.welding_manage.service.device_interaction.dto.FeedDto;
public interface IInteractionService {
/**
* 处理产线叫料请求
* @param dto
* @return
*/
boolean feed(FeedDto dto);
boolean blank(BlankDto dto);
}

View File

@@ -0,0 +1,46 @@
package org.nl.wms.welding_manage.service.device_interaction.dto;
import lombok.Data;
/**
* @desc 产线下料请求入参
*/
@Data
public class BlankDto {
/**
* @desc 产线编码
*/
private String LineCode;
/**
* @desc 下料位置
*/
private String UnloadPort;
/**
* @desc 工单编码
*/
private String OrderCode;
/**
* @desc 下料数量
*/
private String UnloadQty;
/**
* @desc 物料编码
*/
private String MaterialCode;
/**
* @desc 物料名称
*/
private String MaterialName;
/**
* @desc 创建时间
*/
private String CreatedOn;
}

View File

@@ -0,0 +1,36 @@
package org.nl.wms.welding_manage.service.device_interaction.dto;
import lombok.Data;
/**
* @desc 产线缺料请求入参
*/
@Data
public class FeedDto {
/**
* @desc 产线编码
*/
private String LineCode;
/**
* @desc 用料位置
*/
private String PortCode;
/**
* @desc 工单编码
*/
private String OrderCode;
/**
* @desc 请求码, -- 返空+送满 1 送满 2 返空 3 托盘余料退回 4
*/
private String RequestedCode;
/**
* @desc 请求时间, --yyyy-MM-dd HH:mm:ss.fff
*/
private String RequestedOn;
}

View File

@@ -0,0 +1,92 @@
package org.nl.wms.welding_manage.service.device_interaction.impl;
import org.nl.wms.welding_manage.service.device_interaction.IInteractionService;
import org.nl.wms.welding_manage.service.device_interaction.dto.BlankDto;
import org.nl.wms.welding_manage.service.device_interaction.dto.FeedDto;
public class InteractionServiceImpl implements IInteractionService {
@Override
public boolean feed(FeedDto dto) {
if (dto.getLineCode().isEmpty() || dto.getPortCode().isEmpty() || dto.getOrderCode().isEmpty() || dto.getRequestedCode().isEmpty()) {
//添加异常返回并推送至PDA
return false;
}
//2.判断请求码:返空+送满 1 送满 2 返空 3 托盘余料退回 4
switch (dto.getRequestedCode())
{
case "1":
//返空+送满
this.returnEmptyLoadFull(dto);
break;
case "2":
//送满
this.LoadFull(dto);
break;
case "3":
//返空
this.returnEmpty(dto);
break;
case "4":
//余料退回
this.returnWarehouse(dto);
break;
default:
//添加异常信息返回对象返回异常
return false;
}
//3.请求处理未完成缺料反空未执行结束计入redis中通过定时任务消费
return false;
}
@Override
public boolean blank(BlankDto dto) {
return false;
}
/**
* @desc 返空上满处理逻辑
*/
public void returnEmptyLoadFull(FeedDto dto) {
//数据需要存入返空放满队列
}
/**
* @desc 上满处理逻辑
*/
public void LoadFull(FeedDto dto) {
//根据叫料位置和工单确认叫料信息
//判断是否有库存
//有库存直接创建AGV任务 && 下发任务给到NDC
}
/**
* @desc 返空处理逻辑
*/
public void returnEmpty(FeedDto dto) {
//根据库位获取对应返空区域
//判断区域内能否放空盘
//能放空盘入库
//不能放空盘计入redis并将信息推送至PDA
}
/**
* @desc 余料退库处理逻辑
*/
public void returnWarehouse(FeedDto dto) {
//根据产线编码+用料位置确认请求位置
//创建AGV任务 && 下发AGV任务至NDC
}
}

View File

@@ -0,0 +1,11 @@
package org.nl.wms.welding_manage.service.product_group;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.welding_manage.service.product_group.dto.GroupPalletDto;
public interface IProductGroupService {
void groupPallet(GroupPalletDto dto);
}

View File

@@ -0,0 +1,35 @@
package org.nl.wms.welding_manage.service.product_group.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
@JsonIgnoreProperties(ignoreUnknown = true) //忽略未知字段
public class GroupPalletDto {
private String workOrder;
private String palletCode;
private String loadPort;
private List<BomData> bomDataList;
@Data
@JsonIgnoreProperties(ignoreUnknown = true) //忽略未知字段
public static class BomData {
private String id;
private String materialCode;
private String unit;
private BigDecimal useBomQty;
}
}

View File

@@ -0,0 +1,83 @@
package org.nl.wms.welding_manage.service.product_group.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.IdUtil;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.welding_manage.enums.work_order.StatusEnum;
import org.nl.wms.welding_manage.service.product_group.IProductGroupService;
import org.nl.wms.welding_manage.service.product_group.dto.GroupPalletDto;
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
public class ProductGroupServiceImpl implements IProductGroupService {
@Autowired
private IWorkOrderService workOrderService;
@Autowired
private MdPbGroupplateMapper GroupPlateMapper;
@Override
@Transactional
public void groupPallet(GroupPalletDto dto) {
//修改工单状态todo 防呆校验
workOrderService.updateWorkOrderStatus(dto.getWorkOrder(), StatusEnum.WORK_ORDER_EXEC.getCode());
//循环修改对应BomList表中已使用数量
for (GroupPalletDto.BomData bomData : dto.getBomDataList()) {
workOrderService.updateBomUseQty(bomData.getId(), bomData.getUseBomQty());
}
//构建组盘数据
List<JSONObject> groupPalletList = new ArrayList<>();
//查询当前数据是否存在
for (GroupPalletDto.BomData bomData : dto.getBomDataList()) {
//如果存在执行更新
List<JSONObject> jsonObjects = GroupPlateMapper.qryDelByPalletCode(dto.getPalletCode(), bomData.getMaterialCode());
if (jsonObjects != null && !jsonObjects.isEmpty()) {
//修改组盘数据
GroupPlateMapper.updateGroupPalletById(jsonObjects.get(0).getString("group_id"), bomData.getUseBomQty());
continue;
}
JSONObject json = new JSONObject();
json.put("group_id", IdUtil.getStringId());
json.put("ext_code", dto.getWorkOrder());
json.put("load_port", dto.getLoadPort());
json.put("storagevehicle_code", dto.getPalletCode());
json.put("material_id", bomData.getMaterialCode());
json.put("pcsn", "");
json.put("qty_unit_id", bomData.getUnit());
json.put("qty_unit_name", bomData.getUnit());
json.put("qty", bomData.getUseBomQty());
json.put("create_id", "1");
json.put("create_name", "admin");
// json.put("create_id", SecurityUtils.getCurrentUserId());
// json.put("create_name", SecurityUtils.getCurrentUsername());
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = now.format(formatter);
json.put("create_time", formatted);
//不存在插入数据批量插入
groupPalletList.add(json);
}
if (!groupPalletList.isEmpty()) {
//执行批量新增
GroupPlateMapper.insertAllData(groupPalletList);
}
}
}

View File

@@ -0,0 +1,10 @@
package org.nl.wms.welding_manage.service.secure_interaction;
import org.nl.wms.welding_manage.service.secure_interaction.dto.SecureInteractionDto;
public interface ISecureInteractionService {
boolean secureInteraction(SecureInteractionDto dto);
}

View File

@@ -0,0 +1,14 @@
package org.nl.wms.welding_manage.service.secure_interaction.dto;
import lombok.Data;
@Data
public class SecureInteractionDto {
private String point;
private String type;
private String containerCode;
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.welding_manage.service.secure_interaction.impl;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.welding_manage.service.secure_interaction.ISecureInteractionService;
import org.nl.wms.welding_manage.service.secure_interaction.dto.SecureInteractionDto;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class SecureInteractionServiceImpl implements ISecureInteractionService {
@Override
public boolean secureInteraction(SecureInteractionDto dto) {
// if (dto.getType()) {
//
// }
return false;
}
}

View File

@@ -0,0 +1,37 @@
package org.nl.wms.welding_manage.service.work_order;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
import org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto;
import java.math.BigDecimal;
import java.util.Map;
public interface IWorkOrderService extends IService<WorkOrderDao> {
/**
* 分页查询工单详情
* @param pageable
* @param params
* @return
*/
IPage<WorkOrderDto.WorkOrderDataDto> queryList(PageQuery pageable, Map params);
/**
* 新增工单
* @param entity
*/
void insert(WorkOrderDto entity);
/**
* 修改工单状态
*/
Boolean updateWorkOrderStatus(String orderCode, int status);
/**
* 修改工单已使用bom数量
*/
void updateBomUseQty(String id, BigDecimal qty);
}

View File

@@ -0,0 +1,83 @@
package org.nl.wms.welding_manage.service.work_order.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("md_work_order_bom")
public class WorkOrderBomDao {
private String id;
private String item_id;
private Integer item_no;
private String material_code;
private String material_name;
private String spec;
private String unit;
private String base_unit;
private BigDecimal bom_qty;
private BigDecimal use_bom_qty;
private String work_center;
private String load_port;
private String dept_code;
private String sup_org_code;
private BigDecimal warehouse_code;
private String warehouse_name;
private String stocker_code;
private String stocker_name;
private String work_order_code;
private String line_pod;
private String bom_prop1;
private String bom_prop2;
private String bom_prop3;
private String attr_01;
private String attr_02;
private String attr_03;
private String attr_04;
private String attr_05;
private String attr_06;
private String track_no;
private BigDecimal wms_qty;
private BigDecimal eas5_qty;
private BigDecimal eas4_qty;
private BigDecimal group_pallet_qty;
private Integer status;
}

View File

@@ -0,0 +1,106 @@
package org.nl.wms.welding_manage.service.work_order.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("md_work_order")
public class WorkOrderDao {
private String id;
private String work_order_sn_list;
private String org_code;
private String order_code;
private String order_id;
private String biz_dept_code;
private String order_type;
private String remark;
private String bom_code;
private Integer order_qty;
private Integer use_order_qty;
private String plan_started_on;
private String plan_finished_on;
private BigDecimal default_warehouse_code;
private String default_warehouse_name;
private String track_no;
private String unit;
private String biz_date;
private String product_code;
private String product_name;
private String product_spec;
private String color_code;
private String sn_detail;
private String process_plan;
private String step_code;
private String lot_number;
private String production_status;
private String work_area;
private String work_area_type;
private String finished_qty;
private String attr_01;
private String attr_02;
private String attr_03;
private String attr_04;
private String attr_05;
private String attr_06;
private String ser_no;
private String src_order_code;
private String finished_rate;
private String product_type;
private String layout_code;
private String factory;
private String workshop;
private int status;
private String create_time;
private String update_time;
}

View File

@@ -0,0 +1,45 @@
package org.nl.wms.welding_manage.service.work_order.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.lettuce.core.dynamic.annotation.Param;
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
import org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public interface WorkOrderMapper extends BaseMapper<WorkOrderDao> {
/**
* 分页查询工单
* @param page
* @param params
* @return
*/
IPage<WorkOrderDto.WorkOrderDataDto> queryList(Page<WorkOrderDto.WorkOrderDataDto> page, @Param("params") Map params);
/**
* 保存工单
* @param workOrderDataDto
*/
void saveWorkOrder(WorkOrderDto.WorkOrderDataDto workOrderDataDto);
/**
* 批量保存BOM_LIST
* @param bomList
*/
void saveAllBom(List<WorkOrderDto.WorkOrderDataDto.WorkOrderBomDto> bomList);
/**
* 修改工单状态
*/
void updateWorkOrderStatus(String orderCode, int status);
/**
* 修改对应bom使用数量
*/
void updateBomUseQty(String id, BigDecimal qty);
}

View File

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.welding_manage.service.work_order.dao.mapper.WorkOrderMapper">
<insert id="saveWorkOrder">
INSERT INTO md_work_order(
id, work_order_sn_list, org_code, order_code, order_id, biz_dept_code,
order_type, remark, bom_code, order_qty, plan_started_on,plan_finished_on,
default_warehouse_code, default_warehouse_name, track_no, unit, biz_date,
product_code, product_name, product_spec, color_code, sn_detail, process_plan,
step_code, lot_number, production_status, work_area, work_area_type, finished_qty,
attr_01, attr_02, attr_03, attr_04, attr_05, attr_06, src_order_code, finished_rate,
product_type,layout_code, factory, workshop, create_time
) VALUES (
#{id}, #{workOrderSnListString}, #{orgCode}, #{orderCode}, #{orderId}, #{bizDeptCode},
#{orderType}, #{remark}, #{bomCode}, #{orderQty}, #{planStartedOn}, #{planFinishedOn},
#{defaultWarehouseCode}, #{defaultWarehouseName}, #{trackNo}, #{unit}, #{bizDate},
#{productCode}, #{productName}, #{productSpec}, #{colorCode}, #{snDetail}, #{processPlan},
#{stepCode}, #{lotNumber}, #{productionStatus}, #{workArea}, #{workAreaType}, #{finishedQty},
#{attr01}, #{attr02}, #{attr03}, #{attr04}, #{attr05}, #{attr06}, #{srcOrderCode}, #{finishedRate},
#{productType}, #{layoutCode}, #{factory}, #{workshop}, #{createTime}
)
</insert>
<insert id="saveAllBom">
INSERT INTO md_work_order_bom(
id, item_id, item_no, material_code, material_name, spec, unit, base_unit,
bom_qty, work_center, load_port, dept_code, sup_org_code, warehouse_code,
warehouse_name, stocker_code, stocker_name, work_order_code, line_pod,
bom_prop1, bom_prop2, bom_prop3, attr_01, attr_02, attr_03, attr_04,
attr_05, attr_06, track_no, wms_qty, eas5_qty, eas4_qty
) VALUES
<foreach collection="bomList" item="bom" separator=",">
(
#{bom.id}, #{bom.itemId}, #{bom.itemNo}, #{bom.materialCode}, #{bom.materialName},
#{bom.spec}, #{bom.unit}, #{bom.baseUnit}, #{bom.bomQty}, #{bom.workCenter},
#{bom.loadPort}, #{bom.deptCode}, #{bom.supOrgCode}, #{bom.warehouseCode},
#{bom.warehouseName}, #{bom.stockerCode}, #{bom.stockerName}, #{bom.workOrderCode},
#{bom.linePod}, #{bom.bomProp1}, #{bom.bomProp2}, #{bom.bomProp3}, #{bom.attr01},
#{bom.attr02}, #{bom.attr03}, #{bom.attr04}, #{bom.attr05}, #{bom.attr06},
#{bom.trackNo}, #{bom.wmsQty}, #{bom.eas5Qty}, #{bom.eas4Qty}
)
</foreach>
</insert>
<update id="updateWorkOrderStatus">
UPDATE md_work_order SET status = #{status} WHERE order_code = #{orderCode}
</update>
<update id="updateBomUseQty">
UPDATE md_work_order_bom SET use_bom_qty = use_bom_qty + #{qty} WHERE id = #{id}
</update>
<!--查询工单列表-->
<select id="queryList" resultMap="workOrderList">
SELECT * FROM md_work_order
<where>
<if test="params.orderCode != null and params.orderCode != ''" >
AND order_code LIKE CONCAT('%', #{params.orderCode}, '%')
</if>
<if test="params.productName" >
AND product_name = #{params.productName}
</if>
<if test="params.bomCode != null" >
AND bom_code = #{params.bomCode}
</if>
<if test="params.workArea != null" >
AND work_area = #{params.workArea}
</if>
<if test="params.status" >
AND `status` = #{params.status}
</if>
</where>
ORDER BY `plan_started_on` Desc
</select>
<select id="selectBomByWorkOrderCode" resultMap="workOrderBom">
SELECT
*
FROM
md_work_order_bom
WHERE
work_order_code = #{orderCode}
ORDER BY
load_port ASC, item_no ASC
</select>
<resultMap id="workOrderList" type="org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto$WorkOrderDataDto">
<result property="id" column="id"/>
<result property="workOrderSnListString" column="work_order_sn_list"/>
<result property="orderStatus" column="order_status"/>
<result property="orgCode" column="org_code"/>
<result property="orderCode" column="order_code"/>
<result property="orderId" column="order_id"/>
<result property="bizDeptCode" column="biz_dept_code"/>
<result property="orderType" column="order_type"/>
<result property="remark" column="remark"/>
<result property="createdBy" column="created_by"/>
<result property="modifiedOn" column="modified_on"/>
<result property="checkedBy" column="checked_by"/>
<result property="bomCode" column="bom_code"/>
<result property="orderQty" column="order_qty"/>
<result property="useOrderQty" column="use_order_qty"/>
<result property="planStartedOn" column="plan_started_on"/>
<result property="planFinishedOn" column="plan_finished_on"/>
<result property="defaultWarehouseCode" column="default_warehouse_code"/>
<result property="defaultWarehouseName" column="default_warehouse_name"/>
<result property="trackNo" column="track_no"/>
<result property="unit" column="unit"/>
<result property="bizDate" column="biz_date"/>
<result property="productCode" column="product_code"/>
<result property="productName" column="product_name"/>
<result property="productSpec" column="product_spec"/>
<result property="colorCode" column="color_code"/>
<result property="snDetail" column="sn_detail"/>
<result property="processPlan" column="process_plan"/>
<result property="stepCode" column="step_code"/>
<result property="lotNumber" column="lot_number"/>
<result property="productionStatus" column="production_status"/>
<result property="workArea" column="work_area"/>
<result property="workAreaType" column="work_area_type"/>
<result property="teamName" column="team_name"/>
<result property="modifiedBy" column="modified_by"/>
<result property="modifiedTime" column="modified_time"/>
<result property="createdOn" column="created_on"/>
<result property="finishedQty" column="finished_qty"/>
<result property="seqNo" column="seq_no"/>
<result property="attr01" column="attr_01"/>
<result property="attr02" column="attr_02"/>
<result property="attr03" column="attr_03"/>
<result property="attr04" column="attr_04"/>
<result property="attr05" column="attr_05"/>
<result property="attr06" column="attr_06"/>
<result property="serNo" column="ser_no"/>
<result property="actualStartedOn" column="actual_started_on"/>
<result property="actualFinishedOn" column="actual_finished_on"/>
<result property="srcOrderCode" column="src_order_code"/>
<result property="finishedRate" column="finished_rate"/>
<result property="bizDeptName" column="biz_dept_name"/>
<result property="productType" column="product_type"/>
<result property="layoutCode" column="layout_code"/>
<result property="factory" column="factory"/>
<result property="workshop" column="workshop"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<collection
property="workOrderBomList"
column="order_code"
select="selectBomByWorkOrderCode"
/>
</resultMap>
<resultMap id="workOrderBom" type="org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto$WorkOrderDataDto$WorkOrderBomDto">
<result property="id" column="id"/>
<result property="itemId" column="item_id"/>
<result property="itemNo" column="item_no"/>
<result property="materialCode" column="material_code"/>
<result property="materialName" column="material_name"/>
<result property="spec" column="spec"/>
<result property="unit" column="unit"/>
<result property="baseUnit" column="base_unit"/>
<result property="bomQty" column="bom_qty"/>
<result property="useBomQty" column="use_bom_qty"/>
<result property="workCenter" column="work_center"/>
<result property="loadPort" column="load_port"/>
<result property="deptCode" column="dept_code"/>
<result property="supOrgCode" column="sup_org_code"/>
<result property="warehouseCode" column="warehouse_code"/>
<result property="warehouseName" column="warehouse_name"/>
<result property="stockerCode" column="stocker_code"/>
<result property="stockerName" column="stocker_name"/>
<result property="workOrderCode" column="work_order_code"/>
<result property="linePod" column="line_pod"/>
<result property="bomProp1" column="bom_prop1"/>
<result property="bomProp2" column="bom_prop2"/>
<result property="bomProp3" column="bom_prop3"/>
<result property="attr01" column="attr_01"/>
<result property="attr02" column="attr_02"/>
<result property="attr03" column="attr_03"/>
<result property="attr04" column="attr_04"/>
<result property="attr05" column="attr_05"/>
<result property="attr06" column="attr_06"/>
<result property="trackNo" column="track_no"/>
<result property="wmsQty" column="wms_qty"/>
<result property="eas5Qty" column="eas5_qty"/>
<result property="eas4Qty" column="eas4_qty"/>
<result property="groupPalletQty" column="group_pallet_qty"/>
<result property="status" column="status"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,323 @@
package org.nl.wms.welding_manage.service.work_order.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
@JsonIgnoreProperties(ignoreUnknown = true) //忽略未知字段
public class WorkOrderDto implements Serializable {
@JsonProperty("WorkOrder")
private WorkOrderDataDto workOrder;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class WorkOrderDataDto implements Serializable {
@JsonProperty("Id")
private String id;
@JsonProperty("WorkOrderSnList")
private List<String> workOrderSnList;
private String workOrderSnListString;
@JsonProperty("OrderStatus")
private String orderStatus;
@JsonProperty("OrgCode")
private String orgCode;
@JsonProperty("OrderCode")
private String orderCode;
@JsonProperty("OrderId")
private String orderId;
@JsonProperty("BizDeptCode")
private String bizDeptCode;
@JsonProperty("OrderType")
private String orderType;
@JsonProperty("Remark")
private String remark;
@JsonProperty("CreatedBy")
private String createdBy;
@JsonProperty("ModifiedOn")
private String modifiedOn;
@JsonProperty("CheckedBy")
private String checkedBy;
@JsonProperty("BomCode")
private String bomCode;
@JsonProperty("OrderQty")
private Integer orderQty;
@JsonProperty("UseOrderQty")
private Integer useOrderQty;
@JsonProperty("PlanStartedOn")
private String planStartedOn;
@JsonProperty("PlanFinishedOn")
private String planFinishedOn;
@JsonProperty("DefaultWarehouseCode")
private BigDecimal defaultWarehouseCode;
@JsonProperty("DefaultWarehouseName")
private String defaultWarehouseName;
@JsonProperty("TrackNo")
private String trackNo;
@JsonProperty("Unit")
private String unit;
@JsonProperty("BizDate")
private String bizDate;
@JsonProperty("ProductCode")
private String productCode;
@JsonProperty("ProductName")
private String productName;
@JsonProperty("ProductSpec")
private String productSpec;
@JsonProperty("ColorCode")
private String colorCode;
@JsonProperty("SnDetail")
private String snDetail;
@JsonProperty("ProcessPlan")
private String processPlan;
@JsonProperty("StepCode")
private String stepCode;
@JsonProperty("LotNumber")
private String lotNumber;
@JsonProperty("ProductionStatus")
private String productionStatus;
@JsonProperty("WorkArea")
private String workArea;
@JsonProperty("WorkAreaType")
private String WorkAreaType;
@JsonProperty("TeamName")
private String teamName;
@JsonProperty("ModifiedBy")
private String modifiedBy;
@JsonProperty("ModifiedTime")
private String modifiedTime;
@JsonProperty("CreatedOn")
private String createdOn;
@JsonProperty("FinishedQty")
private String finishedQty;
@JsonProperty("SeqNo")
private String seqNo;
@JsonProperty("Attr01")
private String attr01;
@JsonProperty("Attr02")
private String attr02;
@JsonProperty("Attr03")
private String attr03;
@JsonProperty("Attr04")
private String attr04;
@JsonProperty("Attr05")
private String attr05;
@JsonProperty("Attr06")
private String attr06;
@JsonProperty("SerNo")
private String serNo;
@JsonProperty("ActualStartedOn")
private String actualStartedOn;
@JsonProperty("ActualFinishedOn")
private String actualFinishedOn;
@JsonProperty("SrcOrderCode")
private String srcOrderCode;
@JsonProperty("FinishedRate")
private String finishedRate;
@JsonProperty("BizDeptName")
private String bizDeptName;
@JsonProperty("ProductType")
private String productType;
@JsonProperty("LayoutCode")
private String layoutCode;
@JsonProperty("Factory")
private String factory;
@JsonProperty("Workshop")
private String workshop;
@JsonProperty("Status")
private String status;
@JsonProperty("CreateTime")
private String createTime;
@JsonProperty("UpdateTime")
private String updateTime;
@JsonProperty("PortList")
private List<FeedPortDto> portList;
@JsonProperty("WorkOrderBomList")
List<WorkOrderBomDto> workOrderBomList;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class FeedPortDto implements Serializable {
@JsonProperty("Port")
private String port;
}
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class WorkOrderBomDto implements Serializable {
@JsonProperty("Id")
private String id;
@JsonProperty("ItemId")
private String itemId;
@JsonProperty("ItemNo")
private Integer itemNo;
@JsonProperty("MaterialCode")
private String materialCode;
@JsonProperty("MaterialName")
private String materialName;
@JsonProperty("Spec")
private String spec;
@JsonProperty("Unit")
private String unit;
@JsonProperty("BaseUnit")
private String baseUnit;
@JsonProperty("BomQty")
private BigDecimal bomQty;
@JsonProperty("UseBomQty")
private BigDecimal useBomQty;
@JsonProperty("WorkCenter")
private String workCenter;
@JsonProperty("LoadPort")
private String loadPort;
@JsonProperty("DeptCode")
private String deptCode;
@JsonProperty("SupOrgCode")
private String supOrgCode;
@JsonProperty("WarehouseCode")
private BigDecimal warehouseCode;
@JsonProperty("WarehouseName")
private String warehouseName;
@JsonProperty("StockerCode")
private String stockerCode;
@JsonProperty("StockerName")
private String stockerName;
@JsonProperty("WorkOrderCode")
private String workOrderCode;
@JsonProperty("LinePod")
private String linePod;
@JsonProperty("BomProp1")
private String bomProp1;
@JsonProperty("BomProp2")
private String bomProp2;
@JsonProperty("BomProp3")
private String bomProp3;
@JsonProperty("Attr01")
private String attr01;
@JsonProperty("Attr02")
private String attr02;
@JsonProperty("Attr03")
private String attr03;
@JsonProperty("Attr04")
private String attr04;
@JsonProperty("Attr05")
private String attr05;
@JsonProperty("Attr06")
private String attr06;
@JsonProperty("TrackNo")
private String trackNo;
@JsonProperty("WmsQty")
private BigDecimal wmsQty;
@JsonProperty("Eas5Qty")
private BigDecimal eas5Qty;
@JsonProperty("Eas4Qty")
private BigDecimal eas4Qty;
@JsonProperty("GroupPalletQty")
private BigDecimal groupPalletQty;
@JsonProperty("Status")
private BigDecimal status;
}
}
}

View File

@@ -0,0 +1,112 @@
package org.nl.wms.welding_manage.service.work_order.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.welding_manage.service.work_order.dao.WorkOrderDao;
import org.nl.wms.welding_manage.service.work_order.dao.mapper.WorkOrderMapper;
import org.nl.wms.welding_manage.service.work_order.dto.WorkOrderDto;
import org.nl.wms.welding_manage.service.work_order.IWorkOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrderDao> implements IWorkOrderService {
@Autowired
private WorkOrderMapper workOrderMapper;
@Override
public IPage<WorkOrderDto.WorkOrderDataDto> queryList(PageQuery page, Map params) {
IPage<WorkOrderDto.WorkOrderDataDto> workOrderDataDtoIPage = workOrderMapper.queryList(new Page<>(page.getPage() + 1, page.getSize()), params);
List<WorkOrderDto.WorkOrderDataDto> records = workOrderDataDtoIPage.getRecords();
if (records != null && !records.isEmpty()) {
for (WorkOrderDto.WorkOrderDataDto record : records) {
//获取PortList并去重
List<WorkOrderDto.WorkOrderDataDto.WorkOrderBomDto> workOrderBomList = record.getWorkOrderBomList();
if (workOrderBomList != null && !workOrderBomList.isEmpty()) {
List<WorkOrderDto.WorkOrderDataDto.FeedPortDto> portDtoList = workOrderBomList.stream()
.map(WorkOrderDto.WorkOrderDataDto.WorkOrderBomDto::getLoadPort)
.filter(Objects::nonNull)
.filter(s -> !s.trim().isEmpty())
.distinct() // 直接去重
.map(port -> {
WorkOrderDto.WorkOrderDataDto.FeedPortDto dto = new WorkOrderDto.WorkOrderDataDto.FeedPortDto();
dto.setPort(port);
return dto;
})
.collect(Collectors.toList());
record.setPortList(portDtoList);
}
String snListString = record.getWorkOrderSnListString();
if (StringUtils.hasText(snListString)) {
// 按逗号分割字符串并去除空白字符转换为List
List<String> snList = Arrays.stream(snListString.split(","))
.map(String::trim)
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
record.setWorkOrderSnList(snList);
}
}
}
workOrderDataDtoIPage.setRecords(records);
return workOrderDataDtoIPage;
}
@Override
@Transactional
public void insert(WorkOrderDto dto) {
WorkOrderDto.WorkOrderDataDto workOrderDataDto = dto.getWorkOrder();
if (workOrderDataDto == null) {
System.out.println("workOrderDataDto is NULL");
return;
}
WorkOrderDto.WorkOrderDataDto workOrder = dto.getWorkOrder();
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String nowStr = now.format(dateTimeFormatter).toString();
workOrder.setCreateTime(nowStr);
List<String> workOrderSnList = workOrder.getWorkOrderSnList();
if (workOrderSnList != null && !workOrderSnList.isEmpty()) {
workOrder.setWorkOrderSnListString(String.join(",", workOrderSnList));
}
List<WorkOrderDto.WorkOrderDataDto.WorkOrderBomDto> workOrderBomList = workOrder.getWorkOrderBomList();
workOrderMapper.saveWorkOrder(workOrder);
workOrderMapper.saveAllBom(workOrderBomList);
}
@Override
public Boolean updateWorkOrderStatus(String orderCode, int status) {
workOrderMapper.updateWorkOrderStatus(orderCode, status);
return true;
}
@Override
public void updateBomUseQty(String id, BigDecimal qty) {
workOrderMapper.updateBomUseQty(id, qty);
}
}