自动化立体仓库 - WMS系统
c039b42920df96629bc570883cd498e58276e643..b4d9cf3a9974d9abac40ecd228820e5e854b080a
4 天以前 1
#
b4d9cf 对比 | 目录
4 天以前 1
#
780461 对比 | 目录
5 天以前 1
#
f92b7c 对比 | 目录
1个文件已添加
26个文件已修改
459 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/AgvLocListDetlParam.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/AgvUnlockLoc.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasAgvLocDetlMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetlStatis/locDetlStatis.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/orderPakout/order.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -270,6 +270,12 @@
        return R.ok("组托成功");
    }
    @RequestMapping("/AgvUnlockLoc/wcs/auth")
    public R agvUnlockLoc(@RequestBody AgvUnlockLoc agvUnlockLoc){
        mobileService.agvUnlockLoc(agvUnlockLoc);
        return R.ok("离库成功");
    }
    @RequestMapping("/kitting/query/auth")
    @ManagerAuth(memo = "齐套入库查询")
    public R kittingQuery(@RequestBody CombParam combParam){
src/main/java/com/zy/asrs/controller/OutController.java
@@ -169,6 +169,52 @@
                    locDtos.add(locDto);
                }
            }
        }else if(orderPakOut.getDocType() == 7){
            for (OrderDetlPakout orderDetl : orderDetlPakouts) {
                double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
                if (issued <= 0.0D) {
                    continue;
                }
                List<LocDetl> locDetls = null;
                locDetls = locDetlService.queryStockAll123(null, exist,orderDetl.getMatnr(), orderDetl.getBoxType3());
                for (LocDetl locDetl : locDetls) {
                    if (issued > 0) {
                        LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
                                issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                        locDto.setFrozen(locDetl.getFrozen());
                        locDto.setFrozenLoc(locMast.getFrozen());
                        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
                        locDto.setStaNos(staNos);
                        locDto.setBrand(orderDetl.getBrand());
                        locDto.setStandby1(orderDetl.getStandby1());
                        locDto.setStandby2(orderDetl.getStandby2());
                        locDto.setStandby3(orderDetl.getStandby3());
                        locDto.setBoxType1(orderDetl.getBoxType1());
                        locDto.setBoxType2(orderDetl.getBoxType2());
                        locDto.setBoxType3(orderDetl.getBoxType3());
                        locDtos.add(locDto);
                        exist.add(locDetl.getLocNo());
                        // 剩余待出数量递减
                        issued = issued - locDetl.getAnfme();
                    } else {
                        break;
                    }
                }
                if (issued > 0) {
                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                    locDto.setBrand(orderDetl.getBrand());
                    locDto.setStandby1(orderDetl.getStandby1());
                    locDto.setStandby2(orderDetl.getStandby2());
                    locDto.setStandby3(orderDetl.getStandby3());
                    locDto.setBoxType1(orderDetl.getBoxType1());
                    locDto.setBoxType2(orderDetl.getBoxType2());
                    locDto.setBoxType3(orderDetl.getBoxType3());
                    locDto.setLack(Boolean.TRUE);
                    locDtos.add(locDto);
                }
            }
        }else {
            for (OrderDetlPakout orderDetl : orderDetlPakouts) {
                double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
src/main/java/com/zy/asrs/entity/param/AgvLocListDetlParam.java
@@ -1,5 +1,6 @@
package com.zy.asrs.entity.param;
import com.zy.asrs.entity.BasAgvLocDetl;
import com.zy.asrs.entity.LocDetl;
import lombok.Data;
@@ -9,5 +10,5 @@
public class AgvLocListDetlParam {
    private String locNo; //库位号
    private String locSys; //库位状态
    private List<LocDetl> agvDetlList; //明细
    private List<BasAgvLocDetl> agvDetlList; //明细
}
src/main/java/com/zy/asrs/entity/param/AgvUnlockLoc.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class AgvUnlockLoc {
    private Integer floorNo;
    private String reqCode;
    private String podcode;//托盘码
    private String positionCode = "2034";//站点
    private String indBind;
}
src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java
@@ -11,7 +11,6 @@
@Mapper
@Repository
public interface BasAgvLocDetlMapper extends BaseMapper<BasAgvLocDetl> {
    @Update("update asr_bas_agv_loc_detl set loc_no = #{newLocNo}, modi_time=getDate() where loc_no = #{oldLocNo}")
    int updateLocNo(String newLocNo, String oldLocNo);
    BasAgvLocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch,
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -79,6 +79,9 @@
    List<LocDetl> queryStockAll(@Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("matnr")String matnr, @Param("batch")String batch,
                                @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2,
                                @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2);
    List<LocDetl> queryStockAll7(@Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("matnr")String matnr, @Param("standby1")String standby1,@Param("standby2")String standby2,
                                @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3);
    List<LocDetl> queryStockAll123(@Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("matnr")String matnr, @Param("boxType3")String boxType3);
    Double queryStockAnfme(String matnr, String batch);
    List<LocDetl> queryStockMatnr(@Param("matnr")String matnr);
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -63,4 +63,6 @@
    int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("brand")String brand, @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3, @Param("workQty")Double workQty);
    List<OrderDetl> selectByOrderNo(@Param("orderNo") String orderNo);
    boolean morpt(@Param("orderNo")String orderNo,@Param("matnr")String matnr);
}
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -71,6 +71,8 @@
//    List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3);
    List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2);
    List<LocDetl> queryStockAll7(String orderNo, Set<String> locNos,String matnr, String standby1, String standby2, String standby3, String boxType1, String boxType2,String boxType3);
    List<LocDetl> queryStockAll123(String orderNo, Set<String> locNos,String matnr, String boxType3);
    Double queryStockAnfme(String matnr, String batch);
