feat: 托盘叫料
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package org.nl.wms.pda.general_management.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.general_management.service.PdaProductionService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
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;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 手持生产管理
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pdaProduction")
|
||||
@Slf4j
|
||||
public class PdaProductionController {
|
||||
|
||||
@Resource
|
||||
private PdaProductionService pdaProductionService;
|
||||
|
||||
@PostMapping("/getStockGroupInfo")
|
||||
@Log("托盘叫料-获取物料库存信息")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getStockGroupInfo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaProductionService.getStockGroupInfo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/confirmCallMaterial")
|
||||
@Log("托盘叫料-确认叫料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> confirmCallMaterial(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaProductionService.confirmCallMaterial(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/getGroupInfo")
|
||||
@Log("剩料回库-获取物料信息")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getGroupInfo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaProductionService.getGroupInfo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.nl.wms.pda.general_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 默认实现参数构建方法
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
public interface PdaBuildParamService {
|
||||
/**
|
||||
* 构建组盘参数
|
||||
* @param param
|
||||
* @param startPoint
|
||||
*/
|
||||
void doGroupPallet(JSONObject param, SchBasePoint startPoint);
|
||||
|
||||
/**
|
||||
* 构建创建任务参数
|
||||
* @param startPoint
|
||||
* @param invId
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> buildTaskData(SchBasePoint startPoint, String invId);
|
||||
|
||||
/**
|
||||
* 构建分配获取参数
|
||||
* @param param
|
||||
* @param sect
|
||||
* @param invId
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> buildDivStructData(JSONObject param, Sectattr sect, String invId);
|
||||
|
||||
/**
|
||||
* 构建创建入库单参数
|
||||
* @param param
|
||||
* @param startPoint
|
||||
* @param sect
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> doBuildInvObj(JSONObject param, SchBasePoint startPoint, Sectattr sect);
|
||||
|
||||
/**
|
||||
* 构建出库单参数
|
||||
* @param param
|
||||
* @param sectattr
|
||||
* @return
|
||||
*/
|
||||
JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr);
|
||||
|
||||
JSONObject buildManuaOutDivData(JSONObject param, String invId);
|
||||
|
||||
JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId);
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package org.nl.wms.pda.general_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.wms.pda.general_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
public interface PdaProductionService {
|
||||
/**
|
||||
* 获取组盘信息
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
PdaResponse getGroupInfo(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取库存信息
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
PdaResponse getStockGroupInfo(JSONObject param);
|
||||
|
||||
PdaResponse confirmCallMaterial(JSONObject param);
|
||||
}
|
||||
@@ -0,0 +1,168 @@
|
||||
package org.nl.wms.pda.general_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
import org.nl.wms.pda.general_management.service.PdaCommonService;
|
||||
import org.nl.wms.pda.general_management.service.dto.AssemblyPalletParam;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("defaultPdaBuildParam")
|
||||
public class DefaultPdaBuildParam implements PdaBuildParamService {
|
||||
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
@Resource
|
||||
private PdaCommonService pdaCommonService;
|
||||
@Resource
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
@Resource
|
||||
private IRawAssistIStorService rawAssistIStorService;
|
||||
@Override
|
||||
public void doGroupPallet(JSONObject param, SchBasePoint startPoint) {
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
List<String> bagCode = rows
|
||||
.stream()
|
||||
.map(HashMap.class::cast)
|
||||
.map(p -> MapUtil.getStr(p, "bag_code"))
|
||||
.collect(Collectors.toList());
|
||||
List<GroupPlate> list = groupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.in(GroupPlate::getBag_code, bagCode)
|
||||
.eq(GroupPlate::getStatus, "0"));
|
||||
AssemblyPalletParam palletParam = new AssemblyPalletParam();
|
||||
palletParam.setVehicle_code(startPoint.getVehicle_code());
|
||||
palletParam.setGroup_plates(list);
|
||||
pdaCommonService.confirmPalletAssembly(palletParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> buildTaskData(SchBasePoint startPoint, String invId) {
|
||||
Map<String, Object> jsonMst = new HashMap<>();
|
||||
jsonMst.put("point_code", startPoint.getPoint_code());
|
||||
// 组织明细数据
|
||||
List<IOStorInvDtl> dtlDao = ioStorInvDtlMapper.selectList(
|
||||
new QueryWrapper<IOStorInvDtl>().lambda()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, invId)
|
||||
);
|
||||
// 查找分配明细
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("iostorinvdtl_id",dtlDao.get(0).getIostorinvdtl_id());
|
||||
List<IOStorInvDisDto> disDtl = rawAssistIStorService.getDisDtl(map);
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
|
||||
disDtl.forEach(item -> tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)));
|
||||
jsonMst.put("tableMater", tableMater);
|
||||
return jsonMst;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> buildDivStructData(JSONObject param, Sectattr sect, String invId) {
|
||||
Map<String, Object> divObj = new HashMap<>();
|
||||
divObj.put("sect_id", sect.getSect_id());
|
||||
divObj.put("sect_code", param.getString("sect_code"));
|
||||
divObj.put("sect_name", param.getString("sect_name"));
|
||||
divObj.put("struct_id", param.getString("struct_id"));
|
||||
divObj.put("struct_name", param.getString("struct_name"));
|
||||
divObj.put("struct_code", param.getString("struct_code"));
|
||||
divObj.put("checked", true);
|
||||
List<IOStorInvDis> ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getIostorinv_id, invId));
|
||||
if (ioStorInvDis.size() == 0) {
|
||||
throw new BadRequestException("分配明细不存在!");
|
||||
}
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tables = new ArrayList<>();
|
||||
ioStorInvDis.forEach(item -> tables.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)));
|
||||
divObj.put("tableMater", tables);
|
||||
return divObj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> doBuildInvObj(JSONObject param, SchBasePoint startPoint, Sectattr sect) {
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
Map<String, Object> res = new HashMap<>();
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
res.put("tableData", tableData);
|
||||
res.put("stor_id", sect.getStor_id());
|
||||
res.put("bill_status", "10");
|
||||
res.put("detail_count", rows.size());
|
||||
res.put("bill_type", param.getString("bill_type"));
|
||||
res.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
HashMap<String, Object> table = new HashMap<>();
|
||||
JSONObject row = rows.getJSONObject(i);
|
||||
table.put("group_id", row.getString("group_id"));
|
||||
table.put("storagevehicle_code", startPoint.getVehicle_code());
|
||||
table.put("material_id", row.getString("material_id"));
|
||||
table.put("pcsn", row.getString("pcsn"));
|
||||
table.put("qty", row.getBigDecimal("qty"));
|
||||
table.put("plan_qty", row.getBigDecimal("qty"));
|
||||
table.put("qty_unit_id", row.getString("qty_unit_id"));
|
||||
table.put("qty_unit_name", row.getString("qty_unit_name"));
|
||||
table.put("status", "01");
|
||||
table.put("bag_no", row.getString("bag_no"));
|
||||
table.put("material_code", row.getString("material_code"));
|
||||
table.put("material_name", row.getString("material_name"));
|
||||
table.put("material_spec", row.getString("material_spec"));
|
||||
tableData.add(table);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject doBuildOutInvObj(JSONObject param, Sectattr sectattr) {
|
||||
JSONObject insertInvObj = new JSONObject();
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
insertInvObj.put("stor_id", sectattr.getStor_id());
|
||||
insertInvObj.put("bill_status", "10");
|
||||
insertInvObj.put("bill_type", param.getString("bill_type"));
|
||||
insertInvObj.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
insertInvObj.put("tableData", rows);
|
||||
return insertInvObj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject buildManuaOutDivData(JSONObject param, String invId) {
|
||||
JSONObject outDivObj = new JSONObject();
|
||||
JSONObject row = param.getJSONArray("rows").getJSONObject(0);
|
||||
row.put("iostorinv_id", invId);
|
||||
outDivObj.put("row", row);
|
||||
outDivObj.put("rows", param.getJSONArray("rows"));
|
||||
return outDivObj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject buildOutAllSetData(SchBasePoint endPoint, String invId) {
|
||||
JSONObject outDivObj = new JSONObject();
|
||||
outDivObj.put("iostorinv_id", invId);
|
||||
outDivObj.put("point_code", endPoint.getPoint_code());
|
||||
return outDivObj;
|
||||
}
|
||||
}
|
||||
@@ -1,42 +1,31 @@
|
||||
package org.nl.wms.pda.general_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.pda.general_management.service.PdaCommonService;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
import org.nl.wms.pda.general_management.service.PdaPreTreatmentService;
|
||||
import org.nl.wms.pda.general_management.service.dto.AssemblyPalletParam;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
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.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -54,15 +43,11 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService {
|
||||
@Resource
|
||||
private ISectattrService sectattrService;
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
@Resource
|
||||
private RedissonClient redissonClient;
|
||||
@Resource
|
||||
private PdaCommonService pdaCommonService;
|
||||
@Resource
|
||||
private ISchBaseTaskService taskService;
|
||||
@Resource
|
||||
private PdaBuildParamService defaultPdaBuildParam;
|
||||
@Override
|
||||
public PdaResponse getPalletAssembly(JSONObject param) {
|
||||
String search = param.getString("search");
|
||||
@@ -96,9 +81,12 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService {
|
||||
if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) {
|
||||
throw new BadRequestException("点位载具号为空!");
|
||||
}
|
||||
Sectattr sectattr = sectattrService.findByCode("WYL01", true);
|
||||
if (ObjectUtil.isEmpty(startPoint.getIn_sect())) {
|
||||
throw new BadRequestException("该点位未配置入库库区,请到点位管理配置!");
|
||||
}
|
||||
Sectattr sectattr = sectattrService.findByCode(startPoint.getIn_sect(), true);
|
||||
if (ObjectUtil.isEmpty(sectattr)) {
|
||||
throw new BadRequestException("库区【物料室原料区】不存在或者被禁用!");
|
||||
throw new BadRequestException("库区不存在或者被禁用!");
|
||||
}
|
||||
// 判断任务是否创建
|
||||
List<SchBaseTask> tasks = taskService.getTaskByQuery(new LambdaQueryWrapper<SchBaseTask>()
|
||||
@@ -107,16 +95,16 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService {
|
||||
throw new BadRequestException("该点位已创建过任务!");
|
||||
}
|
||||
// 0 组盘
|
||||
doGroupPallat(param, startPoint);
|
||||
|
||||
defaultPdaBuildParam.doGroupPallet(param, startPoint);
|
||||
param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库"));
|
||||
// 1 创建入库单、明细、分配明细
|
||||
Map<String, Object> invObj = doBuildInvObj(param, startPoint);
|
||||
Map<String, Object> invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr);
|
||||
String invId = rawAssistIStorService.insertDtl(invObj);
|
||||
// 2 调用分配 (WYL01)
|
||||
Map<String, Object> divObj = buildDivStructData(sectattr, invId);
|
||||
// 2 调用分配
|
||||
Map<String, Object> divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId);
|
||||
rawAssistIStorService.divStruct(divObj);
|
||||
// 3 创建任务
|
||||
Map<String, Object> jsonMst = buildTaskData(startPoint, invId);
|
||||
Map<String, Object> jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
|
||||
rawAssistIStorService.divPoint(jsonMst);
|
||||
} else {
|
||||
throw new BadRequestException("速度太快啦,稍后再试...");
|
||||
@@ -128,87 +116,4 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService {
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
private void doGroupPallat(JSONObject param, SchBasePoint startPoint) {
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
List<String> bagCode = rows
|
||||
.stream()
|
||||
.map(HashMap.class::cast)
|
||||
.map(p -> MapUtil.getStr(p, "bag_code"))
|
||||
.collect(Collectors.toList());
|
||||
List<GroupPlate> list = groupplateService.list(new LambdaQueryWrapper<GroupPlate>()
|
||||
.in(GroupPlate::getBag_code, bagCode)
|
||||
.eq(GroupPlate::getStatus, "0"));
|
||||
AssemblyPalletParam palletParam = new AssemblyPalletParam();
|
||||
palletParam.setVehicle_code(startPoint.getVehicle_code());
|
||||
palletParam.setGroup_plates(list);
|
||||
pdaCommonService.confirmPalletAssembly(palletParam);
|
||||
}
|
||||
|
||||
private Map<String, Object> buildTaskData(SchBasePoint startPoint, String invId) {
|
||||
Map<String, Object> jsonMst = new HashMap<>();
|
||||
jsonMst.put("point_code", startPoint.getPoint_code());
|
||||
// 组织明细数据
|
||||
List<IOStorInvDtl> dtlDao = ioStorInvDtlMapper.selectList(
|
||||
new QueryWrapper<IOStorInvDtl>().lambda()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, invId)
|
||||
);
|
||||
// 查找分配明细
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("iostorinvdtl_id",dtlDao.get(0).getIostorinvdtl_id());
|
||||
List<IOStorInvDisDto> disDtl = rawAssistIStorService.getDisDtl(map);
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
|
||||
disDtl.forEach(item -> tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)));
|
||||
jsonMst.put("tableMater", tableMater);
|
||||
return jsonMst;
|
||||
}
|
||||
|
||||
private Map<String, Object> buildDivStructData(Sectattr sect, String invId) {
|
||||
Map<String, Object> divObj = new HashMap<>();
|
||||
divObj.put("sect_id", sect.getSect_id());
|
||||
divObj.put("checked", true);
|
||||
List<IOStorInvDis> ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getIostorinv_id, invId));
|
||||
if (ioStorInvDis.size() == 0) {
|
||||
throw new BadRequestException("分配明细不存在!");
|
||||
}
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tables = new ArrayList<>();
|
||||
ioStorInvDis.forEach(item -> tables.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)));
|
||||
divObj.put("tableMater", tables);
|
||||
return divObj;
|
||||
}
|
||||
|
||||
private Map<String, Object> doBuildInvObj(JSONObject param, SchBasePoint startPoint) {
|
||||
JSONArray rows = param.getJSONArray("rows");
|
||||
Map<String, Object> res = new HashMap<>();
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
res.put("tableData", tableData);
|
||||
// 物料室仓库
|
||||
res.put("stor_id", "1582991156504039424");
|
||||
res.put("bill_status", "10");
|
||||
res.put("detail_count", rows.size());
|
||||
res.put("bill_type", "0001");
|
||||
res.put("biz_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
HashMap<String, Object> table = new HashMap<>();
|
||||
JSONObject row = rows.getJSONObject(i);
|
||||
table.put("group_id", row.getString("group_id"));
|
||||
table.put("storagevehicle_code", startPoint.getVehicle_code());
|
||||
table.put("material_id", row.getString("material_id"));
|
||||
table.put("pcsn", row.getString("pcsn"));
|
||||
table.put("qty", row.getBigDecimal("qty"));
|
||||
table.put("plan_qty", row.getBigDecimal("qty"));
|
||||
table.put("qty_unit_id", row.getString("qty_unit_id"));
|
||||
table.put("qty_unit_name", row.getString("qty_unit_name"));
|
||||
table.put("status", "01");
|
||||
table.put("bag_no", row.getString("bag_no"));
|
||||
table.put("material_code", row.getString("material_code"));
|
||||
table.put("material_name", row.getString("material_name"));
|
||||
table.put("material_spec", row.getString("material_spec"));
|
||||
tableData.add(table);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
package org.nl.wms.pda.general_management.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.pda.general_management.service.PdaBuildParamService;
|
||||
import org.nl.wms.pda.general_management.service.PdaPreTreatmentService;
|
||||
import org.nl.wms.pda.general_management.service.PdaProductionService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.IOutBillService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class PdaProductionServiceImpl implements PdaProductionService {
|
||||
@Resource
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
@Resource
|
||||
private ISchBasePointService pointService;
|
||||
@Resource
|
||||
private PdaPreTreatmentService pdaPreTreatmentService;
|
||||
@Resource
|
||||
private ISectattrService sectattrService;
|
||||
@Resource
|
||||
private IOutBillService outBillService;
|
||||
@Resource
|
||||
private PdaBuildParamService defaultPdaBuildParam;
|
||||
@Override
|
||||
public PdaResponse getGroupInfo(JSONObject param) {
|
||||
// search;
|
||||
String search = param.getString("search").trim();
|
||||
SchBasePoint pointObj = pointService.getByPointCode(search, false);
|
||||
if (ObjectUtil.isNotEmpty(pointObj)) {
|
||||
search = pointObj.getVehicle_code();
|
||||
}
|
||||
if (ObjectUtil.isEmpty(search)) {
|
||||
throw new BadRequestException("载具不存在!");
|
||||
}
|
||||
List<JSONObject> res = groupplateService.getPalletViewByVehicleCode(search);
|
||||
return PdaResponse.requestParamOk(res);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse getStockGroupInfo(JSONObject param) {
|
||||
// sect_code, material_id, pcsn
|
||||
if (ObjectUtil.isEmpty(param.get("sect_code"))) {
|
||||
throw new BadRequestException("请选择库区!");
|
||||
}
|
||||
List<JSONObject> res = groupplateService.getStockGroupInfo(param);
|
||||
return PdaResponse.requestParamOk(res);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PdaResponse confirmCallMaterial(JSONObject param) {
|
||||
// point_code, rows,sect_code
|
||||
log.info("手持托盘叫料:{}", param);
|
||||
if (ObjectUtil.isEmpty(param.get("point_code"))) {
|
||||
throw new BadRequestException("请输入要料点!");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(param.get("rows"))) {
|
||||
throw new BadRequestException("请选择呼叫的物料!");
|
||||
}
|
||||
String pointCode = param.getString("point_code");
|
||||
SchBasePoint endPoint = pointService.getByPointCode(pointCode, true);
|
||||
if (ObjectUtil.isEmpty(endPoint)) {
|
||||
throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!");
|
||||
}
|
||||
String sectCode = param.getString("sect_code");
|
||||
if (ObjectUtil.isEmpty(sectCode)) {
|
||||
throw new BadRequestException("请选择仓库!");
|
||||
}
|
||||
Sectattr outStructAttr = sectattrService.findByCode(sectCode, true);
|
||||
if (ObjectUtil.isEmpty(outStructAttr)) {
|
||||
throw new BadRequestException("库区不存在或者被禁用!");
|
||||
}
|
||||
// 1 创建出库单、明细、分配明细
|
||||
param.put("bill_type", IOSEnum.OUT_BILL_TYPE.code("原辅料出库"));
|
||||
JSONObject invObj = defaultPdaBuildParam.doBuildOutInvObj(param, outStructAttr);
|
||||
String invId = outBillService.insertDtl(invObj);
|
||||
// 2 调用分配
|
||||
JSONObject divObj = defaultPdaBuildParam.buildManuaOutDivData(param, invId);
|
||||
outBillService.manualDiv(divObj);
|
||||
// 3 创建任务
|
||||
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(endPoint, invId);
|
||||
outBillService.allSetPoint(jsonMst);
|
||||
return PdaResponse.requestOk("呼叫成功!");
|
||||
}
|
||||
}
|
||||
@@ -125,6 +125,12 @@ public class SchBasePoint implements Serializable {
|
||||
|
||||
private String ios_id;
|
||||
|
||||
// 出库库区
|
||||
private String out_sect;
|
||||
|
||||
// 入库库区
|
||||
private String in_sect;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> can_vehicle_types;
|
||||
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
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.util.ACSTaskTypeEnum;
|
||||
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_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IOutBillService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 叫料出库
|
||||
* @Author: lyd
|
||||
* @Date: 2025/12/1
|
||||
*/
|
||||
@Component(value = "CallMaterialTask")
|
||||
@TaskType("CallMaterialTask")
|
||||
public class CallMaterialTask extends AbstractTask {
|
||||
@Resource
|
||||
private ISchBaseTaskService taskService;
|
||||
/**
|
||||
* 出库服务
|
||||
*/
|
||||
@Resource
|
||||
private IOutBillService outBillService;
|
||||
|
||||
/**
|
||||
* 分配明细mapper
|
||||
*/
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/*
|
||||
* 组盘记录服务
|
||||
*/
|
||||
@Resource
|
||||
private GroupPlateMapper groupPlateMapper;
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(json.getString("TaskCode"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(HandOutTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setMaterial_id(json.getString("material_id"));
|
||||
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||
task.setIs_wait(json.getString("is_wait"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
// this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
|
||||
acsTaskDto.setVehicle_type(IOSConstant.ONE);
|
||||
acsTaskDto.setIs_wait(taskDao.getIs_wait());
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.THREE);
|
||||
acsTaskDto.setIs_get_pause(IOSConstant.ZERO);
|
||||
acsTaskDto.setIs_put_pause(IOSConstant.ZERO);
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
this.executingTask(taskObj);
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
|
||||
throw new BadRequestException("任务状态必须为生成才能取消任务");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
taskService.updateById(taskObj);
|
||||
outBillService.taskFinish(taskObj);
|
||||
this.taskConfirm(taskObj.getTask_code());
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
|
||||
// 取消任务
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||
.set(SchBaseTask::getRemark, "已取消")
|
||||
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
|
||||
);
|
||||
|
||||
//分配表清除任务
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id, null)
|
||||
.set(IOStorInvDis::getPoint_code, null)
|
||||
.set(IOStorInvDis::getIs_issued, 0)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id())
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark("已取消");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
// SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
|
||||
// 删除组盘信息
|
||||
// groupPlateMapper.delete(
|
||||
// new QueryWrapper<GroupPlate>().lambda()
|
||||
// .eq(GroupPlate::getVehicle_code, taskObj.getVehicle_code())
|
||||
// .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
// );
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,8 @@ public enum IOSEnum {
|
||||
)),
|
||||
|
||||
// 出库业务类型
|
||||
OUT_BILL_TYPE(MapOf.of("手工出库", "1009"
|
||||
OUT_BILL_TYPE(MapOf.of("手工出库", "1009",
|
||||
"原辅料出库", "1001"
|
||||
)),
|
||||
|
||||
// 移库业务类型
|
||||
@@ -51,7 +52,8 @@ public enum IOSEnum {
|
||||
)),
|
||||
|
||||
// 出库任务配置类编码
|
||||
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask"
|
||||
OUT_CONFIG_CODE(MapOf.of( "1009", "HandOutTask",
|
||||
"1001", "CallMaterialTask"
|
||||
)),
|
||||
|
||||
// 移库任务配置类编码
|
||||
|
||||
@@ -96,4 +96,8 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
||||
List<GroupPlate> getByBagNo(String bagNo, String status);
|
||||
|
||||
List<JSONObject> getPalletView(String search);
|
||||
|
||||
List<JSONObject> getPalletViewByVehicleCode(String search);
|
||||
|
||||
List<JSONObject> getStockGroupInfo(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -65,4 +65,8 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
|
||||
List<JSONObject> pdaGetPointDtl(@Param("param") JSONObject whereJson);
|
||||
|
||||
List<JSONObject> getPalletView(String search);
|
||||
|
||||
List<JSONObject> getPalletViewByVehicleCode(String search);
|
||||
|
||||
List<JSONObject> getStockGroupInfo(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -151,4 +151,59 @@
|
||||
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
|
||||
WHERE g.bag_code = #{search} AND g.`status` = '0'
|
||||
</select>
|
||||
<select id="getPalletViewByVehicleCode" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
g.*,
|
||||
m.material_code,
|
||||
m.material_name,
|
||||
m.material_spec,
|
||||
m.material_model,
|
||||
m.material_type_id,
|
||||
s.supp_name
|
||||
FROM
|
||||
`md_pb_groupplate` g
|
||||
LEFT JOIN md_me_materialbase m ON m.material_id = g.material_id
|
||||
LEFT JOIN md_cs_supplierbase s ON s.supp_code = g.supp_code
|
||||
WHERE g.vehicle_code = #{search} AND g.`status` = '1'
|
||||
</select>
|
||||
<select id="getStockGroupInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
ss.struct_id,
|
||||
ss.struct_code,
|
||||
ss.struct_name,
|
||||
ss.sect_id,
|
||||
ss.sect_code,
|
||||
ss.sect_name,
|
||||
mg.*,
|
||||
m.material_code,
|
||||
m.material_name,
|
||||
m.material_spec,
|
||||
m.material_model,
|
||||
m.material_type_id,
|
||||
s.supp_name,
|
||||
mg.vehicle_code AS storagevehicle_code,
|
||||
e.canuse_qty,
|
||||
e.frozen_qty,
|
||||
mg.qty AS plan_qty
|
||||
FROM
|
||||
`st_ivt_structattr` ss
|
||||
LEFT JOIN md_pb_groupplate mg ON mg.vehicle_code = ss.storagevehicle_code
|
||||
LEFT JOIN md_me_materialbase m ON m.material_id = mg.material_id
|
||||
LEFT JOIN md_cs_supplierbase s ON s.supp_code = mg.supp_code AND mg.`status` = '2'
|
||||
LEFT JOIN md_pb_storagevehicleext e ON ss.storagevehicle_code = e.storagevehicle_code
|
||||
WHERE
|
||||
IFNULL(ss.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||
<if test="material_id != null and material_id != ''">
|
||||
AND
|
||||
mg.material_id = #{material_id}
|
||||
</if>
|
||||
<if test="pcsn != null and pcsn != ''">
|
||||
AND
|
||||
mg.pcsn = #{pcsn}
|
||||
</if>
|
||||
<if test="sect_code != null and sect_code != ''">
|
||||
AND
|
||||
ss.sect_code = #{sect_code}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -193,4 +193,14 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
public List<JSONObject> getPalletView(String search) {
|
||||
return this.baseMapper.getPalletView(search);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getPalletViewByVehicleCode(String search) {
|
||||
return this.baseMapper.getPalletViewByVehicleCode(search);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getStockGroupInfo(JSONObject param) {
|
||||
return this.baseMapper.getStockGroupInfo(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,12 +37,12 @@
|
||||
<el-form-item label="区域类型">
|
||||
<el-select
|
||||
v-model="query.region_code"
|
||||
@clear="handleClear"
|
||||
clearable
|
||||
filterable
|
||||
size="mini"
|
||||
placeholder="区域类型"
|
||||
class="filter-item"
|
||||
@clear="handleClear"
|
||||
@change="getPointStatusAndTypeList(query.region_code, 1)"
|
||||
>
|
||||
<el-option
|
||||
@@ -109,7 +109,7 @@
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission" >
|
||||
<crudOperation :permission="permission">
|
||||
<el-button
|
||||
v-if="crud.query.is_used == 'false'"
|
||||
slot="right"
|
||||
@@ -214,6 +214,32 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="入库库区">
|
||||
<el-select
|
||||
v-model="form.in_sect"
|
||||
placeholder="请选择"
|
||||
style="width: 370px;"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in sects"
|
||||
:label="item.sect_name"
|
||||
:value="item.sect_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="出库库区">
|
||||
<el-select
|
||||
v-model="form.out_sect"
|
||||
placeholder="请选择"
|
||||
style="width: 370px;"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in sects"
|
||||
:label="item.sect_name"
|
||||
:value="item.sect_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="点位编码" prop="point_code">
|
||||
<el-input v-model="form.point_code" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
@@ -252,7 +278,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="父类编码" prop="vehicle_code">
|
||||
<el-input v-model="form.parent_point_code" clearable style="width: 370px;" @focus="getParentPoint"/>
|
||||
<el-input v-model="form.parent_point_code" clearable style="width: 370px;" @focus="getParentPoint" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.point_status !== '1'" label="载具编码" prop="vehicle_code">
|
||||
<el-input v-model="form.vehicle_code" clearable style="width: 370px;" />
|
||||
@@ -263,8 +289,8 @@
|
||||
v-for="item in dict.vehicle_type"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.point_status === '1'" label="在执行任务标识" prop="ing_task_code">
|
||||
@@ -276,12 +302,12 @@
|
||||
v-for="item in dict.vehicle_type"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="载具数量" prop="vehicle_qty">
|
||||
<el-input-number style="width: 370px;" :controls="false" class="clear-number-input" v-model="form.vehicle_qty" :min="0" :precision="0" :max="99999" label="载具数量" size="mini" />
|
||||
<el-input-number v-model="form.vehicle_qty" style="width: 370px;" :controls="false" class="clear-number-input" :min="0" :precision="0" :max="99999" label="载具数量" size="mini" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否有工单">
|
||||
<el-radio v-for="item in dict.TrueOrFalse" :key="item.id" v-model="form.is_has_workder" :label="item.value">{{ item.label }}</el-radio>
|
||||
@@ -306,8 +332,8 @@
|
||||
<el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" />
|
||||
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />
|
||||
<el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" />
|
||||
<el-table-column prop="point_type_name" label="点位类型" :min-width="flexWidth('point_type_name',crud.data,'点位类型')"/>
|
||||
<el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')"/>
|
||||
<el-table-column prop="point_type_name" label="点位类型" :min-width="flexWidth('point_type_name',crud.data,'点位类型')" />
|
||||
<el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')" />
|
||||
<el-table-column prop="storagevehicle_type" label="载具类型" :min-width="flexWidth('storagevehicle_type',crud.data,'载具类型', 30)">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.storagevehicle_type[scope.row.storagevehicle_type] }}
|
||||
@@ -317,22 +343,22 @@
|
||||
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'载具数量')" />
|
||||
<el-table-column prop="material_qty" label="物料重量" :min-width="flexWidth('material_qty',crud.data,'载具数量')" />
|
||||
<el-table-column prop="parent_point_code" label="父点位编码" :min-width="flexWidth('parent_point_code',crud.data,'父点位编码')"/>
|
||||
<el-table-column prop="parent_point_code" label="父点位编码" :min-width="flexWidth('parent_point_code',crud.data,'父点位编码')" />
|
||||
<el-table-column prop="ing_task_code" label="在执行的任务标识" :min-width="flexWidth('ing_task_code',crud.data,'在执行的任务标识')" />
|
||||
<el-table-column prop="is_has_workder" label="是否有工单" :min-width="flexWidth('is_has_workder',crud.data,'是否有工单')">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.is_has_workder?'是':'否'}}
|
||||
{{ scope.row.is_has_workder?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_auto" label="是否自动" :min-width="flexWidth('is_auto',crud.data,'是否自动')">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.is_auto?'是':'否'}}
|
||||
{{ scope.row.is_auto?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.is_used?'是':'否'}}
|
||||
{{ scope.row.is_used?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
|
||||
@@ -361,8 +387,8 @@
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
</div>
|
||||
<ViewDialog ref="viewDialog"/>
|
||||
<PointDialog :dialog-show.sync="pointDialog" :is-single="false" @tableChanged="tableChanged"/>
|
||||
<ViewDialog ref="viewDialog" />
|
||||
<PointDialog :dialog-show.sync="pointDialog" :is-single="false" @tableChanged="tableChanged" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -376,6 +402,7 @@ import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import ViewDialog from '@/views/wms/sch/point/ViewDialog'
|
||||
import PointDialog from '@/views/wms/sch/point/PointDialog'
|
||||
import Sectattr from '@/views/wms/basedata/sectattr/sectattr'
|
||||
|
||||
const defaultForm = {
|
||||
point_code: null,
|
||||
@@ -405,6 +432,8 @@ const defaultForm = {
|
||||
workshop_code: null,
|
||||
is_auto: 'true',
|
||||
remark: null,
|
||||
in_sect: null,
|
||||
out_sect: null,
|
||||
is_used: 'true',
|
||||
can_vehicle_types: null
|
||||
}
|
||||
@@ -458,13 +487,20 @@ export default {
|
||||
pointStatusList: [],
|
||||
pointStatusDialogList: [],
|
||||
pointTypesDialogList: [],
|
||||
pointDialog: false
|
||||
pointDialog: false,
|
||||
sects: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getRegionList()
|
||||
this.getSects()
|
||||
},
|
||||
methods: {
|
||||
getSects() {
|
||||
Sectattr.getOneSect({ 'stor_id': '' }).then(res => {
|
||||
this.sects = res
|
||||
})
|
||||
},
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user