skyouc
2024-12-21 c635d78b479510ebe2556a420948effcd30a0731
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java
@@ -1,121 +1,81 @@
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.Loc;
import com.zy.asrs.wms.asrs.entity.LocDetl;
import com.zy.asrs.wms.asrs.entity.LocDetlField;
import com.zy.asrs.wms.asrs.entity.MatField;
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
import com.zy.asrs.wms.asrs.entity.param.LocAdjustParam;
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();
    }
}
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) {
        try {
            workService.locAdjust(param);
            return R.ok();
        } catch (Exception e) {
            return R.error(e.getMessage());
        }
    }
    @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());
        }
    }
}