src/main/java/com/zy/asrs/service/MobileService.java
@@ -47,6 +47,7 @@
    void comb(CombParam param, Long userId);
    void combAuto(CombParam param, Long userId);
    void combAgv(CombParam param, Long userId);
    void agvUnlockLoc(AgvUnlockLoc agvUnlockLoc);
    /**
     * 齐套入库查询
src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -37,6 +37,7 @@
     * @return
     */
    boolean increaseWorkQty(Long orderId, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double workQty);
    boolean morpt(String orderNo,String orderNo1);
    List<OrderDetl> selectByOrderNo(String orderNo);
}
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -126,6 +126,15 @@
    }
    @Override
    public List<LocDetl> queryStockAll7(String orderNo, Set<String> locNos,String matnr,  String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) {
        return this.baseMapper.queryStockAll7(orderNo,locNos, matnr,standby1,standby2,standby3,boxType1,boxType2,boxType3);
    }
    @Override
    public List<LocDetl> queryStockAll123(String orderNo, Set<String> locNos,String matnr,  String boxType3) {
        return this.baseMapper.queryStockAll123(orderNo,locNos, matnr,boxType3);
    }
    @Override
    public Double queryStockAnfme(String matnr, String batch) {
        return this.baseMapper.queryStockAnfme(matnr, batch);
    }
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -29,6 +29,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.*;
@@ -1680,4 +1681,41 @@
            throw new CoolException(locDetl.getLocNo() + "库位不是在库状态");
        }
    }
    @Override
    public void agvUnlockLoc(AgvUnlockLoc agvUnlockLoc){
        Date now = new Date();
        if(agvUnlockLoc.getFloorNo().equals(1)){
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",agvUnlockLoc.getPositionCode()));
            if(locMast != null){
                locMast.setLocSts("O");
                locMast.setBarcode("");
                locMast.setIoTime(now);
                locMast.setModiTime(now);
                if (!locMastService.updateById(locMast)) {
                    throw new CoolException(agvUnlockLoc.getPositionCode() + "库位不是在库状态");
                }
            }
        }else{
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",agvUnlockLoc.getPositionCode()));
            AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam();
            agvBindCtnrAndBinTwoParam.setReqCode(String.valueOf(snowflakeIdWorker.nextId()));
            agvBindCtnrAndBinTwoParam.setPodcode(agvUnlockLoc.getPodcode());
            agvBindCtnrAndBinTwoParam.setPositionCode(agvUnlockLoc.getPositionCode());
            agvBindCtnrAndBinTwoParam.setIndBind("0");;
            ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV库位解绑",
                    AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
            if (resultBind.getCode()!=1){
                if(locMast != null){
                    locMast.setLocSts("O");
                    locMast.setBarcode("");
                    locMast.setIoTime(now);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        throw new CoolException(agvUnlockLoc.getPositionCode() + "库位不是在库状态");
                    }
                }
            }
        }
    }
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -66,6 +66,8 @@
    @Autowired
    private BasArmMastService basArmMastService;
    @Autowired
    private BasAgvLocDetlService basAgvLocDetlService;
    @Autowired
    private BasArmMastSignService basArmMastSignService;
    @Autowired
    private BasAgvMastService basAgvMastService;
