自动化立体仓库 - WMS系统
zjj
2023-11-03 a546b70a863e44c2e8735b3cfc9da45a781b735f
#托盘码下架
4个文件已修改
100 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/LocDetlController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -26,6 +26,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
@@ -42,6 +43,14 @@
    private MatService matService;
    @Autowired
    private ManLocDetlService manLocDetlService;
    @RequestMapping(value = "/locDetl/list/barcode")
    public R getBarcodeList(@RequestParam String barcode) {
        List<ManLocDetl> manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("zpallet", barcode));
        if (Cools.isEmpty(manLocDetls)){
            return R.error("托盘码数据为空");
        }
        return R.ok(manLocDetls);
    }
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -367,6 +367,14 @@
        }
        return mobileService.manDetlOut(json , getUser());
    }
    @RequestMapping("/manDetl/barcode/out")
    @ManagerAuth(memo = "订单下架(托盘码)")
    public R barcodeDelete(@RequestBody JSONObject json){
        if (json == null){
            return R.error("传入数据为空");
        }
        return mobileService.barcodeDelete(json , getUser());
    }
    @RequestMapping("/manDetl/in/barcode")
    @ManagerAuth(memo = "订单上架(托盘码)")
src/main/java/com/zy/asrs/service/MobileService.java
@@ -46,4 +46,5 @@
    R manDetlOut(JSONObject json,User user);
    R manDetlInBarcode(JSONObject json ,User user);
    R barcodeDelete(JSONObject json, User user);
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -884,4 +884,86 @@
        }
        return R.ok("上架成功");
    }
    @Override
    @Transactional
    public R barcodeDelete(JSONObject json, User user) {
        String jsonBarcode = (String) json.get("barcode");
        String jsonOrderNo = (String) json.get("orderNo");
        JSONArray combMats = json.getJSONArray("combMats");
        for (int i = 0; i < combMats.size(); i++) {
            ManLocDetl jsonManLocDetl = combMats.getObject(i, ManLocDetl.class);
            Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>()
                    .eq("order_no", jsonOrderNo)
                    .eq("matnr", jsonManLocDetl.getMatnr());
            OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper);
            if (Cools.isEmpty(orderDetl)){
                return R.error("订单中未查询到下架数据");
            }
            BigDecimal orderQty = new BigDecimal(orderDetl.getQty());
            BigDecimal orderWorkQty = new BigDecimal(orderDetl.getWorkQty());
            BigDecimal anfme = new BigDecimal(jsonManLocDetl.getAnfme());
            BigDecimal diffQty = orderQty.add(anfme);
            BigDecimal diffWorkQty = orderWorkQty.add(anfme);
            if (diffQty.doubleValue() > orderDetl.getAnfme()){
                return R.error("完成数量大于订单数量");
            }
            if (diffWorkQty.doubleValue() > orderDetl.getAnfme()){
                return R.error("工作数量大于订单数量");
            }
            orderDetl.setQty(diffQty.doubleValue());
            orderDetl.setWorkQty(diffWorkQty.doubleValue());
            if (!orderDetlService.updateById(orderDetl)){
                return R.error("订单明细更新失败");
            }
            EntityWrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<>();
            manLocDetlWrapper.eq("zpallet",jsonBarcode);
            manLocDetlWrapper.eq("matnr",jsonManLocDetl.getMatnr());
            ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper);
            BigDecimal locDetlAnfme = new BigDecimal(manLocDetl.getAnfme());
            BigDecimal diffAnfme = locDetlAnfme.subtract(anfme);
            if (diffAnfme.doubleValue() <0){
                return R.error("出库数量大于库存数量");
            }
            if (diffAnfme.doubleValue() == 0){
                if (!manLocDetlService.delete(manLocDetlWrapper)){
                    return R.error("删除库存明细失败");
                }
            } else if (diffAnfme.doubleValue() > 0) {
                manLocDetl.setAnfme(diffAnfme.doubleValue());
                if (!manLocDetlService.update(manLocDetl,manLocDetlWrapper)){
                    return R.error("更新库存明细失败");
                }
            }
            Order order = orderService.selectByNo(jsonOrderNo);
            if (IsOrderStatus(jsonOrderNo)){
                order.setSettle(4L);
            }else {
                order.setSettle(2L);
            }
            if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no", jsonOrderNo))){
                throw new RuntimeException("更新订单状态失败");
            }
        }
        return R.ok();
    }
    public Boolean IsOrderStatus(String order){
        //判断订单是否完成
        boolean log =true;
        //订单是否完成
        List<OrderDetl> or = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order));
        for (OrderDetl o: or) {
            if(o.getAnfme()-o.getQty()>0){
                log=false;
                break;
            }
        }
        return log;
    }
}