#
luxiaotao1123
2021-04-14 1d853e91b6561317a9cb113b4d61de0b7f891708
#
6个文件已修改
3个文件已添加
241 ■■■■■ 已修改文件
src/main/java/zy/cloud/wms/common/service/MainService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/controller/WorkController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/WorkService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/safeSto/safeSto.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,11 +7,20 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zy.cloud.wms.common.config.CodeCoolException;
import zy.cloud.wms.common.model.MatnrDto;
import zy.cloud.wms.common.model.OrderStoDto;
import zy.cloud.wms.common.service.asrs.AsrsService;
import zy.cloud.wms.common.service.asrs.entity.Result;
import zy.cloud.wms.common.service.asrs.entity.Result1;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
import zy.cloud.wms.manager.service.*;
import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.entity.result.PakoutVo;
import zy.cloud.wms.manager.service.LocDetlService;
import zy.cloud.wms.manager.service.MatService;
import zy.cloud.wms.manager.service.OrderService;
import zy.cloud.wms.manager.service.PakoutService;
import java.util.*;
@@ -32,6 +41,8 @@
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private OrderService orderService;
    @Autowired
    private AsrsService asrsService;
    @Transactional
    public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto) {
@@ -40,7 +51,17 @@
        }
        List<StoPreTab> res = new ArrayList<>();
        // 检查库存是否足够
        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos());
        if (!Cools.isEmpty(transferParams)) {
            // 查看立库库存
            Result result = asrsService.stockTransferPrew(transferParams);
            if (result.getCode() == 500) {
                throw new CodeCoolException("20001-" + String.valueOf(result.getMsg()));
            }
            if (result.getCode() == 200) {
                res = (List<StoPreTab>) result.getData();
            }
        }
        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
            // 判断物料是否存在
@@ -97,7 +118,44 @@
        }
        Date now = new Date();
        // 检查库存是否足够
        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos());
        if (!Cools.isEmpty(transferParams)) {
            // 查看立库库存
            Result1 result = asrsService.stockTransfer(transferParams);
            if (result.getCode() == 500) {
                if (Cools.isEmpty(result.getData())) {
                    throw new CoolException(result.getMsg());
                } else {
                    throw new CodeCoolException("20001-" + result.getData());
                }
            }
            if (result.getCode() == 200) {
                for (PakoutVo vo : result.getData()) {
                    // 判断物料是否存在
                    Mat mat = matService.selectByMatnr(vo.getMatnr());
                    if (null == mat) {
                        throw new CoolException(vo.getMatnr() + "物料尚未更新。" + orderStoDto.getOrderNo() +"单据因此中断!");
                    }
                    Pakout pakout = new Pakout();
                    pakout.setWrkSts(1L);
                    pakout.setAnfme(vo.getAnfme());
                    pakout.setZpallet(vo.getZpallet());
                    pakout.setLocNo(vo.getLocNo());
                    pakout.setNodeId(-1L);
                    pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
                    VersionUtils.setPakout(pakout, mat);
                    pakout.setDocId(order.getDocType()); // 单据类型
                    pakout.setDocNum(order.getOrderNo());    // 单据编号
                    pakout.setCreateTime(now);
                    pakout.setUpdateTime(now);
                    pakout.setStatus(1);
                    if (!pakoutService.insert(pakout)) {
                        throw new CoolException("保存出库通知单失败");
                    }
                }
            }
        }
        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
            // 判断物料是否存在
src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
New file
@@ -0,0 +1,53 @@
package zy.cloud.wms.common.service.asrs;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import zy.cloud.wms.common.service.asrs.entity.Result;
import zy.cloud.wms.common.service.asrs.entity.Result1;
import zy.cloud.wms.manager.entity.param.StockTransferParam;
import zy.cloud.wms.manager.utils.HttpHandler;
import java.io.IOException;
import java.util.List;
/**
 * Created by vincent on 2021/3/20
 */
@Service("asrsService")
public class AsrsService {
    @Value("${asrs.baseUrl}")
    private String asrsBaseUrl;
    public Result stockTransferPrew(List<StockTransferParam> params) {
        try {
            String response = new HttpHandler.Builder()
                    .setUri(asrsBaseUrl)
                    .setPath("/open/api/stockOut/prew")
                    .setJson(JSON.toJSONString(params))
                    .build()
                    .doPost();
            return JSON.parseObject(response, Result.class);
        } catch (IOException e) {
            e.printStackTrace();
            return new Result(500, "服务器异常", null);
        }
    }
    public Result1 stockTransfer(List<StockTransferParam> params) {
        try {
            String response = new HttpHandler.Builder()
                    .setUri(asrsBaseUrl)
                    .setPath("/open/api/stockOut")
                    .setJson(JSON.toJSONString(params))
                    .build()
                    .doPost();
            return JSON.parseObject(response, Result1.class);
        } catch (IOException e) {
            e.printStackTrace();
            return new Result1(500, "服务器异常", null);
        }
    }
}
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
New file
@@ -0,0 +1,28 @@
package zy.cloud.wms.common.service.asrs.entity;
import lombok.Data;
import zy.cloud.wms.manager.entity.StoPreTab;
import java.util.List;
/**
 * Created by vincent on 2021/3/20
 */
