WcsController.java 3.14 KB
package com.huaheng.api.wcs.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/API/WMS/v2")
public class WcsController extends BaseController {

    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskDetailService taskDetailService;
    @Resource
    private MaterialService materialService;

    @PostMapping("/calculateWeight")
    @ApiOperation("估算重量")
    @ApiLogger(apiName = "估算重量", from="ROBOT")
    @Transactional(rollbackFor = Exception.class)
    @ResponseBody
    public AjaxResult calculateWeight(@RequestBody Map<String,String> map) {
        String taskNo = map.get("taskNo");
        String weight1 = map.get("weight");
        if(taskNo == null) {
            return AjaxResult.error("称重信息没有任务号");
        }
        if(weight1 == null) {
            return AjaxResult.error("称重信息没有重量");
        }
        BigDecimal bigDecimal = new BigDecimal(weight1);
        TaskHeader taskHeader = taskHeaderService.getById(taskNo);
        if(taskHeader == null) {
            return AjaxResult.error("没有找到对应任务:" + taskNo);
        }
        String materialCode = taskHeader.getMaterialCode();
        if(StringUtils.isEmpty(materialCode)) {
            return AjaxResult.error("物料信息为空");
        }
        String warehouseCode = taskHeader.getWarehouseCode();
        LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
        taskDetailLambdaQueryWrapper.eq(TaskDetail::getTaskId, taskNo);
        List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
        int qty = taskDetailList.size();
        Material material = materialService.getMaterialByCode(materialCode, warehouseCode);
        BigDecimal pieceWeight = material.getPieceWeight();
        // 四舍五入
        BigDecimal totalQty = bigDecimal.divide(pieceWeight, BigDecimal.ROUND_HALF_UP);
        int abs = totalQty.intValue() - qty;
        if(abs == 0) {
            return AjaxResult.success("称重符合数量");
        }
        return AjaxResult.error("称重数量为" + totalQty + "   系统数量为" + qty);
    }
}