feat: 新增包装输送线手持绑定功能

This commit is contained in:
2024-09-04 13:13:17 +08:00
parent 49c5107d38
commit 472543c6b7
9 changed files with 203 additions and 1 deletions

View File

@@ -258,4 +258,22 @@ public class PdaController {
public ResponseEntity<PdaResponseVo> deleteMaterialInfo(@RequestBody RequestMaterialInfoVo requestMaterialInfoVo) { public ResponseEntity<PdaResponseVo> deleteMaterialInfo(@RequestBody RequestMaterialInfoVo requestMaterialInfoVo) {
return new ResponseEntity<>(pdaService.deleteMaterialInfo(requestMaterialInfoVo), HttpStatus.OK); return new ResponseEntity<>(pdaService.deleteMaterialInfo(requestMaterialInfoVo), HttpStatus.OK);
} }
@PostMapping("/manualPackage/showOrders")
@Log("人工包装-显示分拣工单")
public ResponseEntity<Object> manualPackageShowOrders() {
return new ResponseEntity<>(pdaService.manualPackageShowOrders(), HttpStatus.OK);
}
@PostMapping("/manualPackage/binding")
@Log("人工包装-绑定")
public ResponseEntity<Object> manualPackageBinding(@RequestBody JSONObject param) {
return new ResponseEntity<>(pdaService.manualPackageBinding(param), HttpStatus.OK);
}
@PostMapping("/manualPackage/orderOk")
@Log("人工包装-完工")
public ResponseEntity<Object> manualPackageOrderOk(@RequestBody JSONObject param) {
return new ResponseEntity<>(pdaService.manualPackageOrderOk(param), HttpStatus.OK);
}
} }

View File

@@ -1,5 +1,6 @@
package org.nl.wms.pda.service; package org.nl.wms.pda.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.pda.service.dao.dto.*; import org.nl.wms.pda.service.dao.dto.*;
import org.nl.wms.pda.service.dao.vo.*; import org.nl.wms.pda.service.dao.vo.*;
@@ -225,4 +226,24 @@ public interface PdaService {
* @return * @return
*/ */
PdaResponseVo deleteMaterialInfo(RequestMaterialInfoVo requestMaterialInfoVo); PdaResponseVo deleteMaterialInfo(RequestMaterialInfoVo requestMaterialInfoVo);
/**
* 人工包装-分拣工单信息
* @return
*/
List<FjOrderVo> manualPackageShowOrders();
/**
* 绑定
* @param param
* @return
*/
PdaResponseVo manualPackageBinding(JSONObject param);
/**
* 工单完工
* @param param
* @return
*/
PdaResponseVo manualPackageOrderOk(JSONObject param);
} }

View File

@@ -5,8 +5,8 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 反馈前端下拉框数据
* @Author: lyd * @Author: lyd
* @Description: 反馈前端下拉框数据
* @Date: 2023/8/1 * @Date: 2023/8/1
*/ */
@Data @Data

View File

@@ -0,0 +1,35 @@
package org.nl.wms.pda.service.dao.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 手持人工包装工单Vo
* @Author: lyd
* @Date: 2024/9/4
*/
@Data
public class FjOrderVo {
/** 工单id */
private String workorder_id;
/** 工单编码 */
private String workorder_code;
/** 实际数量 */
private BigDecimal real_qty;
/** 成品编码 */
private String material_code;
/** 半成品编码 */
private String half_material_code;
/** 泥料编码 */
private String raw_material_code;
/** 物料名称 */
private String material_name;
/** 物料规格 */
private String material_spec;
private String ext_data;
/** 订单号 */
private String order_no;
/** 客户号 */
private String custer_no;
}

View File

