自动化立体仓库 - WMS系统
pang.jiabao
1 天以前 17080b28dc3fb0df12a5a4da76e10dd9203e5725
订单功能完善
9个文件已修改
1个文件已添加
151 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MatController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AutoReportingScheduler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MatController.java
@@ -13,7 +13,6 @@
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.MatPrint;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.result.KeyValueVo;
import com.zy.asrs.service.MatService;
import com.zy.asrs.utils.MatExcelListener;
@@ -48,6 +47,16 @@
        return R.ok().add("YJ" + DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss).substring(0, 16));
    }
    @RequestMapping(value = "/mat/list/pda/page/auth")
    @ManagerAuth
    public R pdaListPage(@RequestParam Long tagId, @RequestParam Long curr){
        EntityWrapper<Mat> wrapper = new EntityWrapper<>();
        wrapper.eq("tag_id", tagId);
        wrapper.orderBy("create_time", false);
        List<Mat> mats = matService.selectList(wrapper);
        return R.ok().add(mats);
    }
    @RequestMapping(value = "/mat/list/pda/auth")
    @ManagerAuth
    public R pdaList(@RequestParam(required = true)Long tagId){
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -107,7 +107,7 @@
            } else {
                //查看库位明细中有的物料
                List<ManLocDetl> locDetls = manLocDetlMapper.selectList(new EntityWrapper<ManLocDetl>()
                        .eq("matnr", o.getMatnr()).eq("batch",o.getBatch())
                        .eq("matnr", o.getMatnr()).orderBy("modi_time",false)
                );
                if (Cools.isEmpty(locDetls)) {
                    continue;
@@ -149,7 +149,7 @@
            }
            for (ManLocDetl l : locDetls
            ) {
                if (o.getMatnr().equals(l.getMatnr()) && o.getBatch().equals(l.getBatch())) {
                if (o.getMatnr().equals(l.getMatnr())) {
                    if (o.getAnfme() - o.getWorkQty() >= l.getAnfme()) {
                    } else {
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -19,6 +19,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
@RestController
@@ -43,6 +44,28 @@
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @RequestMapping(value = "/order/comb/list/all")
    @ManagerAuth
    public R orderListComb() {
        return R.ok(orderService.selectAllCombOrderNo());
    }
    @RequestMapping(value = "/order/list/orderNo")
    public R orderListorderNo(@RequestParam String orderNo) {
        //数量修改成为完成数量
        List<OrderDetl> orderDetl1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
        List<OrderDetl> orderDetls= new ArrayList<>();
        for (OrderDetl o: orderDetl1) {
            BigDecimal c1 = new BigDecimal(o.getEnableQty()).setScale(2,BigDecimal.ROUND_HALF_UP);
            o.setAnfme(c1.doubleValue());
            if (o.getAnfme().equals(0.0)){
                continue;
            }
            orderDetls.add(o);
        }
        return R.ok(orderDetls);
    }
    @RequestMapping(value = "/order/nav/list/auth")
    @ManagerAuth
    public R navList(@RequestParam(required = false) String orderNo){
src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.entity.result;
import lombok.Data;
@Data
public class OrderNameListDto {
    private String order_no;
}
src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,15 +1,18 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.Order;
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.result.OrderNameListDto;
import java.util.List;
public interface OrderService extends IService<Order> {
    List<OrderNameListDto> selectAllCombOrderNo();
    Order selectByNo(String orderNo);
    List<OrderDetl> selectWorkingDetls(Long orderId);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -29,10 +29,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.*;
/**
 * 移动端服务核心类
@@ -223,23 +220,24 @@
            SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch());
            //是否属于订单数据
//            if (!Cools.isEmpty(waitPakin.getOrderNo())){
//                Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
//                if (Cools.isEmpty(order)){
//                    continue;
//                }
//                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId);
//                if (Cools.isEmpty(orderDetl)){
//                    continue;
//                }
//                // 修改订单明细完成数量
//                if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
//                    throw new CoolException("修改单据明细数量失败");
//                }
//                // 修改订单状态 作业中 ===>> 已完成
//                orderService.checkComplete(waitPakin.getOrderNo(), hostId);
//
//            }
            //是否属于订单数据
            if (!Cools.isEmpty(waitPakin.getOrderNo())){
                Order order = orderService.selectByNo(waitPakin.getOrderNo());
                if (Cools.isEmpty(order)){
                    throw new CoolException("平库上架查询订单失败");
                }
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch());
                if (Cools.isEmpty(orderDetl)){
                    throw new CoolException("平库上架查询订单明细失败");
                }
                // 修改订单明细完成数量
                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
                    throw new CoolException("修改单据明细数量失败");
                }
                // 修改订单状态 作业中 ===>> 已完成
                orderService.checkComplete(waitPakin.getOrderNo());
            }
            // 更新入库工作档
            waitPakin.setLocNo(locNo);
@@ -294,7 +292,7 @@
        Date now = new Date();
        // 无单组托
        if (Cools.isEmpty(param.getOrderNo())) {
        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
@@ -332,22 +330,22 @@
            }
        // 关联组托
        } else {
            Order order = orderService.selectByNo(param.getOrderNo());
            if (Cools.isEmpty(order) || order.getSettle() > 2) {
                throw new CoolException("单据编号已过期");
            }
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
                Order order = orderService.selectByNo(elem.getOrderNo());
                if (order.getSettle() > 2) {
                    throw new CoolException("单据编号已完成:" + elem.getOrderNo());
                }
                // 订单明细数量校验
                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
                if (elem.getAnfme() > orderDetl.getEnableQty()) {
                    throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
                }
                // 修改订单作业数量
                // 修改订单明细数量
                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
                    throw new CoolException("修改单据作业数量失败");
                    throw new CoolException("修改单据明细数量失败");
                }
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
@@ -356,6 +354,7 @@
                    assert one != null;
                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
                } else {
                    detlDto.setOrderNo(order.getOrderNo());
                    detlDtos.add(detlDto);
                }
            });
@@ -364,6 +363,9 @@
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(detlDto.getMatnr() + "商品档案不存在");
                }
                Order order = orderService.selectByNo(detlDto.getOrderNo());
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setOrderNo(order.getOrderNo());   // 单据编号
@@ -379,9 +381,9 @@
                if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
            }
            orderService.updateSettle(order.getId(), 2L, userId);
        }
        }
    }
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SnowflakeIdWorker;
@@ -8,10 +9,10 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.entity.result.OrderNameListDto;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.service.*;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.common.model.DetlDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,31 @@
    private DocTypeService docTypeService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Override
    public List<OrderNameListDto> selectAllCombOrderNo() {
        List<Order> list = this.selectList(new EntityWrapper<Order>().orderBy("create_time",false));
        if (Cools.isEmpty(list)){
            return null;
        }
        ArrayList<OrderNameListDto> orderNameListDtos = new ArrayList<>();
        for (Order order :list){
            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_id", order.getDocType()));
            if (order.getSettle() >= 4) {
                continue;
            }
            if (docType.getPakin() == 1){
                OrderNameListDto orderNameListDto = new OrderNameListDto();
                orderNameListDto.setOrder_no(order.getOrderNo());
                orderNameListDtos.add(orderNameListDto);
            }
        }
        return orderNameListDtos;
    }
    @Override
    public Order selectByNo(String orderNo) {
@@ -74,7 +100,7 @@
        //当该订单明细数量==完成数量且>上报数量,上报状态为 否 或者 是 时都改成等待上报,定时器轮询等待上报进行上报
        for (OrderDetl orderDetl : orderDetls) {
            if (Objects.equals(orderDetl.getAnfme(), orderDetl.getQty())&&
                    orderDetl.getQty()>orderDetl.getUnits()
                    orderDetl.getQty()>(orderDetl.getUnits() == null ? 0 : orderDetl.getUnits())
                    &&orderDetl.getInspect()<2) {
                    orderDetl.setInspect(2);//等待上报
src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
@@ -27,8 +27,8 @@
    @Resource
    private AutoReportingHandler autoReportingHandler;
    @Scheduled(cron = "0 0/10 * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0 0/10 * * * ? ")
    @Scheduled(cron = "0/3 * * * * ? ")
    void execute() {
        List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("inspect", 2));
        if (Cools.isEmpty(orderDetls)) {
src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java
@@ -110,7 +110,7 @@
                    .setJson(JSON.toJSONString(orderRsult))
                    .build()
                    .doPost();
            log.info("订单明细完成上报u8原始返回:{}", response);
            log.info("orderNo:{},matnr:{},qty:{}订单明细完成上报u8原始返回:{}",orderNo ,orderDetl.getMatnr() ,qty , response);
            JSONObject jsonObject = JSON.parseObject(response);
            if (jsonObject.getInteger("code").equals(200)) {
src/main/resources/mapper/WrkMastMapper.xml
@@ -70,7 +70,7 @@
        select * from asr_wrk_mast
        where wrk_sts=5
        or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and dateadd(mi,1,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
        or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
        order by io_time,wrk_no asc
    </select>