package com.zy.asrs.wms.asrs.controller;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.zy.asrs.framework.common.Cools;
|
import com.zy.asrs.framework.common.R;
|
import com.zy.asrs.framework.exception.CoolException;
|
import com.zy.asrs.wms.asrs.entity.*;
|
import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
|
import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
|
import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
|
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
|
import com.zy.asrs.wms.asrs.entity.param.LocAdjustParam;
|
import com.zy.asrs.wms.asrs.entity.param.LocTransferParam;
|
import com.zy.asrs.wms.asrs.service.*;
|
import com.zy.asrs.wms.common.annotation.OperationLog;
|
import com.zy.asrs.wms.system.controller.BaseController;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
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 java.util.*;
|
|
@RestController
|
@RequestMapping("/api")
|
public class WorkController extends BaseController {
|
|
@Autowired
|
private WorkService workService;
|
@Autowired
|
private LocDetlService locDetlService;
|
@Autowired
|
private LocService locService;
|
@Autowired
|
private MatFieldService matFieldService;
|
@Autowired
|
private LocDetlFieldService locDetlFieldService;
|
|
@OperationLog("生成入库任务")
|
@PostMapping("/rpc/generatePakIn")
|
public R generatePakIn(@RequestBody GeneratePakInParam param) {
|
try {
|
if (param.getTaskType() == 10) {
|
workService.generateEmptyPakIn(param);//空托盘
|
}else {
|
workService.generatePakIn(param);//满托盘
|
}
|
return R.ok("添加成功");
|
} catch (Exception e) {
|
return R.error(e.getMessage());
|
}
|
}
|
|
@OperationLog("库存调整")
|
@PostMapping("/loc/adjust")
|
@Transactional
|
public R locAdjust(@RequestBody LocAdjustParam param) {
|
if (param == null) {
|
return R.error("参数不能为空");
|
}
|
|
if (Cools.isEmpty(param.getLocNo())) {
|
return R.error("库位号不能为空");
|
}
|
|
if (param.getDetls() == null) {
|
return R.error("库存明细不能为空");
|
}
|
|
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, param.getLocNo()));
|
if (loc == null) {
|
return R.error("库位不存在");
|
}
|
|
//删除源库存
|
locDetlService.removeLocDetl(loc.getId());
|
|
List<MatField> matFields = matFieldService.list(new LambdaQueryWrapper<MatField>().eq(MatField::getUnique, 1));
|
for (Map<String, Object> map : param.getDetls()) {
|
LocDetl locDetl = JSON.parseObject(JSON.toJSONString(map), LocDetl.class);
|
HashMap<String, Object> uniqueFields = new HashMap<>();
|
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
for (MatField field : matFields) {
|
if (entry.getKey().equals(field.getName())) {
|
uniqueFields.put(entry.getKey(), entry.getValue());
|
}
|
}
|
}
|
locDetl.setAnfme(Double.parseDouble(map.get("qty").toString()));
|
locDetl.syncFieldMap(uniqueFields);
|
|
if (locDetl.getAnfme() <= 0D) {
|
throw new CoolException("数量不能小于0");
|
}
|
|
locDetl.setId(null);
|
locDetl.setLocId(loc.getId());
|
locDetl.setLocNo(loc.getLocNo());
|
boolean save = locDetlService.save(locDetl);
|
if (!save) {
|
throw new CoolException("库存调整失败");
|
}
|
|
//插入库存明细字段
|
for (MatField matField : matFields) {
|
LocDetlField locDetlField = new LocDetlField();
|
locDetlField.setDetlId(locDetl.getId());
|
locDetlField.setFieldId(matField.getId());
|
locDetlField.setName(matField.getName());
|
locDetlField.setValue(Optional.ofNullable(uniqueFields.get(matField.getName()).toString()).orElse(""));
|
locDetlFieldService.save(locDetlField);
|
}
|
|
}
|
|
return R.ok();
|
}
|
|
@OperationLog("库存移转")
|
@PostMapping("/loc/transfer")
|
@Transactional
|
public R locTransfer(@RequestBody LocTransferParam param) {
|
try {
|
workService.locTransfer(param);
|
return R.ok();
|
} catch (Exception e) {
|
return R.error(e.getMessage());
|
}
|
}
|
|
}
|