@@ -5,6 +5,8 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
@@ -39,8 +41,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Author: lyd * @Author: lyd
@@ -430,6 +434,93 @@ public class PdaServiceImpl implements PdaService {
return PdaResponseVo.pdaResultOk("删除成功"); return PdaResponseVo.pdaResultOk("删除成功");
} }
@Override
public List<FjOrderVo> manualPackageShowOrders() {
// 获取新增输送线的点位
List<SchBasePoint> fj = pointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, "FJ")
.eq(SchBasePoint::getPoint_type, "6"));
List<String> devices = fj.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
List<FjOrderVo> orders = workorderService.getAllRgPackageInfo(devices);
for (FjOrderVo order : orders) {
String extData = order.getExt_data();
if (ObjectUtil.isNotEmpty(extData)) {
JSONObject object = JSONObject.parseObject(extData);
order.setOrder_no(ObjectUtil.isNotEmpty(object.getString("order_no"))
? object.getString("order_no") : "-");
order.setCuster_no(ObjectUtil.isNotEmpty(object.getString("custer_no"))
? object.getString("custer_no") : "-");
}
}
return orders;
}
@Override
@Transactional(rollbackFor = Exception.class)
public PdaResponseVo manualPackageBinding(JSONObject param) {
log.info("人工包装绑定: {}", param);
// workorder_id, vehicle_code, qty
String workorderId = param.getString("workorder_id");
String isFull = param.getString("is_full");
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
Integer qty = param.getInteger("qty");
PdmBdWorkorder order = workorderService.getById(workorderId);
SchBasePoint point = pointService.getById(order.getPoint_code());
// 找到相同组盘信息就直接返回id避免任务取消组盘信息还存在重复插入
// 解绑同载具的信息
String vehicleType = order.getVehicle_type();
vehiclematerialgroupService.unBindingSameVehicleMaterial(vehicleCode, vehicleType);
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
// 要把数据存到组盘表
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(order)
? order.getMaterial_id()
: "");
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(order)
? order.getStanding_time()
: 0);
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(order)
? order.getWorkorder_code()
: "");
groupEntity.setCreate_id(SecurityUtils.getCurrentUserId());
groupEntity.setCreate_name(SecurityUtils.getCurrentNickName());
groupEntity.setCreate_time(DateUtil.now());
groupEntity.setVehicle_code(vehicleCode);
groupEntity.setVehicle_type(vehicleType);
groupEntity.setMaterial_qty(qty);
groupEntity.setPoint_code(order.getPoint_code());
groupEntity.setPoint_name(point.getPoint_name());
groupEntity.setMove_way(order.getPoint_code());
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
groupEntity.setInstorage_time(DateUtil.now());
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType());
groupEntity.setIs_delete(false);
groupEntity.setIs_full(isFull.equals(GeneralDefinition.YES));
vehiclematerialgroupService.saveOrUpdate(groupEntity);
// 工单实际数+1
order.setReal_qty(order.getReal_qty().add(BigDecimal.ONE));
TaskUtils.setWorkOrderUpdateByPC(order);
workorderService.updateById(order);
return PdaResponseVo.pdaResultOk("组盘成功");
}
@Override
public PdaResponseVo manualPackageOrderOk(JSONObject param) {
log.info("工单完工:{}", param);
String workorderId = param.getString("workorder_id");
LambdaUpdateWrapper<PdmBdWorkorder> lam = new LambdaUpdateWrapper<>();
lam.set(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.COMPLETE.getCode())
.set(PdmBdWorkorder::getRealproduceend_date, DateUtil.now())
.set(PdmBdWorkorder::getUpdate_id, SecurityUtils.getCurrentUserId())
.set(PdmBdWorkorder::getUpdate_name, SecurityUtils.getCurrentNickName())
.set(PdmBdWorkorder::getUpdate_time, DateUtil.now())
.eq(PdmBdWorkorder::getWorkorder_id, workorderId);
workorderService.update(lam);
return PdaResponseVo.pdaResultOk("工单完工成功");
}
/** /**
* 保存组盘信息 * 保存组盘信息
* *

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.wms.ext.mes.service.dto.MesOrderInfo; import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
import org.nl.wms.pda.service.dao.vo.FjOrderVo;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo; import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
@@ -192,4 +193,11 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
* @return / * @return /
*/ */
PdmBdWorkorder getDeviceOneTask(String yjDeviceCode); PdmBdWorkorder getDeviceOneTask(String yjDeviceCode);
/**
* 查看工单信息
* @param devices
* @return
*/
List<FjOrderVo> getAllRgPackageInfo(List<String> devices);
} }

View File

@@ -2,6 +2,7 @@ package org.nl.wms.pdm.workorder.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.wms.pda.service.dao.vo.FjOrderVo;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo; import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
@@ -82,4 +83,6 @@ public interface PdmBdWorkorderMapper extends BaseMapper<PdmBdWorkorder> {
* @return / * @return /
*/ */
PdmBdWorkorder getDeviceOneTask(String yjDeviceCode); PdmBdWorkorder getDeviceOneTask(String yjDeviceCode);
List<FjOrderVo> getAllRgPackageInfo(List<String> devices);
} }

View File

@@ -161,4 +161,24 @@
ORDER BY w.workorder_status DESC, w.planproducestart_date) AS ranked ORDER BY w.workorder_status DESC, w.planproducestart_date) AS ranked
WHERE row_num = 1 WHERE row_num = 1
</select> </select>
<select id="getAllRgPackageInfo" resultType="org.nl.wms.pda.service.dao.vo.FjOrderVo">
SELECT wo.workorder_id
,wo.workorder_code
,wo.real_qty
,wo.raw_material_code
,wo.ext_data
,ma.material_name
,ma.material_code
,ma.material_spec
,ma.half_material_code
FROM pdm_bd_workorder wo
LEFT JOIN md_base_material ma ON ma.material_id = wo.material_id
<where>
wo.point_code IN
<foreach collection="devices" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</where>
ORDER BY wo.create_time DESC
</select>
</mapper> </mapper>

View File

@@ -24,6 +24,7 @@ import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
import org.nl.wms.ext.mes.service.WmsToMesService; import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.ext.mes.service.dto.MesOrderInfo; import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
import org.nl.wms.pda.service.dao.vo.FjOrderVo;
import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService;
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
@@ -403,4 +404,9 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
public PdmBdWorkorder getDeviceOneTask(String yjDeviceCode) { public PdmBdWorkorder getDeviceOneTask(String yjDeviceCode) {
return pdmBdWorkorderMapper.getDeviceOneTask(yjDeviceCode); return pdmBdWorkorderMapper.getDeviceOneTask(yjDeviceCode);
} }
@Override
public List<FjOrderVo> getAllRgPackageInfo(List<String> devices) {
return pdmBdWorkorderMapper.getAllRgPackageInfo(devices);
}
} }