@@ -969,8 +971,8 @@
    }
    private AgvLocListDetlParam buildAgvLocListDetlParam(String locNo, String locSts) {
        List<LocDetl> detlList = locDetlService.selectList(
                new EntityWrapper<LocDetl>().eq("loc_no", locNo)
        List<BasAgvLocDetl> detlList = basAgvLocDetlService.selectList(
                new EntityWrapper<BasAgvLocDetl>().eq("loc_no", locNo)
        );
        
        AgvLocListDetlParam dto = new AgvLocListDetlParam();
src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java
@@ -5,10 +5,12 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.OrderDetlPakin;
import com.zy.asrs.entity.param.OrderDetlByCode;
import com.zy.asrs.mapper.OrderDetlPakinMapper;
import com.zy.asrs.service.OrderDetlPakinService;
import com.zy.asrs.service.OrderDetlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -18,6 +20,8 @@
public class OrderDetlPakinServiceImpl extends ServiceImpl<OrderDetlPakinMapper, OrderDetlPakin> implements OrderDetlPakinService {
    @Autowired
    private OrderDetlPakinService orderDetlPakinService;
    @Autowired
    private OrderDetlService orderDetlService;
    @Override
    public List<OrderDetlPakin> selectByOrderId(Long orderId) {
        return this.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderId));
@@ -118,9 +122,9 @@
    
    @Override
    public boolean morpt(String orderNo,String orderNo1){
        List<OrderDetlPakin> list1 = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no",orderNo1));
        List<OrderDetl> list1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",orderNo1));
        try{
            for (OrderDetlPakin item : list1) {
            for (OrderDetl item : list1) {
                Double anfme = item.getAnfme();
                Double qty = item.getQty();
                String matnr = item.getMatnr();
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -3,17 +3,22 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.OrderDetlPakin;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.service.OrderDetlPakinService;
import com.zy.asrs.service.OrderDetlService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("orderDetlService")
public class OrderDetlServiceImpl extends ServiceImpl<OrderDetlMapper, OrderDetl> implements OrderDetlService {
    @Autowired
    private OrderDetlService orderDetlService;
    @Override
    public List<OrderDetl> selectByOrderId(Long orderId) {
        return this.selectList(new EntityWrapper<OrderDetl>().eq("order_id", orderId));
@@ -99,4 +104,25 @@
    public List<OrderDetl> selectByOrderNo(String orderNo) {
        return this.baseMapper.selectByOrderNo(orderNo);
    }
    @Override
    public boolean morpt(String orderNo,String orderNo1){
        List<OrderDetl> list1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",orderNo1));
        try{
            for (OrderDetl item : list1) {
                Double anfme = item.getAnfme();
                Double qty = item.getQty();
                String matnr = item.getMatnr();
                if(anfme.equals(qty)){
                    OrderDetl orderDetl = orderDetlService.selectOne(
                            new EntityWrapper<OrderDetl>().eq("matnr", matnr).eq("order_no", orderNo)
                    );
                    this.baseMapper.morpt(orderNo,matnr);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new CoolException("汇报单转换失败:" + e.getMessage());
        }
        return true;
    }
}
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -37,7 +37,7 @@
    private OpenService openService;
    public ReturnT<String>                           start(BasAgvMast basAgvMast) {
    public ReturnT<String> start(BasAgvMast basAgvMast) {
        try {
            Date now = new Date();
            switch (basAgvMast.getIoType()){
@@ -60,16 +60,14 @@
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
                    basAgvMastService.updateById(basAgvMast);
                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    if(basAgvMastService.updateById(basAgvMast)){
                        openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    }
                    break;
                case 1:
                    LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
                    LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
                    List<BasAgvLocDetl> locDetls1 = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    if (!locDetls1.isEmpty()) {
                        basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    }
                    // 修改目标库位状态 ==> .locSts
                    locMast1.setLocSts("F");
                    locMast1.setBarcode(sourceLoc1.getBarcode());
@@ -98,7 +96,6 @@
                        }
                    }
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvMast.setStatus(4);
@@ -161,7 +158,7 @@
                        }
                    }
//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
                    if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){
src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java
@@ -19,6 +19,7 @@
    private boolean InboundOrderSwitch;
    // 每15分钟同步一次物料档案,防止档案位同步单据先获取
    @Scheduled(cron = "0 */15 * * * ?")
//    @Scheduled(cron = "0/5 * * * * ?")
    void syncMaterialData() {
        if (!InboundOrderSwitch) {
            return;
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -57,7 +57,7 @@
                    }else if( order.getDocType() == 21){  //导入订单出库(领料)
                        order.setSettle(8L);
                        orderService.updateById(order);
                    }else if(order.getPayType() == 1 || order.getSalesman() != null){
                    }else if((order.getPayType() != null && order.getPayType() == 1) && order.getSalesman() != null){
                        Order order1 = orderService.selectByNo(order.getSalesman());
                        if(orderDetlPakinService.morpt(order.getSalesman(),order.getOrderNo())){
                            order.setSettle(11L); //yu/cheng/dan/deng/dai/chu/ku/dan
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -298,6 +298,7 @@
                            String matnr = jsonObjectNew.get("number").toString();
                            String name = jsonObjectNew.get("name").toString();
                            String createTime = jsonObjectNew.get("createtime").toString();
                            String memo = jsonObjectNew.get("eap7_textfield1").toString();
                            Double height = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield9");
                            Double width = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield8");
                            Double length = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield7");
@@ -335,6 +336,7 @@
                                if (mat.getUpdateTime().compareTo(modifyTime) != 0) {
                                    // 更新字段
                                    if (!mat.getMaktx().equals(name)) mat.setMaktx(name);
                                    if (!mat.getMemo().equals(memo)) mat.setMemo(memo);
                                    if (mat.getWeight().compareTo(grossweight) != 0) mat.setWeight(grossweight);
                                    if (mat.getUnits().compareTo(netweight) != 0) mat.setUnits(netweight);
                                    if (mat.getSafeQty().compareTo(unit) != 0) mat.setSafeQty(unit);
@@ -724,6 +726,7 @@
                            for (int k = 0; k < billEntryArray.size(); k++) {
                                JSONObject entry = billEntryArray.getJSONObject(k);
                                String matnr = entry.getString("material_number"); //物料编码,内部SKU
                                Double qty = entry.getDouble("qty");
                                Double anfme = entry.getDouble("eap7_decimalfield");//箱数
                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数
                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积
@@ -737,7 +740,7 @@
                                Long seq = entry.getLong("seq"); //分录行号
//                                String suppCode = entry.getString("supplier_number");
                                String suppCode = null;
                                if (anfme == null || anfme == 0) {
                                if (qty == null || qty == 0) {
                                    callApiLogSaveOrder(order, kingDeeUtilType,
                                            "单据数量异常:" + matnr, false);
                                    continue;
@@ -754,7 +757,7 @@
                                            "档案箱数量异常:" + matnr, false);
                                    continue;
                                }
                                Double erpAnfme = anfme*mat.getSafeQty();
                                Double anfmeBox = qty/mat.getSafeQty();
                                // ========= 明细去重 =========
                                List<OrderDetl> orderDetls =
                                        orderDetlService.selectByOrderId(order.getId());
@@ -773,8 +776,8 @@
                                orderDetl.sync(mat);
                                orderDetl.setThreeCode(detlId);
                                orderDetl.setLineNumber(seq);
                                orderDetl.setAnfme(anfme);
                                orderDetl.setErpAnfme(erpAnfme);
                                orderDetl.setAnfme(anfmeBox != anfme?anfme : anfmeBox);
                                orderDetl.setErpAnfme(qty);
                                orderDetl.setOrderId(order.getId());
                                orderDetl.setOrderNo(order.getOrderNo());
                                orderDetl.setSupp(supp);
@@ -1587,7 +1590,7 @@
                                String detlId = entry.getString("id"); //明细id
                                Long seq = entry.getLong("seq"); //分录行号
                                String manubill = entry.getString("manufacturenun");
                                String manubillid = entry.getString("orderid_id");
                                String manubillid = entry.getString("orderfid_id");
                                String manuentryid = null;
                                String manuentry = null;
                                if(kingDeeUtilType.formId.equals("PRD_MORPT")){
@@ -1640,9 +1643,9 @@
                                orderDetl.setSupp(supp);
                                orderDetl.setSuppCode(suppCode);
                                orderDetl.setSku(matnr);
                                orderDetl.setStandby1(s1);
                                orderDetl.setStandby2(s2);
                                orderDetl.setStandby3(s3);
                                orderDetl.setStandby1(s1 != null? s1:"1");
                                orderDetl.setStandby2(s2 != null? s2:"1");
                                orderDetl.setStandby3(s3 != null? s3:"1");
                                orderDetl.setBoxType1(owner);
                                orderDetl.setBoxType2(ownerUuid);
                                orderDetl.setBoxType3(pOrderNo);
@@ -1772,6 +1775,7 @@
                            String matnr = jsonObjectNew.get("number").toString();
                            String name = jsonObjectNew.get("name").toString();
                            String createTime = jsonObjectNew.get("createtime").toString();
                            String memo = jsonObjectNew.get("eap7_textfield1").toString();
                            Double height = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield9");
                            Double width = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield8");
                            Double length = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield7");
@@ -1794,6 +1798,7 @@
                                mat.setManLength(length1);
                                mat.setHeight(height1);
                                mat.setWidth(width1);
                                mat.setMemo(memo);
                                mat.setCreateTime(sdf1.parse(createTime));
                                mat.setUpdateTime(modifyTime);
                                mat.setStatus(1);
@@ -1809,6 +1814,7 @@
                                if (mat.getUpdateTime().compareTo(modifyTime) != 0) {
                                    // 更新字段
                                    if (!mat.getMaktx().equals(name)) mat.setMaktx(name);
                                    if (!mat.getMemo().equals(memo)) mat.setMemo(memo);
                                    if (mat.getWeight().compareTo(grossweight) != 0) mat.setWeight(grossweight);
                                    if (mat.getUnits().compareTo(netweight) != 0) mat.setUnits(netweight);
                                    if (mat.getSafeQty().compareTo(unit) != 0) mat.setSafeQty(unit);
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
@@ -238,11 +238,11 @@
                        }
                    }
                }
                if(order.getDocType() == 16L){
                if((order.getDocType() == 16L || order.getDocType() == 24L || order.getDocType() == 3) && order.getCstmrName().equals("和得科技")){
                    order.setDocType(23L);
                    order.setSettle(4L);//转为出库单据上报
                }else{
                    if(order.getDocType() == 23L || order.getDocType() == 24L){
                    if(order.getDocType() == 23L){
                        Order order1 = orderService.selectOne(new EntityWrapper<Order>().eq("salesman",order.getOrderNo()));
                        orderService.updateOrderStatus4(order1.getOrderNo());
                    }
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -261,7 +261,7 @@
                    JSONObject billentryLk = new JSONObject()
                            .fluentPut("id", 0L)
                            .fluentPut("seq", orderDetl.getLineNumber())
                            .fluentPut("billentry_lk_stableid", 1014628189722381313L)
                            .fluentPut("billentry_lk_stableid", 1828884569948973056L)
                            .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 主单ID
                            .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode())); // 明细ID
//                            .fluentPut("billentry_lk_baseqty_old", orderDetl.getErpAnfme())  // ERP数量
@@ -281,7 +281,7 @@
                            .fluentPut("owner_number", "BU-00001")
                            .fluentPut("manuentry", orderDetl.getSpecs())
                            .fluentPut("manubill", orderDetl.getColor())
                            .fluentPut("manubillid", orderDetl.getModel())
                            .fluentPut("manubillid", Long.parseLong(orderDetl.getModel()))
                            .fluentPut("manuentryid", orderDetl.getBrand())
                            .fluentPut("producttype", "C")
                            .fluentPut("eap7_textfield", orderDetl.getBoxType3())
@@ -296,7 +296,7 @@
                            .fluentPut("outkeeper_number", "BU-00001")
                            .fluentPut("shipper_number", "BU-00001")
                            .fluentPut("entrysettleorg_number", "BU-00001")
                            .fluentPut("material_number", orderDetl.getMatnr())
                            .fluentPut("material_masterid_number", orderDetl.getMatnr())
                            .fluentPut("billentry_lk", billentryLkArray2);
@@ -306,7 +306,7 @@
                        .fluentPut("data", new JSONArray(Arrays.asList(
                                new JSONObject()
                                        .fluentPut("billno", UUID.randomUUID().toString().replace("-", "").substring(0, 16))
                                        .fluentPut("billstatus", "C")
                                        .fluentPut("billstatus", "A")
                                        .fluentPut("id", 0L)
                                        .fluentPut("biztime", sdf1.format(now2))
                                        .fluentPut("org_number", "BU-00001")
@@ -318,6 +318,8 @@
                                        .fluentPut("invscheme_number", "601")
                                        .fluentPut("purorg_number", "BU-00001")
                                        .fluentPut("productionorg_number", "BU-00001")
                                        .fluentPut("supplier_number", "272")
                                        .fluentPut("billentry", billentryArray2)  // 将 billentry 数组添加到请求参数
                        )));
            case "STK_imSaloutbill":
src/main/resources/mapper/BasAgvLocDetlMapper.xml
@@ -127,4 +127,9 @@
        and matnr = #{matnr}
        <include refid="batchSeq"></include>
    </select>
    <update id="updateLocNo">
        update asr_bas_agv_loc_detl
        set loc_no = #{newLocNo}, modi_time=getDate()
        where loc_no = #{oldLocNo}
    </update>
</mapper>
src/main/resources/mapper/LocDetlMapper.xml
@@ -52,7 +52,16 @@
        <result column="box_type2" property="boxType2" />
        <result column="box_type3" property="boxType3" />
    </resultMap>
    <sql id="batchSeq123">
        <choose>
            <when test="boxType3 != null and boxType3 != ''">
                and a.box_type3 = #{boxType3}
            </when>
            <otherwise>
                and (a.box_type3 IS NULL OR a.box_type3 = '')
            </otherwise>
        </choose>
    </sql>
    <sql id="batchSeq">
        <choose>
            <when test="batch != null and batch != ''">
@@ -136,6 +145,56 @@
                and (a.brand IS NULL OR a.brand = '')
            </otherwise>
        </choose>
        <choose>
            <when test="standby1 != null and standby1 != ''">
                and a.standby1 = #{standby1}
            </when>
            <otherwise>
                and (a.standby1 IS NULL OR a.standby1 = '')
            </otherwise>
        </choose>
        <choose>
            <when test="standby2 != null and standby2 != ''">
                and a.standby2 = #{standby2}
            </when>
            <otherwise>
                and (a.standby2 IS NULL OR a.standby2 = '')
            </otherwise>
        </choose>
        <choose>
            <when test="standby3 != null and standby3 != ''">
                and a.standby3 = #{standby3}
            </when>
            <otherwise>
                and (a.standby3 IS NULL OR a.standby3 = '')
            </otherwise>
        </choose>
        <choose>
            <when test="boxType1 != null and boxType1 != ''">
                and a.box_type1 = #{boxType1}
            </when>
            <otherwise>
                and (a.box_type1 IS NULL OR a.box_type1 = '')
            </otherwise>
        </choose>
        <choose>
            <when test="boxType2 != null and boxType2 != ''">
                and a.box_type2 = #{boxType2}
            </when>
            <otherwise>
                and (a.box_type2 IS NULL OR a.box_type2 = '')
            </otherwise>
        </choose>
        <choose>
            <when test="boxType3 != null and boxType3 != ''">
                and a.box_type3 = #{boxType3}
            </when>
            <otherwise>
                and (a.box_type3 IS NULL OR a.box_type3 = '')
            </otherwise>
        </choose>
    </sql>
    <sql id="batchSeq7">
        <choose>
            <when test="standby1 != null and standby1 != ''">
                and a.standby1 = #{standby1}
@@ -740,6 +799,164 @@
        desc
    </select>
    <select id="queryStockAll7" resultMap="BaseResultMap">
        select a.*
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F'
        and a.matnr = #{matnr}
        <if test="orderNo != null and orderNo != ''">
            and a.order_no = #{orderNo}
        </if>
        <include refid="batchSeq7"></include>
        <if test="locNos != null and locNos.size > 0">
            and b.loc_no not in
            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        order by
        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
        desc,
        NEWID(),
        case
        when (left(a.loc_no, 2) = '01') then 0
        when (left(a.loc_no, 2) = '02') then 1
        when (left(a.loc_no, 2) = '03') then 1
        when (left(a.loc_no, 2) = '04') then 0
        when (left(a.loc_no, 2) = '05') then 0
        when (left(a.loc_no, 2) = '06') then 1
        when (left(a.loc_no, 2) = '07') then 1
        when (left(a.loc_no, 2) = '08') then 0
        when (left(a.loc_no, 2) = '09') then 0
        when (left(a.loc_no, 2) = '10') then 1
        when (left(a.loc_no, 2) = '11') then 1
        when (left(a.loc_no, 2) = '12') then 0
        when (left(a.loc_no, 2) = '13') then 0
        when (left(a.loc_no, 2) = '14') then 1
        when (left(a.loc_no, 2) = '15') then 1
        when (left(a.loc_no, 2) = '16') then 0
        when (left(a.loc_no, 2) = '17') then 0
        when (left(a.loc_no, 2) = '18') then 1
        when (left(a.loc_no, 2) = '19') then 1
        when (left(a.loc_no, 2) = '20') then 0
        when (left(a.loc_no, 2) = '21') then 0
        when (left(a.loc_no, 2) = '22') then 1
        when (left(a.loc_no, 2) = '23') then 1
        when (left(a.loc_no, 2) = '24') then 0
        when (left(a.loc_no, 2) = '25') then 0
        when (left(a.loc_no, 2) = '26') then 1
        when (left(a.loc_no, 2) = '27') then 1
        when (left(a.loc_no, 2) = '28') then 0
        when (left(a.loc_no, 2) = '29') then 0
        when (left(a.loc_no, 2) = '30') then 1
        when (left(a.loc_no, 2) = '31') then 1
        when (left(a.loc_no, 2) = '32') then 0
        when (left(a.loc_no, 2) = '33') then 0
        when (left(a.loc_no, 2) = '34') then 1
        when (left(a.loc_no, 2) = '35') then 1
        when (left(a.loc_no, 2) = '36') then 0
        when (left(a.loc_no, 2) = '37') then 0
        when (left(a.loc_no, 2) = '38') then 1
        when (left(a.loc_no, 2) = '39') then 1
        when (left(a.loc_no, 2) = '40') then 0
        when (left(a.loc_no, 2) = '41') then 0
        when (left(a.loc_no, 2) = '42') then 1
        when (left(a.loc_no, 2) = '43') then 1
        when (left(a.loc_no, 2) = '44') then 0
        when (left(a.loc_no, 2) = '45') then 0
        when (left(a.loc_no, 2) = '46') then 1
        when (left(a.loc_no, 2) = '47') then 1
        when (left(a.loc_no, 2) = '48') then 0
        else 0
        end
        desc
    </select>
    <select id="queryStockAll123" resultMap="BaseResultMap">
        select a.*
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F'
        and a.matnr = #{matnr}
        <if test="orderNo != null and orderNo != ''">
            and a.order_no = #{orderNo}
        </if>
        <include refid="batchSeq123"></include>
        <if test="locNos != null and locNos.size > 0">
            and b.loc_no not in
            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        order by
        DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
        desc,
        NEWID(),
        case
        when (left(a.loc_no, 2) = '01') then 0
        when (left(a.loc_no, 2) = '02') then 1
        when (left(a.loc_no, 2) = '03') then 1
        when (left(a.loc_no, 2) = '04') then 0
        when (left(a.loc_no, 2) = '05') then 0
        when (left(a.loc_no, 2) = '06') then 1
        when (left(a.loc_no, 2) = '07') then 1
        when (left(a.loc_no, 2) = '08') then 0
        when (left(a.loc_no, 2) = '09') then 0
        when (left(a.loc_no, 2) = '10') then 1
        when (left(a.loc_no, 2) = '11') then 1
        when (left(a.loc_no, 2) = '12') then 0
        when (left(a.loc_no, 2) = '13') then 0
        when (left(a.loc_no, 2) = '14') then 1
        when (left(a.loc_no, 2) = '15') then 1
        when (left(a.loc_no, 2) = '16') then 0
        when (left(a.loc_no, 2) = '17') then 0
        when (left(a.loc_no, 2) = '18') then 1
        when (left(a.loc_no, 2) = '19') then 1
        when (left(a.loc_no, 2) = '20') then 0
        when (left(a.loc_no, 2) = '21') then 0
        when (left(a.loc_no, 2) = '22') then 1
        when (left(a.loc_no, 2) = '23') then 1
        when (left(a.loc_no, 2) = '24') then 0
        when (left(a.loc_no, 2) = '25') then 0
        when (left(a.loc_no, 2) = '26') then 1
        when (left(a.loc_no, 2) = '27') then 1
        when (left(a.loc_no, 2) = '28') then 0
        when (left(a.loc_no, 2) = '29') then 0
        when (left(a.loc_no, 2) = '30') then 1
        when (left(a.loc_no, 2) = '31') then 1
        when (left(a.loc_no, 2) = '32') then 0
        when (left(a.loc_no, 2) = '33') then 0
        when (left(a.loc_no, 2) = '34') then 1
        when (left(a.loc_no, 2) = '35') then 1
        when (left(a.loc_no, 2) = '36') then 0
        when (left(a.loc_no, 2) = '37') then 0
        when (left(a.loc_no, 2) = '38') then 1
        when (left(a.loc_no, 2) = '39') then 1
        when (left(a.loc_no, 2) = '40') then 0
        when (left(a.loc_no, 2) = '41') then 0
        when (left(a.loc_no, 2) = '42') then 1
        when (left(a.loc_no, 2) = '43') then 1
        when (left(a.loc_no, 2) = '44') then 0
        when (left(a.loc_no, 2) = '45') then 0
        when (left(a.loc_no, 2) = '46') then 1
        when (left(a.loc_no, 2) = '47') then 1
        when (left(a.loc_no, 2) = '48') then 0
        else 0
        end
        desc
    </select>
    <select id="queryStockAnfme" resultType="java.lang.Double">
        select sum(anfme) as count from man_loc_detl
         where 1=1
src/main/resources/mapper/OrderDetlMapper.xml
@@ -210,5 +210,10 @@
        from man_order_detl
        where order_no = #{orderNo}
    </select>
    <update id="morpt" parameterType="String">
        UPDATE man_order_detl
        SET qty = anfme, work_qty = anfme
        WHERE order_no = #{orderNo} and matnr = #{matnr}
    </update>
</mapper>
src/main/webapp/static/js/common.js
@@ -228,7 +228,7 @@
var detlCols = [
    {field: 'matnr', align: 'center',title: '商品编号', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称', sort:true,hide:true}
    ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false}
    // ,{field: 'batch', align: 'center',title: '货品特征', sort:true,hide:true}
    ,{field: 'anfme', align: 'center',title: '数量', hide: false}
src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
@@ -6,7 +6,7 @@
    arrRemove(detlCols, "field", "anfme")
    arrRemove(detlCols, "field", "zpallet")
    arrRemove(detlCols, "field", "orderNo")
    arrRemove(detlCols, "field", "memo")
    // arrRemove(detlCols, "field", "memo")
    cols.push.apply(cols, detlCols);
    // cols.push({field: 'anfme', align: 'center',title: '数量', style: 'font-weight: bold'}
    // )
@@ -126,14 +126,14 @@
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200 && res.data && res.data.length > 0) {
                                var titles = ['库存数量', '商品编号', '商品名称', '采购单号', '条码UPC', '单箱毛重(kg)', '客户PO'];
                                var fieldKeys = ['anfme', 'matnr', 'maktx', 'boxType3', 'standby2', 'units', 'standby1'];
                                var titles = ['库存数量', '商品编号', '备注', '采购单号', '条码UPC', '单箱毛重(kg)', '客户PO'];
                                var fieldKeys = ['anfme', 'matnr', 'memo', 'boxType3', 'standby2', 'units', 'standby1'];
                                var exportData = res.data.map(function(item) {
                                    return [
                                        item.anfme || '',
                                        item.matnr || '',
                                        item.maktx || '',  // 如果 maktx 为空可默认
                                        item.memo || '',  // 如果 maktx 为空可默认
                                        item.boxType3 || '',
                                        item.standby2 || '',
                                        item.units || '',
src/main/webapp/static/js/orderPakout/order.js
@@ -43,7 +43,7 @@
        cols: [[
            {type: 'numbers'},
            {field: 'orderNo', title: '单据编号', templet: '#orderNoTpl'},
            {field: 'itemName', align: 'center', title: '客户po',  minWidth: 160, width: 160},
            // {field: 'itemName', align: 'center', title: '客户po',  minWidth: 160, width: 160},
            {field: 'docType$', align: 'center', title: '类型',  minWidth: 160, width: 160},
            {field: 'cstmrName', align: 'center', title: '货主',  minWidth: 160, width: 160},
            {align: 'center', title: '明细', toolbar: '#tbLook', minWidth: 160, width: 160},