rev:拣选单异常

This commit is contained in:
2024-07-16 10:15:29 +08:00
parent d23359f59e
commit 898021cc8a
6 changed files with 532 additions and 94 deletions

View File

@@ -36,14 +36,20 @@ public class PickingController {
@GetMapping()
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query, page)), HttpStatus.OK);
}
@PostMapping("/updateDtl")
public ResponseEntity<Object> updateDtl(@RequestBody JSONArray params) {
pickingService.update(params);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id) {
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id),HttpStatus.OK);
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id), HttpStatus.OK);
}
@@ -53,20 +59,23 @@ public class PickingController {
iPmFormDataService.syncFormData("type", formDtl);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/savePickTask")
@Log("拣选作业")
public ResponseEntity<Object> savePickTask(@RequestBody JSONArray params) {
pickingService.savePickTask(params);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updateStatus")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
//TODO:明细校验
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",param.getString("status"))
.eq("id",param.getString("id")));
.set("status", param.getString("status"))
.eq("id", param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen")
@Log("拣选作业下发")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
@@ -25,6 +26,8 @@ import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@@ -32,6 +35,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -46,7 +50,7 @@ import java.util.stream.Collectors;
@Service
public class PickingService {
private static Map<String,String> Pick_Convery = MapOf.of("1309","1207","1311","1209");
private static Map<String, String> Pick_Convery = MapOf.of("1309", "1207", "1311", "1209");
@Autowired
private IPmFormDataService iFormDataService;
@Autowired
@@ -57,39 +61,53 @@ public class PickingService {
private IBmVehicleInfoService iBmVehicleInfoService;
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private IPmFormDataService pmFormDataService;
@Autowired
private IStIvtIostorinvdtlService iStIvtIostorinvDtlService;
/**
* 生成拣选任务
*
* @param params
*/
@Transactional
public void savePickTask(JSONArray params){
PmFormData dtl = iFormDataService.getById((String)((Map) params.get(0)).get("parent_id"));
public void savePickTask(JSONArray params) {
if (params.size() == 0) {
throw new BadRequestException("作业明细不能为空!");
}
PmFormData dtl = iFormDataService.getById((String) ((Map) params.get(0)).get("parent_id"));
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
.eq("vehicle_code", dtl.getVehicle_code()).eq("material_id", dtl.getMaterial_id()));
if (one==null){
if (one == null) {
throw new BadRequestException("拣选明细载具物料信息不存在");
}
Set<Object> vehicleCodes = params.stream().map(a -> ((Map) a).get("vehicle_code")).collect(Collectors.toSet());
int vCode = iBmVehicleInfoService.count(new QueryWrapper<BmVehicleInfo>().in("vehicle_code", vehicleCodes));
if (vCode!=vehicleCodes.size()){
if (vCode != vehicleCodes.size()) {
throw new BadRequestException("载具编码不存在");
}
vehicleCodes.remove(one.getVehicle_code());
int mCode = iMdPbVehicleMaterService.count(new QueryWrapper<MdPbVehicleMater>().in("vehicle_code", vehicleCodes));
if (mCode>0){
throw new BadRequestException("当前载具"+vehicleCodes.toString()+"以存在载具物料信息");
if (mCode > 0) {
throw new BadRequestException("当前载具" + vehicleCodes.toString() + "以存在载具物料信息");
}
String now = DateUtil.now();
String user = SecurityUtils.getCurrentNickName();
String id = dtl.getId();
LambdaQueryWrapper<PmFormData> lqw = new LambdaQueryWrapper<>();
lqw.eq(PmFormData::getParent_id, id)
.and(l -> l.eq(PmFormData::getForm_type, "Picking_Task"));
iFormDataService.remove(lqw);
for (Object param : params) {
JSONObject task = new JSONObject((Map) param);
PmFormData data = task.toJavaObject(PmFormData.class);
if (StringUtils.isEmpty(data.getParent_id())||StringUtils.isEmpty(data.getVehicle_code())){
if (StringUtils.isEmpty(data.getParent_id()) || StringUtils.isEmpty(data.getVehicle_code())) {
throw new BadRequestException("创建失败:缺少参数");
}
String task_type = data.getForm_data().getString("task_type");
if (StringUtils.isEmpty(task_type)){
if (StringUtils.isEmpty(task_type)) {
throw new BadRequestException("创建失败:未配置任务类型");
}
data.setCreate_time(now);
@@ -97,7 +115,8 @@ public class PickingService {
data.setId(IdUtil.getStringId());
iFormDataService.save(data);
}
单据状态变动:{
单据状态变动:
{
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status", StatusEnum.FORM_STATUS.code("已分配")).eq("id", dtl.getId()));
int count = iFormDataService.count(new QueryWrapper<PmFormData>()
@@ -116,12 +135,12 @@ public class PickingService {
}
public void taskOpen(JSONObject form){
public void taskOpen(JSONObject form) {
PmFormData mst = form.toJavaObject(PmFormData.class);
if (StringUtils.isEmpty(mst.getProc_inst_id())){
if (StringUtils.isEmpty(mst.getProc_inst_id())) {
throw new BadRequestException("下发失败当前单据不存在流程实例id");
}
if (!mst.getStatus().equals(StatusEnum.FORM_STATUS.code("已分配"))){
if (!mst.getStatus().equals(StatusEnum.FORM_STATUS.code("已分配"))) {
throw new BadRequestException("下发失败:当前单据未分配或者一下发");
}
JSONObject mstJ = (JSONObject) JSON.toJSON(mst);
@@ -131,7 +150,7 @@ public class PickingService {
dto.setSource_form_type(mst.getSource_form_type());
dto.setSource_form_id(mst.getSource_form_id());
dto.setT(mstJ);
dto.setItem(packageT(mstJ,"id"));
dto.setItem(packageT(mstJ, "id"));
JSONObject form_data = mstJ.getJSONObject("form_data");
String platform = form_data.getString("point_code");
@@ -140,18 +159,18 @@ public class PickingService {
for (ExecutionDto executionDto : dto.getItem()) {
for (ExecutionDto executionDto1 : executionDto.getItem()) {
JSONObject dis = executionDto1.getT();
if (!"false".equals(dis.getJSONObject("form_data").getString("s_move"))){
if (!"false".equals(dis.getJSONObject("form_data").getString("s_move"))) {
String vehicle_code = dis.getString("vehicle_code");
if (vehicle_code.equals(sourceVehicle)){
if (vehicle_code.equals(sourceVehicle)) {
converys.add(platform);
}else {
} else {
converys.add(Pick_Convery.get(platform));
}
}
}
}
for (String convery : converys) {
wmsToAcsService.toCommand(convery,"1");
wmsToAcsService.toCommand(convery, "1");
}
// PickingService pickingService = SpringContextHolder.getBean(this.getClass());
@@ -179,15 +198,16 @@ public class PickingService {
List<PmFormData> dis = iFormDataService.getByParentId(dtl.getId());
for (PmFormData data : dis) {
String vehicle_code = data.getVehicle_code();
if (dtl.getVehicle_code().equals(vehicle_code)){
if (dtl.getVehicle_code().equals(vehicle_code)) {
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("frozen_qty",0)
.set("update_time",DateUtil.now())
.set("frozen_qty", 0)
.set("update_time", DateUtil.now())
.set("update_name", SecurityUtils.getCurrentNickName())
.set("qty",data.getQty())
.eq("vehicle_code",vehicle_code));
}else {
组盘:{
.set("qty", data.getQty())
.eq("vehicle_code", vehicle_code));
} else {
组盘:
{
MdGruopDick dick = new MdGruopDick();
dick.setVehicle_code(vehicle_code);
dick.setSource_form_type("Picking_Task");
@@ -222,10 +242,10 @@ public class PickingService {
}
}
private List<ExecutionDto> packageT(JSONObject current,String itemField){
private List<ExecutionDto> packageT(JSONObject current, String itemField) {
String id = current.getString(itemField);
List<PmFormData> items = iFormDataService.getByParentId(id);
if (!CollectionUtils.isEmpty(items)){
if (!CollectionUtils.isEmpty(items)) {
List<ExecutionDto> list = new ArrayList<>();
for (PmFormData item : items) {
JSONObject itemJ = (JSONObject) JSON.toJSON(item);
@@ -235,11 +255,29 @@ public class PickingService {
itemDto.setForm_type(item.getForm_type());
itemDto.setSource_form_type(item.getSource_form_type());
itemDto.setSource_form_id(item.getSource_form_id());
itemDto.setItem(packageT(itemJ,itemField));
itemDto.setItem(packageT(itemJ, itemField));
list.add(itemDto);
}
return list;
}
return null;
}
public void update(JSONArray params) {
for (int i = 0; i < params.size(); i++) {
JSONObject jsonObject = params.getJSONObject(i);
String id = jsonObject.getString("id");
Integer assign_qty = jsonObject.getInteger("assign_qty");
// Integer qty = jsonObject.getInteger("qty");
String vehicle_code = jsonObject.getString("vehicle_code");
PmFormData pmFormData = new PmFormData();
pmFormData.setId(id);
pmFormData.setAssign_qty(new BigDecimal(assign_qty));
pmFormData.setVehicle_code(vehicle_code);
pmFormDataService.updateById(pmFormData);
}
}
}