自动化立体仓库 - WMS系统
zyx
2023-11-09 98b1835a279fd8c9ed2a21fae3501f24c470c39b
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -7,10 +7,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.NodePakoutParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkLogHandler;
@@ -74,6 +71,8 @@
    private NodeService nodeService;
    @Autowired
    private ManPakOutService manPakOutService;
    @Autowired
    private LocDetlService locDetlService;
    @Override
    @Transactional
@@ -104,9 +103,7 @@
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq());
                detlDto.setContainerCode(elem.getContainerCode());
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode());
                if (DetlDto.has(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                    assert one != null;
@@ -161,9 +158,7 @@
                    throw new CoolException("修改单据明细数量失败");
                }
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq());
                detlDto.setContainerCode(elem.getContainerCode());
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq(),elem.getContainerCode());
                if (DetlDto.has(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                    assert one != null;
@@ -478,6 +473,10 @@
            SaasUtils.insertLog(0,locNo,waitPakin.getMatnr(), waitPakin.getAnfme(),user.getUsername());
        });
        Node node = nodeService.selectByUuid(locNo);
        node.setStatus(0);
        nodeService.updateById(node);
        //生成入库通知历史档
        waitPakinLogService.save(zpallet);
        //删除入库通知档
@@ -542,6 +541,7 @@
        //修改库存
        manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getCount());
        if (manLocDetl.getAnfme() == 0 ){
            checkNodeStatus(manLocDetl.getLocNo());
            manLocDetlService.delete(manLocDetlWrapper);
        }else{
            manLocDetl.setStatus(1);
@@ -554,8 +554,28 @@
        //检测订单是否完成
        orderService.checkComplete(param.getOrderNo());
    }
    @Transactional
    public void modifyWrkDetl(List<WrkDetl> wrkDetls, List<ModifyPakoutParam.CA> params, Long userId) {
        wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no",wrkDetls.get(0).getWrkNo()));
        params.forEach(param ->{
            WrkDetl wrkDetl = new WrkDetl();
            LocDetl locDetl = locDetlService.selectByContainerCode(param.getContainerCode());
            BeanUtils.copyProperties(locDetl,wrkDetl);
            wrkDetl.setWrkNo(wrkDetls.get(0).getWrkNo());
            if(wrkDetl.getAnfme() < param.getAnfme()){
                throw new CoolException("料箱"+param.getContainerCode()+"的物料数量小于拣料数量,请重新核对");
            }
            wrkDetl.setAnfme(param.getAnfme());
            wrkDetl.setModiTime(new Date());
            wrkDetl.setAppeTime(new Date());
            wrkDetl.setModiUser(userId);
            wrkDetlService.insert(wrkDetl);
        });
    }
    private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){
@@ -592,21 +612,17 @@
        return status;
    }
    public static void main(String[] args) {
        ManPakOut m = new ManPakOut();
        m.setAnfme(1.0);
        NodePakoutParam n = new NodePakoutParam();
        n.setAnfme(1.0);
        double a = 1.0;
        double b = 1.0;
        System.out.println(m.getAnfme() == n.getAnfme());
        System.out.println(a == b);
        System.out.println(Double.doubleToLongBits(m.getAnfme()) == Double.doubleToLongBits(n.getAnfme()));
    private void checkNodeStatus(String locNo){
        ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo));
        //如果库存信息中没有改库位,则修改库位状态为1
        if(Cools.isEmpty(manLocDetl)){
            Node node = nodeService.selectByUuid(locNo);
            node.setStatus(1);
            nodeService.updateById(node);
        }
    }
}