@Data
public class Result {
    private Integer code;
    private String msg;
    private List<StoPreTab> data;
    public Result() {
    }
    public Result(Integer code, String msg, List<StoPreTab> data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
}
src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java
New file
@@ -0,0 +1,28 @@
package zy.cloud.wms.common.service.asrs.entity;
import lombok.Data;
import zy.cloud.wms.manager.entity.result.PakoutVo;
import java.util.List;
/**
 * Created by vincent on 2021/3/20
 */
@Data
public class Result1 {
    private Integer code;
    private String msg;
    private List<PakoutVo> data;
    public Result1() {
    }
    public Result1(Integer code, String msg, List<PakoutVo> data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
}
src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -144,7 +144,7 @@
    @RequestMapping("/stock/transfer")
    @ManagerAuth(memo = "库存调拨")
    public R stockTransfer(@RequestBody AsrsTransferParam number) {
        return R.error();
        return workService.asrsStockTransfer(number, getUserId());
    }
    @RequestMapping("/stock/check")
src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -27,6 +27,8 @@
    R cancelPakout(String wrkNo, Long userId);
    R asrsStockTransfer(AsrsTransferParam param, Long userId);
    R initOrder(InitOrderParam param, Long userId);
    R stockCheck(StoCheckParam param, Long userId);
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -1,6 +1,7 @@
package zy.cloud.wms.manager.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.R;
import com.core.common.SnowflakeIdWorker;
@@ -9,10 +10,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zy.cloud.wms.common.config.CodeCoolException;
import zy.cloud.wms.common.model.BillDto;
import zy.cloud.wms.common.model.MatnrDto;
import zy.cloud.wms.common.model.OrderStoDto;
import zy.cloud.wms.common.service.MainService;
import zy.cloud.wms.common.service.asrs.AsrsService;
import zy.cloud.wms.common.service.asrs.entity.Result1;
import zy.cloud.wms.common.service.erp.ErpService;
import zy.cloud.wms.common.utils.VersionUtils;
import zy.cloud.wms.manager.entity.*;
@@ -55,6 +59,8 @@
    private CstmrService cstmrService;
    @Autowired
    private ErpService erpService;
    @Autowired
    private AsrsService asrsService;
    @Override
    @Transactional
@@ -515,6 +521,59 @@
    }
    @Override
    public R asrsStockTransfer(AsrsTransferParam param, Long userId) {
        if (Cools.isEmpty(param.getNode_id(), param.getMatnr(), param.getSafe_qua(), param.getAmount())) {
            return R.error("数量错误");
        }
        Node node = nodeService.selectById(param.getNode_id());
        Mat mat = matService.selectByMatnr(param.getMatnr());
        if (node == null || mat == null) {
            return R.error();
        }
        double anfme = Arith.subtract(2, param.getSafe_qua(), param.getAmount());
        List<StockTransferParam> params = new ArrayList<>();
        StockTransferParam transferParam = new StockTransferParam();
        transferParam.setMatnr(param.getMatnr());
        transferParam.setAnfme(anfme);
        transferParam.setAllotNo(param.getNode_id()+ "_" +param.getMatnr());
        params.add(transferParam);
        Result1 result = asrsService.stockTransfer(params);
        if (result.getCode() == 500) {
            if (Cools.isEmpty(result.getData())) {
                throw new CoolException(result.getMsg());
            } else {
                throw new CodeCoolException("20001-" + result.getData());
            }
        }
        // 直接增加库存
        LocDetl locDetl = locDetlService.getLocDetl(param.getNode_id(), param.getMatnr());
        if (locDetl == null) {
            // 更新货位库存明细
            locDetl = new LocDetl();
            locDetl.setLocNo(node.getName());
            locDetl.setNodeId(node.getId());
            locDetl.setAnfme(anfme);
            VersionUtils.setLocDetl(locDetl, mat);
            locDetl.setStatus(1);
            locDetl.setCreateBy(userId);
            locDetl.setCreateTime(new Date());
            locDetl.setUpdateBy(userId);
            locDetl.setUpdateTime(new Date());
            boolean insert = locDetlService.insert(locDetl);
            if (!insert) {
                throw new CoolException("新增库存明细档失败");
            }
        } else {
            if (!locDetlService.incrementStock(node.getId(), param.getMatnr(), anfme)) {
                throw new CoolException("新增库存明细档失败");
            }
        }
        return R.ok("补仓成功,等待立库调拨");
    }
    @Override
    public R stockCheck(StoCheckParam param, Long userId) {
        if (Cools.isEmpty(param.getLocNo())) {
            return R.error("请选择货位");
src/main/resources/application.yml
@@ -51,3 +51,6 @@
    secret: 84CHL7tF21LbU1qpaP0jn9mIAZP9bv
    bucket: tjdt
    endpoint: http://oss-cn-hangzhou.aliyuncs.com
asrs:
  baseUrl: http://localhost:8081/htwms
src/main/webapp/views/safeSto/safeSto.html
@@ -56,7 +56,7 @@
</script>
<script type="text/html" id="operate">
    {{#  if(d.status > 1){ }}
    {{#  if(d.status > 2){ }}
    <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="allot">补仓</a>
    {{#  } }}
</script>