自动化立体仓库 - WMS系统
zhang
2025-09-24 21fdb6d630bd74e262e0c5d40f9478cc844eb556
对接
2个文件已添加
64个文件已修改
1288 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MatController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java 555 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/CombParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MobileService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/DetlDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdCustomer.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdDepartment.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdEmp.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdInstockSource.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdInstockTarget.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdMaterial.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdOutstockSource.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdOutstockTarget.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdSupplier.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdUser.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/entity/ExdvYanbu.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdCustomerMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdEmpMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdMaterialMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdSupplierMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/mapper/ExdUserMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdCustomerService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdDepartmentService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdEmpService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdInstockSourceService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdInstockTargetService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdMaterialService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdOutstockSourceService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdOutstockTargetService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdSupplierService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/ExdUserService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/task/OrderScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/third/task/handler/OrderHandler.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/asrs/OrderDetlMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdCustomerMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdDepartmentMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdEmpMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdInstockSourceMapper.xml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdInstockTargetMapper.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdMaterialMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdOutstockSourceMapper.xml 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdOutstockTargetMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdSupplierMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/third/ExdUserMapper.xml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/user/user.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MatController.java
@@ -108,6 +108,7 @@
        return R.ok(matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr)));
    }
    @RequestMapping(value = "/mat/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1") Integer curr,
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -3,12 +3,11 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
@@ -16,13 +15,13 @@
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.model.WrkDto;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import com.zy.third.entity.ExdvYanbu;
import com.zy.third.mapper.ExdMaterialMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -40,7 +39,7 @@
@Slf4j
@RestController
@RequestMapping("mobile")
public class MobileController extends BaseController  {
public class MobileController extends BaseController {
    @Autowired
    private MobileService mobileService;
@@ -80,21 +79,24 @@
    @Autowired
    private ConfigService configService;
    @Autowired
    private ExdMaterialMapper exdMaterialMapper;
    // 商品上架
    @RequestMapping("/mat/onSale/auth")
    @ManagerAuth
    public R matOnSale(@RequestBody CombParam combParam){
    public R matOnSale(@RequestBody CombParam combParam) {
        mobileService.onSale(combParam);
        return R.ok("上架成功");
    }
    // 商品下架
    @RequestMapping("/mat/offSale/auth")
    //@ManagerAuth
    public R matOffSale(@RequestBody OffSaleParam offSaleParam){
    public R matOffSale(@RequestBody OffSaleParam offSaleParam) {
        mobileService.offSale(offSaleParam);
        return R.ok("下架成功");
    }
    // 组托 ----------------------------------------------------------------------------------------------------
@@ -105,7 +107,7 @@
     */
    @RequestMapping("/order/search/orderNo/auth")
    @ManagerAuth
    public R orderSearchByBarcode(@RequestParam String orderNo){
    public R orderSearchByBarcode(@RequestParam String orderNo) {
        Order order = orderService.selectByNo(orderNo);
        if (order == null) {
            return R.ok();
@@ -126,14 +128,14 @@
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam){
        mobileService.comb(combParam, getUserId());
    public R comb(@RequestBody CombParam combParam) {
        mobileService.comb(combParam, getUserId(), getUser().getEmail());
        return R.ok("组托成功");
    }
    @RequestMapping("/pack/get/auth")
    @ManagerAuth
    public R packGet(@RequestParam String barcode){
    public R packGet(@RequestParam String barcode) {
        Pack pack = packService.selectByBarcode(barcode);
        if (pack == null) {
            return R.ok();
@@ -146,7 +148,7 @@
    @RequestMapping("/pack/comb/auth")
    @ManagerAuth(memo = "下线组托")
    public R packComb(@RequestBody CombParam combParam){
    public R packComb(@RequestBody CombParam combParam) {
        mobileService.packComb(combParam, getUserId());
        return R.ok("组托成功");
    }
@@ -159,7 +161,7 @@
    @Deprecated
    public R pakoutQuery(@RequestParam(required = false) String barcode,
                         @RequestParam(required = false) Integer staNo,
                         @RequestParam(required = false) String matnr){
                         @RequestParam(required = false) String matnr) {
        if (Cools.isEmpty(barcode) && Cools.isEmpty(matnr)) {
            return R.ok();
        }
@@ -183,7 +185,7 @@
     */
    @RequestMapping("/pakout/confirm/barcode/auth")
    @ManagerAuth
    public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode){
    public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode) {
        if (Cools.isEmpty(barcode)) {
            return R.ok();
        }
@@ -200,7 +202,7 @@
    // 根据库位码和商品码搜索商品
    @RequestMapping("/mat/find/auth")
    public R find(@RequestParam(required = false) String locNo
            , @RequestParam(required = false) String matnr){
            , @RequestParam(required = false) String matnr) {
        //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr);
        ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr);
        return R.ok(manLocDetl);
@@ -213,7 +215,7 @@
    @RequestMapping("/pakout/confirm/pick/auth")
    @ManagerAuth
    public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
                                , @RequestParam(required = false) String matnr){
            , @RequestParam(required = false) String matnr) {
        if (Cools.isEmpty(wrkNo)) {
            return R.ok();
        }
@@ -279,9 +281,9 @@
                for (WrkDetl wrkDetl : dto.getWrkDetls()) {
                    wrkDetlService.updateInspect(wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                }
                if(wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
                if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) {
                    wrkMast.setWrkSts(34L);//下架完成等待回库
                }else {
                } else {
                    wrkMast.setWrkSts(15L);
                }
                wrkMastService.updateById(wrkMast);
@@ -340,7 +342,7 @@
    @RequestMapping("/adjust/auth")
    @ManagerAuth(memo = "盘点")
    public R adjust(@RequestBody MobileAdjustParam combParam){
    public R adjust(@RequestBody MobileAdjustParam combParam) {
        mobileService.adjust(combParam, getUserId());
        return R.ok("盘点成功");
    }
@@ -348,10 +350,10 @@
    @PostMapping("/order/out/pakout/auth")
    @ManagerAuth(memo = "订单出库")
    public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
        if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
        if (!param.containsKey("staNo") || !param.containsKey("orderNo")) {
            return R.parse(BaseRes.PARAM);
        }
        mobileService.pakoutByOrder(param,getUserId());
        mobileService.pakoutByOrder(param, getUserId());
        return R.ok("出库成功");
    }
@@ -359,38 +361,39 @@
    /**
     * 补空板   区域到点
     *
     * @param locNo 目标站点
     * @param size  托盘大小 1:小托盘  2:大托盘
     * @return
     */
    @RequestMapping("/FillEmptyPallets")
    public synchronized R FillEmptyPallets(@RequestParam(required = false) String locNo
            ,@RequestParam(required = false) String size){
            , @RequestParam(required = false) String size) {
        if (Cools.isEmpty(locNo) || Cools.isEmpty(size)) {
            return R.error("站点或者大小不能为空");
        }
        //空托盘缓冲区 小:E8  大:E9
        String rStaNo ="E8";
        if(size.equals("2")){
        String rStaNo = "E8";
        if (size.equals("2")) {
            rStaNo = "E9";
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type","ZONE");
        t1.put("type", "ZONE");
        t1.put("code", rStaNo);
        t1.put("autoStart",0);
        t1.put("operation","COLLECT");
        t1.put("autoStart", 0);
        t1.put("operation", "COLLECT");
        t2.put("seq", 0);
        t2.put("type","SITE");
        t2.put("type", "SITE");
        t2.put("code", locNo);
        t2.put("autoStart",0);
        t2.put("operation","DELIVERY");
        t2.put("autoStart", 0);
        t2.put("operation", "DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
@@ -398,119 +401,12 @@
        rcsParam.put("initPriority", 100);
        String response ="";
        Boolean bool =false;
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        map.put("X-LR-REQUEST-ID", time);
        try {
            log.info("wms派发搬运任务给AGV搬运={}", rcsParam);
            response = new HttpHandler.Builder()
                     .setHeaders(map)
                    .setUri(url)
                    .setHttps(true)
                    .setPath(attrcs)
                    .setJson(JSON.toJSONString(rcsParam))
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("wms派发搬运任务给AGV搬运失败返回值={}", response);
        } finally {
            apiLogService.save("wms派发搬运任务给AGV搬运"
                    , url + attrcs
                    , null
                    , "127.0.0.1"
                    , JSON.toJSONString(rcsParam)
                    , response
                    , bool
            );
        }
        if(bool){
            return R.ok();
        }else {
            return R.error(msg);
        }
    }
    /**
     * 空托盘回库
     * @param sourceStaNo 原站点
     * @param barcode  托盘大小 1:小托盘  2:大托盘  目标区或者巷道
     * @return
     */
    @RequestMapping("/FillEmptyPalletsStack")
    public synchronized R FillEmptyPalletsStack(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String barcode){
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(barcode)) {
            return R.error("站点或者大小不能为空");
        }
        //空托盘缓冲区 小:E8  大:E9
        String rStaNo ="E8";
        if(barcode.substring(0,1).equals("9")){
            rStaNo = "E9";
        }
        String type ="ZONE"; //区域
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1"));
        if (config != null) {
            type ="STACK"; //巷道
            if (Cools.isEmpty(config.getValue())) {
                rStaNo = rStaNo + "01";
                config.setValue("2");
            }else if (config.getValue().equals("1")) {
                rStaNo = rStaNo + "01";
                config.setValue("2");
            }else if (config.getValue().equals("2")) {
                rStaNo = rStaNo + "02";
                config.setValue("3");
            }else if (config.getValue().equals("3")) {
                rStaNo = rStaNo + "03";
                config.setValue("1");
            }
            configService.updateById(config);
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type","SITE");
        t1.put("code", sourceStaNo);
        t1.put("autoStart",0);
        t1.put("operation","COLLECT");
        t2.put("seq", 0);
        t2.put("type",type);
        t2.put("code", rStaNo);
        t2.put("autoStart",0);
        t2.put("operation","DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
        rcsParam.put("targetRoute", targetRoutes);
        rcsParam.put("initPriority", 100);
        String response ="";
        Boolean bool =false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
@@ -524,10 +420,10 @@
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -543,9 +439,117 @@
            );
        }
        if(bool){
        if (bool) {
            return R.ok();
        }else {
        } else {
            return R.error(msg);
        }
    }
    /**
     * 空托盘回库
     *
     * @param sourceStaNo 原站点
     * @param barcode     托盘大小 1:小托盘  2:大托盘  目标区或者巷道
     * @return
     */
    @RequestMapping("/FillEmptyPalletsStack")
    public synchronized R FillEmptyPalletsStack(@RequestParam(required = false) String sourceStaNo
            , @RequestParam(required = false) String barcode) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(barcode)) {
            return R.error("站点或者大小不能为空");
        }
        //空托盘缓冲区 小:E8  大:E9
        String rStaNo = "E8";
        if (barcode.substring(0, 1).equals("9")) {
            rStaNo = "E9";
        }
        String type = "ZONE"; //区域
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1"));
        if (config != null) {
            type = "STACK"; //巷道
            if (Cools.isEmpty(config.getValue())) {
                rStaNo = rStaNo + "01";
                config.setValue("2");
            } else if (config.getValue().equals("1")) {
                rStaNo = rStaNo + "01";
                config.setValue("2");
            } else if (config.getValue().equals("2")) {
                rStaNo = rStaNo + "02";
                config.setValue("3");
            } else if (config.getValue().equals("3")) {
                rStaNo = rStaNo + "03";
                config.setValue("1");
            }
            configService.updateById(config);
        }
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type", "SITE");
        t1.put("code", sourceStaNo);
        t1.put("autoStart", 0);
        t1.put("operation", "COLLECT");
        t2.put("seq", 0);
        t2.put("type", type);
        t2.put("code", rStaNo);
        t2.put("autoStart", 0);
        t2.put("operation", "DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
        rcsParam.put("targetRoute", targetRoutes);
        rcsParam.put("initPriority", 100);
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
            log.info("wms派发搬运任务给AGV搬运={}", rcsParam);
            response = new HttpHandler.Builder()
                    .setHeaders(map)
                    .setUri(url)
                    .setHttps(true)
                    .setPath(attrcs)
                    .setJson(JSON.toJSONString(rcsParam))
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("wms派发搬运任务给AGV搬运失败返回值={}", response);
        } finally {
            apiLogService.save("wms派发搬运任务给AGV搬运"
                    , url + attrcs
                    , null
                    , "127.0.0.1"
                    , JSON.toJSONString(rcsParam)
                    , response
                    , bool
            );
        }
        if (bool) {
            return R.ok();
        } else {
            return R.error(msg);
        }
@@ -554,39 +558,40 @@
    /**
     * 执行移库任务--点到点
     *
     * @param sourceStaNo
     * @param staNo
     * @return
     */
    @RequestMapping("/SITESITEAGVMove")
    public synchronized R SITESITEAGVMove(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String staNo
            ,@RequestParam(required = false) String taskNo){
            , @RequestParam(required = false) String staNo
            , @RequestParam(required = false) String taskNo) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
            return R.error("源站点和目标站点不能为空");
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        if(!Cools.isEmpty(taskNo)){
        if (!Cools.isEmpty(taskNo)) {
            rcsParam.put("robotTaskCode", taskNo);
        }
        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type","SITE");
        t1.put("type", "SITE");
        t1.put("code", sourceStaNo);
        t1.put("autoStart",0);
        t1.put("operation","COLLECT");
        t1.put("autoStart", 0);
        t1.put("operation", "COLLECT");
        t2.put("seq", 0);
        t2.put("type","SITE");
        t2.put("type", "SITE");
        t2.put("code", staNo);
        t2.put("autoStart",0);
        t2.put("operation","DELIVERY");
        t2.put("autoStart", 0);
        t2.put("operation", "DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
@@ -594,12 +599,12 @@
        rcsParam.put("initPriority", 100);
        String response ="";
        Boolean bool =false;
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
@@ -613,10 +618,10 @@
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -632,9 +637,9 @@
            );
        }
        if(bool){
        if (bool) {
            return R.ok();
        }else {
        } else {
            return R.error(msg);
        }
@@ -642,38 +647,39 @@
    /**
     * 执行移库任务--点到区域
     *
     * @param sourceStaNo
     * @param staNo
     * @return
     */
    @RequestMapping("/SITEZONEAGVMove")
    public synchronized R SITEZONEAGVMove(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String staNo
            ,@RequestParam(required = false) String taskNo){
            , @RequestParam(required = false) String staNo
            , @RequestParam(required = false) String taskNo) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
            return R.error("源站点和目标站点不能为空");
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        if(!Cools.isEmpty(taskNo)){
        if (!Cools.isEmpty(taskNo)) {
            rcsParam.put("robotTaskCode", taskNo);
        }
        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type","SITE");
        t1.put("type", "SITE");
        t1.put("code", sourceStaNo);
        t1.put("autoStart",0);
        t1.put("operation","COLLECT");
        t1.put("autoStart", 0);
        t1.put("operation", "COLLECT");
        t2.put("seq", 0);
        t2.put("type","ZONE");
        t2.put("type", "ZONE");
        t2.put("code", staNo);
        t2.put("autoStart",0);
        t2.put("operation","DELIVERY");
        t2.put("autoStart", 0);
        t2.put("operation", "DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
@@ -681,12 +687,12 @@
        rcsParam.put("initPriority", 100);
        String response ="";
        Boolean bool =false;
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
@@ -700,10 +706,10 @@
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -719,9 +725,9 @@
            );
        }
        if(bool){
        if (bool) {
            return R.ok();
        }else {
        } else {
            return R.error(msg);
        }
@@ -729,38 +735,39 @@
    /**
     * 执行移库任务--区域到点
     *
     * @param sourceStaNo
     * @param staNo
     * @return
     */
    @RequestMapping("/ZONESITEAGVMove")
    public synchronized R ZONESITEAGVMove(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String staNo
            ,@RequestParam(required = false) String taskNo){
            , @RequestParam(required = false) String staNo
            , @RequestParam(required = false) String taskNo) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
            return R.error("源站点和目标站点不能为空");
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("taskType", "PF-FMR-COMMON");
        if(!Cools.isEmpty(taskNo)){
        if (!Cools.isEmpty(taskNo)) {
            rcsParam.put("robotTaskCode", taskNo);
        }
        List<LinkedHashMap<String,Object>> targetRoutes=new ArrayList<>();
        LinkedHashMap<String,Object> t1=new LinkedHashMap<>();
        LinkedHashMap<String,Object> t2=new LinkedHashMap<>();
        List<LinkedHashMap<String, Object>> targetRoutes = new ArrayList<>();
        LinkedHashMap<String, Object> t1 = new LinkedHashMap<>();
        LinkedHashMap<String, Object> t2 = new LinkedHashMap<>();
        t1.put("seq", 0);
        t1.put("type","ZONE");
        t1.put("type", "ZONE");
        t1.put("code", sourceStaNo);
        t1.put("autoStart",0);
        t1.put("operation","COLLECT");
        t1.put("autoStart", 0);
        t1.put("operation", "COLLECT");
        t2.put("seq", 0);
        t2.put("type","SITE");
        t2.put("type", "SITE");
        t2.put("code", staNo);
        t2.put("autoStart",0);
        t2.put("operation","DELIVERY");
        t2.put("autoStart", 0);
        t2.put("operation", "DELIVERY");
        targetRoutes.add(t1);
        targetRoutes.add(t2);
@@ -768,12 +775,12 @@
        rcsParam.put("initPriority", 100);
        String response ="";
        Boolean bool =false;
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
@@ -787,10 +794,10 @@
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
@@ -806,9 +813,9 @@
            );
        }
        if(bool){
        if (bool) {
            return R.ok();
        }else {
        } else {
            return R.error(msg);
        }
@@ -816,54 +823,55 @@
    /**
     * AGV站点绑定和解绑
     * @param sourceStaNo   //站点
     * @param barcodeType   //托盘码
     * @param invoke        //BIND为绑定    UNBIND为解绑
     *
     * @param sourceStaNo //站点
     * @param barcodeType //托盘码
     * @param invoke      //BIND为绑定    UNBIND为解绑
     * @return
     */
    @RequestMapping("/siteBindAndUnbind")
    public synchronized R siteBindAndUnbind(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String barcodeType
            ,@RequestParam(required = false) String invoke){
            , @RequestParam(required = false) String barcodeType
            , @RequestParam(required = false) String invoke) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(barcodeType)) {
            return R.error("站点和托盘类型不能为空");
        }
        if(barcodeType.substring(0,1).equals("8")){
            barcodeType="11";
        }else if(barcodeType.substring(0,1).equals("9")){
            barcodeType="21";
        if (barcodeType.substring(0, 1).equals("8")) {
            barcodeType = "11";
        } else if (barcodeType.substring(0, 1).equals("9")) {
            barcodeType = "21";
        }
        LinkedHashMap<String,Object> rcsParam=new LinkedHashMap<>();
        LinkedHashMap<String, Object> rcsParam = new LinkedHashMap<>();
        rcsParam.put("slotCategory", "SITE");
        rcsParam.put("slotCode", sourceStaNo);
        rcsParam.put("carrierCategory", "PALLET");
        rcsParam.put("carrierType", barcodeType);//11为小托盘   21为大托盘
if(sourceStaNo.equals("101")){
    rcsParam.put("carrierDir","0");
}else  if(sourceStaNo.equals("R01")||sourceStaNo.equals("R03")){
    rcsParam.put("carrierDir","-90");
        if (sourceStaNo.equals("101")) {
            rcsParam.put("carrierDir", "0");
        } else if (sourceStaNo.equals("R01") || sourceStaNo.equals("R03")) {
            rcsParam.put("carrierDir", "-90");
    }else  if(sourceStaNo.equals("R02")){
    rcsParam.put("carrierDir","90");
}else {
    rcsParam.put("carrierDir","180");
}
        } else if (sourceStaNo.equals("R02")) {
            rcsParam.put("carrierDir", "90");
        } else {
            rcsParam.put("carrierDir", "180");
        }
        rcsParam.put("temporary", "");
        rcsParam.put("invoke", invoke);
        String response ="";
        Boolean bool =false;
        String response = "";
        Boolean bool = false;
        String msg = "";
        HashMap<String,Object> map = new HashMap<>();
        HashMap<String, Object> map = new HashMap<>();
        Date date = new Date();
        String time = date.getTime()+"";
        String time = date.getTime() + "";
        map.put("X-LR-REQUEST-ID", time);
        try {
            log.info("WMS完成"+invoke+"agv站点={},上报参数为={}",sourceStaNo,rcsParam);
            log.info("WMS完成" + invoke + "agv站点={},上报参数为={}", sourceStaNo, rcsParam);
            response = new HttpHandler.Builder()
                    .setHeaders(map)
                    .setUri(url)
@@ -873,16 +881,16 @@
                    .build()
                    .doPostCloseSSL();
            JSONObject jsonObject = JSON.parseObject(response);
            if(jsonObject.getString("code").equals("SUCCESS")){
            if (jsonObject.getString("code").equals("SUCCESS")) {
                bool = true;
            }else{
                msg=jsonObject.getString("message");
            } else {
                msg = jsonObject.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("WMS完成"+invoke+"agv站点失败={}", response);
            log.error("WMS完成" + invoke + "agv站点失败={}", response);
        } finally {
            apiLogService.save("WMS完成"+invoke+"agv站点"+sourceStaNo
            apiLogService.save("WMS完成" + invoke + "agv站点" + sourceStaNo
                    , url + siteBindAndUnbing
                    , null
                    , "127.0.0.1"
@@ -892,9 +900,9 @@
            );
        }
        if(bool){
        if (bool) {
            return R.ok();
        }else {
        } else {
            return R.error(msg);
        }
@@ -902,36 +910,37 @@
    /**
     * 空板回库或者拣料回库
     *
     * @param sourceStaNo
     * @param staNo
     * @return
     */
    @RequestMapping("/AGVStartReturn")
    public synchronized R AGVStartReturn(@RequestParam(required = false) String sourceStaNo
            ,@RequestParam(required = false) String staNo
            ,@RequestParam(required = false) String taskNo){
            , @RequestParam(required = false) String staNo
            , @RequestParam(required = false) String taskNo) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
            return R.error("源站点和托盘码不能为空");
        }
        R r=R.ok();
        R r = R.ok();
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", staNo).in("io_type",103,105,107));
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", staNo).in("io_type", 103, 105, 107));
        if (wrkMast == null) {
            r=FillEmptyPalletsStack(sourceStaNo,staNo);
        }else {
            if (wrkMast.getWrkSts()>30){
            r = FillEmptyPalletsStack(sourceStaNo, staNo);
        } else {
            if (wrkMast.getWrkSts() > 30) {
                return R.error("该托盘={},没有下架,请下架后再回库!!!");
            }
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).in("io_type",101,103,105,107).lt("wrk_sts", 33));
            if (!Cools.isEmpty(wrkMasts)){
                return R.error(wrkMast.getCrnNo()+"堆垛机,有出库任务,禁止回库!!!");
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).in("io_type", 101, 103, 105, 107).lt("wrk_sts", 33));
            if (!Cools.isEmpty(wrkMasts)) {
                return R.error(wrkMast.getCrnNo() + "堆垛机,有出库任务,禁止回库!!!");
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String format = sdf.format(new Date());
            String s = format+"-" + wrkMast.getWrkNo() + "-" + wrkMast.getBarcode();
            r=SITESITEAGVMove(sourceStaNo,wrkMast.getStaNo$(),s);
            String s = format + "-" + wrkMast.getWrkNo() + "-" + wrkMast.getBarcode();
            r = SITESITEAGVMove(sourceStaNo, wrkMast.getStaNo$(), s);
            if (r.get("code").equals(200)) {
                wrkMast.setPdcType(s);
                /**
@@ -951,16 +960,38 @@
    /**
     * 获取仓库
     *
     * @return
     */
    @RequestMapping("/ck")
    @PostMapping
    public R AGVStartReturn(){
        List<String> list=new ArrayList<>();
    public R AGVStartReturn() {
        List<String> list = new ArrayList<>();
        list.add("半成品仓库");
        list.add("成品仓库");
        return R.ok(list);
    }
    @RequestMapping(value = "/mat/tiaoma/auth")
    @ManagerAuth
    public R find(@RequestParam("barcode") String barcode) {
        ExdvYanbu barcode1 = exdMaterialMapper.getBacode(barcode);
        if (barcode1 == null) {
            return R.error("批次对应的验布数据不存在");
        }
        return R.ok(barcode1);
    }
    @RequestMapping(value = "/getOrderNo/auth")
    @ManagerAuth
    public R findOrderNo(@RequestParam("orderNo") String orderNo) {
        Page<Order> orderPage = orderService.selectPage(new Page<>(0, 10), new EntityWrapper<Order>().like("order_no", "%" + orderNo + "%"));
        List<String> objects = new ArrayList<>();
        for (Order record : orderPage.getRecords()) {
            objects.add(record.getOrderNo());
        }
        return R.ok(objects);
    }
}
src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -27,6 +27,9 @@
    private String ck;
    private boolean type = false;
    //agv状态
    /**
     * 0:无需调用AGV
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -35,6 +35,10 @@
    int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty);
    int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")String color);
    int increaseWorkQtytest(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("anfme")Double anfme);
}
src/main/java/com/zy/asrs/service/MobileService.java
@@ -15,7 +15,7 @@
    /**
     * 组托
     */
    void comb(CombParam param, Long userId);
    void comb(CombParam param, Long userId, String fxId);
    /**
     * 上架
src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -38,5 +38,9 @@
     */
    boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
    boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color);
    boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme);
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -78,7 +78,7 @@
    @Override
    @Transactional
    public void comb(CombParam param, Long userId) {
    public void comb(CombParam param,Long userId,String fxId) {
        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
            throw new CoolException(BaseRes.PARAM);
        }
@@ -161,6 +161,7 @@
                waitPakin.setModiUser(userId);
                waitPakin.setModiTime(now);
                waitPakin.setBrand(param.getCk());//仓库
                waitPakin.setInspect(param.isType()?1:0);
                if(i==1){
//                0:不需要补空托盘
//                1:小托盘
@@ -199,7 +200,7 @@
                    throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
                }
                // 修改订单作业数量
                if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
                if (!orderDetlService.increaseWorkQty2(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(),fxId)) {
                    throw new CoolException("修改单据作业数量失败");
                }
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -2,11 +2,11 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.service.OrderDetlService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.service.OrderDetlService;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -80,6 +80,7 @@
    /**
     * 入出库任务生成时,更新单据表中作业数量
     *
     * @param orderId
     * @param matnr
     * @param batch
@@ -93,6 +94,21 @@
    /**
     * 入出库任务生成时,更新单据表中作业数量
     *
     * @param orderId
     * @param matnr
     * @param batch
     * @param workQty
     * @return
     */
    @Override
    public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color) {
        return this.baseMapper.increaseWorkQty2(orderId, matnr, batch, workQty, color) > 0;
    }
    /**
     * 入出库任务生成时,更新单据表中作业数量
     *
     * @param orderNo
     * @param matnr
     * @param batch
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,8 +1,5 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.DocType;
@@ -14,13 +11,12 @@
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.constant.MesConstant;
import com.zy.common.model.MesPakinParam;
import com.zy.common.model.MesPakoutParam;
import com.zy.common.utils.HttpHandler;
import com.zy.third.entity.ExdInstockTarget;
import com.zy.third.entity.ExdOutstockTarget;
import com.zy.third.service.ExdInstockTargetService;
import com.zy.third.service.ExdOutstockTargetService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -33,8 +29,7 @@
@Service
public class OrderSyncHandler extends AbstractHandler<String> {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private OrderService orderService;
    @Autowired
@@ -43,6 +38,13 @@
    private ApiLogService apiLogService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private ExdInstockTargetService exdInstockTargetService;
    @Autowired
    private ExdOutstockTargetService exdOutstockTargetService;
    @Transactional
    public ReturnT<String> start(Order order) {
@@ -53,105 +55,29 @@
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
        // 入库完成上报
        if (docType.getPakin() == 1) {
            MesPakinParam pakinParam = new MesPakinParam();
            pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime()));
            pakinParam.setLgortFrom("5008");
            pakinParam.setLgortTo("5006");
            ExdInstockTarget exdInstockTarge = null;
            for (OrderDetl orderDetl : orderDetls) {
                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
                pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
            }
            String response = "";
            boolean success = false;
            try {
                response = new HttpHandler.Builder()
                        .setUri(MesConstant.URL)
                        .setPath(MesConstant.PAKIN_URL)
                        .setJson(JSON.toJSONString(pakinParam))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code").equals(200)) {
                    success = true;
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
                        throw new CoolException("服务器内部错误,请联系管理员");
                    }
                } else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response);
                    throw new CoolException("上报mes系统失败");
                exdInstockTarge = new ExdInstockTarget();
                exdInstockTarge.setFinterid(orderDetl.getDeadWarn());
                exdInstockTarge.setFbillno(orderDetl.getOrderNo());
                exdInstockTarge.setFtrantype(order.getDocType().intValue());
                exdInstockTarge.setFdate(DateUtils.convert(order.getOrderTime()));
                exdInstockTarge.setFrob(orderDetl.getInspect());
                exdInstockTarge.setFuserid(Integer.getInteger(orderDetl.getColor()));
                exdInstockTargetService.insert(exdInstockTarge);
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            } catch (Exception e) {
                log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "成品库入库上报",
                            MesConstant.URL + MesConstant.PAKIN_URL,
                            null,
                            "127.0.0.1",
                            JSON.toJSONString(pakinParam),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        }
        // 出库完成上报
        if (docType.getPakout() == 1) {
            MesPakoutParam pakoutParam = new MesPakoutParam();
            pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("手动出库单"));
            pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime()));
            pakoutParam.setLgortFrom("5006");
            pakoutParam.setLgortTo("1111");
            if (!pakoutParam.isTag()) {
                pakoutParam.setKunnr("C1000");
            }
            pakoutParam.setOrderNo(order.getOrderNo());
        } else if (docType.getPakout() == 1) {
            // 出库完成上报
            ExdOutstockTarget exdOutstockTarget = null;
            for (OrderDetl orderDetl : orderDetls) {
                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
                pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
            }
            String response = "";
            boolean success = false;
            try {
                response = new HttpHandler.Builder()
                        .setUri(MesConstant.URL)
                        .setPath(MesConstant.PAKOUT_URL)
                        .setJson(JSON.toJSONString(pakoutParam))
                        .build()
                        .doPost();
                JSONObject jsonObject = JSON.parseObject(response);
                if (jsonObject.getInteger("code").equals(200)) {
                    success = true;
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), 6L, null)) {
                        throw new CoolException("服务器内部错误,请联系管理员");
                    }
                } else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKOUT_URL, JSON.toJSONString(pakoutParam), response);
                    throw new CoolException("上报mes系统失败");
                exdOutstockTarget = new ExdOutstockTarget();
                exdOutstockTargetService.insert(exdOutstockTarget);
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            } catch (Exception e) {
                log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "成品库出库上报",
                            MesConstant.URL + MesConstant.PAKOUT_URL,
                            null,
                            "127.0.0.1",
                            JSON.toJSONString(pakoutParam),
                            response,
                            success
                    );
                } catch (Exception e) { log.error("", e); }
            }
        }
        return SUCCESS;
src/main/java/com/zy/common/model/DetlDto.java
@@ -4,6 +4,7 @@
import com.zy.asrs.entity.OrderDetl;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Set;
@@ -21,6 +22,11 @@
    private Double anfme;
    private Integer frob;
    private Integer FInterID;
    public DetlDto() {
    }
src/main/java/com/zy/third/entity/ExdCustomer.java
@@ -17,6 +17,7 @@
    /**
     * 
     */
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdDepartment.java
@@ -17,6 +17,7 @@
    /**
     * 
     */
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdEmp.java
@@ -17,6 +17,7 @@
    /**
     * 
     */
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdInstockSource.java
@@ -18,6 +18,12 @@
    /**
     * 
     */
    @TableId
    private Long id;
    /**
     *
     */
    private Integer finterid;
    /**
src/main/java/com/zy/third/entity/ExdInstockTarget.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
@@ -14,6 +15,12 @@
@TableName(value ="Exd_Instock_Target")
@Data
public class ExdInstockTarget implements Serializable {
    /**
     *
     */
    @TableId
    private Long id;
    /**
     * 
     */
@@ -157,17 +164,17 @@
    /**
     * 
     */
    private Double gross;
    private BigDecimal gross;
    /**
     * 
     */
    private Double width;
    private BigDecimal width;
    /**
     * 
     */
    private Double defects;
    private BigDecimal defects;
    /**
     * 
src/main/java/com/zy/third/entity/ExdMaterial.java
@@ -5,8 +5,6 @@
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
/**
@@ -19,7 +17,7 @@
    /**
     * 
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdOutstockSource.java
@@ -18,6 +18,12 @@
    /**
     * 
     */
    @TableId
    private Long id;
    /**
     *
     */
    private Integer finterid;
    /**
src/main/java/com/zy/third/entity/ExdOutstockTarget.java
@@ -18,6 +18,12 @@
    /**
     * 
     */
    @TableId
    private Long id;
    /**
     *
     */
    private Integer finterid;
    /**
src/main/java/com/zy/third/entity/ExdSupplier.java
@@ -17,6 +17,7 @@
    /**
     * 
     */
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdUser.java
@@ -5,10 +5,7 @@
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import org.springframework.data.annotation.Id;
/**
 * 
@@ -20,7 +17,7 @@
    /**
     * 
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableId
    private String id;
    /**
src/main/java/com/zy/third/entity/ExdvYanbu.java
New file
@@ -0,0 +1,201 @@
package com.zy.third.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;
/**
 *
 * @TableName ExdV_Yanbu
 */
@TableName(value ="ExdV_Yanbu")
@Data
public class ExdvYanbu implements Serializable {
    /**
     *
     */
    private String barcode;
    /**
     *
     */
    private BigDecimal qty;
    /**
     *
     */
    private String itemnumber;
    /**
     *
     */
    private String itemname;
    /**
     *
     */
    private String itemmodel;
    /**
     *
     */
    private String batchno;
    /**
     *
     */
    private String icmono;
    /**
     *
     */
    private String pono;
    /**
     *
     */
    private BigDecimal gross;
    /**
     *
     */
    private BigDecimal width;
    /**
     *
     */
    private Integer defects;
    /**
     *
     */
    private String cuspartno;
    /**
     *
     */
    private String supplierpartno;
    /**
     *
     */
    private String supplierno;
    /**
     *
     */
    private Date packdate;
    /**
     *
     */
    private String revision;
    /**
     *
     */
    private Date createdate;
    /**
     *
     */
    private Date readdate;
    /**
     *
     */
    private Integer status;
    /**
     *
     */
    private String parts;
    /**
     *
     */
    private String oemproject;
    /**
     *
     */
    private String qcempid;
    /**
     *
     */
    private String qcempname;
    /**
     *
     */
    private Date modifydate;
    /**
     *
     */
    private String backcode;
    /**
     *
     */
    private String qualitylevel;
    /**
     *
     */
    private String reserve01;
    /**
     *
     */
    private String reserve02;
    /**
     *
     */
    private String reserve03;
    /**
     *
     */
    private BigDecimal reserve04;
    /**
     *
     */
    private BigDecimal reserve05;
    /**
     *
     */
    private String qcempid2;
    /**
     *
     */
    private String qcempname2;
    /**
     *
     */
    private Date packendtime;
    /**
     *
     */
    private String qcempid3;
    /**
     *
     */
    private String qcempname3;
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
src/main/java/com/zy/third/mapper/ExdCustomerMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Customer】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdCustomer
*/
public interface ExdCustomerMapper extends BaseMapper<ExdCustomer> {
src/main/java/com/zy/third/mapper/ExdDepartmentMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Department】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdDepartment
*/
public interface ExdDepartmentMapper extends BaseMapper<ExdDepartment> {
src/main/java/com/zy/third/mapper/ExdEmpMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Emp】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdEmp
*/
public interface ExdEmpMapper extends BaseMapper<ExdEmp> {
src/main/java/com/zy/third/mapper/ExdInstockSourceMapper.java
@@ -2,7 +2,6 @@
import com.zy.third.entity.ExdInstockSource;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.third.entity.ExdUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -10,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Source】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdInstockSource
*/
public interface ExdInstockSourceMapper extends BaseMapper<ExdInstockSource> {
@@ -18,7 +17,5 @@
    List<String> listOrderNo();
    List<ExdInstockSource> listAll(@Param("fbillno") String fbillno);
    List<ExdInstockSource> listAll(@Param("orderNo") String orderNo);
}
src/main/java/com/zy/third/mapper/ExdInstockTargetMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Target】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdInstockTarget
*/
public interface ExdInstockTargetMapper extends BaseMapper<ExdInstockTarget> {
src/main/java/com/zy/third/mapper/ExdMaterialMapper.java
@@ -2,16 +2,21 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.third.entity.ExdMaterial;
import com.zy.third.entity.ExdvYanbu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * @author zc857
 * @description 针对表【Exd_Material】的数据库操作Mapper
 * @createDate 2025-09-23 08:36:03
 * @createDate 2025-09-24 08:20:14
 * @Entity com.zy.third.entity.ExdMaterial
 */
public interface ExdMaterialMapper extends BaseMapper<ExdMaterial> {
    ExdvYanbu getBacode(@Param("barcode") String barcode);
    List<ExdMaterial> listAll();
}
src/main/java/com/zy/third/mapper/ExdOutstockSourceMapper.java
@@ -2,7 +2,6 @@
import com.zy.third.entity.ExdOutstockSource;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.third.entity.ExdUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -10,12 +9,13 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Source】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdOutstockSource
*/
public interface ExdOutstockSourceMapper extends BaseMapper<ExdOutstockSource> {
    List<String> listOrderNo();
    List<ExdOutstockSource> listAll(@Param("fbillno") String fbillno);
    List<ExdOutstockSource> listAll(@Param("orderNo") String orderNo);
}
src/main/java/com/zy/third/mapper/ExdOutstockTargetMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Target】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdOutstockTarget
*/
public interface ExdOutstockTargetMapper extends BaseMapper<ExdOutstockTarget> {
src/main/java/com/zy/third/mapper/ExdSupplierMapper.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Supplier】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdSupplier
*/
public interface ExdSupplierMapper extends BaseMapper<ExdSupplier> {
src/main/java/com/zy/third/mapper/ExdUserMapper.java
@@ -8,10 +8,11 @@
/**
* @author zc857
* @description 针对表【Exd_User】的数据库操作Mapper
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
* @Entity com.zy.third.entity.ExdUser
*/
public interface ExdUserMapper extends BaseMapper<ExdUser> {
  List<ExdUser> listAll();
    List<ExdUser> listAll();
}
src/main/java/com/zy/third/service/ExdCustomerService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Customer】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdCustomerService extends IService<ExdCustomer> {
src/main/java/com/zy/third/service/ExdDepartmentService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Department】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdDepartmentService extends IService<ExdDepartment> {
src/main/java/com/zy/third/service/ExdEmpService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Emp】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdEmpService extends IService<ExdEmp> {
src/main/java/com/zy/third/service/ExdInstockSourceService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Source】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdInstockSourceService extends IService<ExdInstockSource> {
src/main/java/com/zy/third/service/ExdInstockTargetService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Target】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdInstockTargetService extends IService<ExdInstockTarget> {
src/main/java/com/zy/third/service/ExdMaterialService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Material】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdMaterialService extends IService<ExdMaterial> {
src/main/java/com/zy/third/service/ExdOutstockSourceService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Source】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdOutstockSourceService extends IService<ExdOutstockSource> {
src/main/java/com/zy/third/service/ExdOutstockTargetService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Target】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdOutstockTargetService extends IService<ExdOutstockTarget> {
src/main/java/com/zy/third/service/ExdSupplierService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_Supplier】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdSupplierService extends IService<ExdSupplier> {
src/main/java/com/zy/third/service/ExdUserService.java
@@ -6,7 +6,7 @@
/**
* @author zc857
* @description 针对表【Exd_User】的数据库操作Service
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
public interface ExdUserService extends IService<ExdUser> {
src/main/java/com/zy/third/service/impl/ExdCustomerServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Customer】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdCustomerServiceImpl extends ServiceImpl<ExdCustomerMapper, ExdCustomer>
src/main/java/com/zy/third/service/impl/ExdDepartmentServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Department】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdDepartmentServiceImpl extends ServiceImpl<ExdDepartmentMapper, ExdDepartment>
src/main/java/com/zy/third/service/impl/ExdEmpServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Emp】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdEmpServiceImpl extends ServiceImpl<ExdEmpMapper, ExdEmp>
src/main/java/com/zy/third/service/impl/ExdInstockSourceServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Source】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdInstockSourceServiceImpl extends ServiceImpl<ExdInstockSourceMapper, ExdInstockSource>
src/main/java/com/zy/third/service/impl/ExdInstockTargetServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Instock_Target】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdInstockTargetServiceImpl extends ServiceImpl<ExdInstockTargetMapper, ExdInstockTarget>
src/main/java/com/zy/third/service/impl/ExdMaterialServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Material】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdMaterialServiceImpl extends ServiceImpl<ExdMaterialMapper, ExdMaterial>
src/main/java/com/zy/third/service/impl/ExdOutstockSourceServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Source】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdOutstockSourceServiceImpl extends ServiceImpl<ExdOutstockSourceMapper, ExdOutstockSource>
src/main/java/com/zy/third/service/impl/ExdOutstockTargetServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Outstock_Target】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdOutstockTargetServiceImpl extends ServiceImpl<ExdOutstockTargetMapper, ExdOutstockTarget>
src/main/java/com/zy/third/service/impl/ExdSupplierServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_Supplier】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdSupplierServiceImpl extends ServiceImpl<ExdSupplierMapper, ExdSupplier>
src/main/java/com/zy/third/service/impl/ExdUserServiceImpl.java
@@ -9,7 +9,7 @@
/**
* @author zc857
* @description 针对表【Exd_User】的数据库操作Service实现
* @createDate 2025-09-23 08:36:03
* @createDate 2025-09-24 08:20:14
*/
@Service
public class ExdUserServiceImpl extends ServiceImpl<ExdUserMapper, ExdUser>
src/main/java/com/zy/third/task/OrderScheduler.java
@@ -68,7 +68,7 @@
    @Scheduled(cron = "0/30 * * * * ? ")
    public void readOutOrder() {
        log.info("读取出库单据");
        List<String> orderNos = exdInstockSourceMapper.listOrderNo();
        List<String> orderNos = exdOutstockSourceMapper.listOrderNo();
        for (String orderNo : orderNos) {
            List<ExdOutstockSource> exdOutstockSources = exdOutstockSourceMapper.listAll(orderNo);
            try {
src/main/java/com/zy/third/task/handler/OrderHandler.java
@@ -66,7 +66,7 @@
        order = new Order(
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                fbillno,    // 订单编号
                DateUtils.convert(now),    // 单据日期
                DateUtils.convert(exdInstockSource.get(0).getFdate()),    // 单据日期
                docType.getDocId(),    // 单据类型
                null,    // 项目编号
                null,    //
@@ -106,6 +106,8 @@
        List<DetlDto> list = new ArrayList<>();
        for (ExdInstockSource detail : exdInstockSource) {
            DetlDto dto = new DetlDto(detail.getFitemid() + "", detail.getFbatchno(), detail.getFqty());
            dto.setFrob(detail.getFrob());
            dto.setFInterID(detail.getFinterid());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                assert detlDto != null;
@@ -131,6 +133,8 @@
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
            orderDetl.setDeadWarn(detlDto.getFInterID());
            orderDetl.setInspect(detlDto.getFrob());
            if (!orderDetlService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
src/main/resources/com/zy/third/mapper/ExdvYanbuMapper.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.third.mapper.ExdvYanbuMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdvYanbu">
            <result property="barcode" column="Barcode" />
    </resultMap>
    <sql id="Base_Column_List">
        Barcode
    </sql>
</mapper>
src/main/resources/mapper/asrs/OrderDetlMapper.xml
@@ -200,4 +200,23 @@
        </choose>
    </update>
    <update id="increaseWorkQty2">
        update man_order_detl
        set work_qty = work_qty + #{workQty}
        where 1=1
        and order_id = #{orderId}
        and matnr = #{matnr}
        <if test="color!=null and color!='' ">
            and color = #{color}
        </if>
        <choose>
            <when test="batch != null and batch != ''">
                and batch = #{batch}
            </when>
            <otherwise>
                and (batch IS NULL OR batch = '')
            </otherwise>
        </choose>
    </update>
</mapper>
src/main/resources/mapper/third/ExdCustomerMapper.xml
@@ -5,7 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdCustomerMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdCustomer">
            <result property="id" column="ID" />
            <id property="id" column="ID" />
            <result property="fnumber" column="Fnumber" />
            <result property="fname" column="Fname" />
            <result property="writetime" column="WriteTime" />
src/main/resources/mapper/third/ExdDepartmentMapper.xml
@@ -5,7 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdDepartmentMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdDepartment">
            <result property="id" column="ID" />
            <id property="id" column="ID" />
            <result property="fnumber" column="Fnumber" />
            <result property="fname" column="Fname" />
            <result property="writetime" column="WriteTime" />
src/main/resources/mapper/third/ExdEmpMapper.xml
@@ -5,7 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdEmpMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdEmp">
            <result property="id" column="ID" />
            <id property="id" column="ID" />
            <result property="fnumber" column="Fnumber" />
            <result property="fname" column="Fname" />
            <result property="writetime" column="WriteTime" />
src/main/resources/mapper/third/ExdInstockSourceMapper.xml
@@ -5,6 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdInstockSourceMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdInstockSource">
            <id property="id" column="ID" />
            <result property="finterid" column="FInterID" />
            <result property="fbillno" column="FBillNo" />
            <result property="ftrantype" column="FTranType" />
@@ -39,26 +40,25 @@
    </resultMap>
    <sql id="Base_Column_List">
        FInterID,FBillNo,FTranType,FDate,FROB,FDeptID,
        FSupplyID,FBillerID,FEntryID,FItemID,FQty,
        Fprice,FBatchNo,FUnitID,FSourceBillNo,FSourceEntryID,
        FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,FOrderBillNo,
        FOrderEntryID,FOrderInterID,FPlanMode,WriteTime,Writor,
        Status,ReadTime,Reador,WritorMsg,ReadorMsg
        ID,FInterID,FBillNo,FTranType,FDate,FROB,
        FDeptID,FSupplyID,FBillerID,FEntryID,FItemID,
        FQty,Fprice,FBatchNo,FUnitID,FSourceBillNo,
        FSourceEntryID,FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,
        FOrderBillNo,FOrderEntryID,FOrderInterID,FPlanMode,WriteTime,
        Writor,Status,ReadTime,Reador,WritorMsg,
        ReadorMsg
    </sql>
    <select id="listOrderNo" resultMap="BaseResultMap">
        select top 100 distinct FBillNo
        <include refid="Base_Column_List" />
    <select id="listOrderNo" resultType="java.lang.String">
        select distinct fbillno
        from Exd_Instock_Source
        where status = 0
    </select>
    <select id="listAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from Exd_Instock_Source
        where FBillNo = #{fbillno}
    <select id="listAll" resultType="com.zy.third.entity.ExdInstockSource">
            select  * from Exd_Instock_Source where fbillno = #{orderNo}
    </select>
</mapper>
src/main/resources/mapper/third/ExdInstockTargetMapper.xml
@@ -5,6 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdInstockTargetMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdInstockTarget">
            <id property="id" column="ID" />
            <result property="finterid" column="FInterID" />
            <result property="fbillno" column="FBillNo" />
            <result property="ftrantype" column="FTranType" />
@@ -47,13 +48,13 @@
    </resultMap>
    <sql id="Base_Column_List">
        FInterID,FBillNo,FTranType,FDate,FROB,FUserID,
        FDeptID,FSupplyID,FBillerID,FFManagerID,FSManagerID,
        FEntryID,FItemID,FQty,Fprice,FBatchNo,
        FUnitID,FSourceBillNo,FSourceEntryID,FSourceInterId,FSourceTranType,
        FDCSPID,FDCStockID,FOrderBillNo,FOrderEntryID,FOrderInterID,
        FPlanMode,Barcode,Gross,Width,Defects,
        BackCode,WriteTime,Writor,Status,ReadTime,
        Reador,WritorMsg,ReadorMsg
        ID,FInterID,FBillNo,FTranType,FDate,FROB,
        FUserID,FDeptID,FSupplyID,FBillerID,FFManagerID,
        FSManagerID,FEntryID,FItemID,FQty,Fprice,
        FBatchNo,FUnitID,FSourceBillNo,FSourceEntryID,FSourceInterId,
        FSourceTranType,FDCSPID,FDCStockID,FOrderBillNo,FOrderEntryID,
        FOrderInterID,FPlanMode,Barcode,Gross,Width,
        Defects,BackCode,WriteTime,Writor,Status,
        ReadTime,Reador,WritorMsg,ReadorMsg
    </sql>
</mapper>
src/main/resources/mapper/third/ExdMaterialMapper.xml
@@ -5,30 +5,34 @@
<mapper namespace="com.zy.third.mapper.ExdMaterialMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdMaterial">
            <result property="id" column="ID" />
            <result property="fnumber" column="Fnumber" />
            <result property="fname" column="Fname" />
            <result property="fmodel" column="Fmodel" />
            <result property="writetime" column="WriteTime" />
            <result property="writor" column="Writor" />
            <result property="status" column="Status" />
            <result property="readtime" column="ReadTime" />
            <result property="reador" column="Reador" />
            <result property="writormsg" column="WritorMsg" />
            <result property="readormsg" column="ReadorMsg" />
        <id property="id" column="ID"/>
        <result property="fnumber" column="Fnumber"/>
        <result property="fname" column="Fname"/>
        <result property="fmodel" column="Fmodel"/>
        <result property="writetime" column="WriteTime"/>
        <result property="writor" column="Writor"/>
        <result property="status" column="Status"/>
        <result property="readtime" column="ReadTime"/>
        <result property="reador" column="Reador"/>
        <result property="writormsg" column="WritorMsg"/>
        <result property="readormsg" column="ReadorMsg"/>
    </resultMap>
    <sql id="Base_Column_List">
        ID,Fnumber,Fname,Fmodel,WriteTime,Writor,
        ID
        ,Fnumber,Fname,Fmodel,WriteTime,Writor,
        Status,ReadTime,Reador,WritorMsg,ReadorMsg
    </sql>
    <select id="listAll" resultMap="BaseResultMap">
        select top 200
        <include refid="Base_Column_List" />
    <select id="listAll" resultType="com.zy.third.entity.ExdMaterial">
        select top 100 *
        from Exd_Material
        where status = 0
    </select>
    <select id="getBacode" resultType="com.zy.third.entity.ExdvYanbu" parameterType="string">
        SELECT top 1 *
        FROM [Textile].[trade].[TianfuQcResult]
        where Barcode = #{barcode}
    </select>
</mapper>
src/main/resources/mapper/third/ExdOutstockSourceMapper.xml
@@ -5,6 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdOutstockSourceMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdOutstockSource">
            <id property="id" column="ID" />
            <result property="finterid" column="FInterID" />
            <result property="fbillno" column="FBillNo" />
            <result property="ftrantype" column="FTranType" />
@@ -41,27 +42,26 @@
    </resultMap>
    <sql id="Base_Column_List">
        FInterID,FBillNo,FTranType,FDate,FROB,FDeptID,
        FSupplyID,FBillerID,FEntryID,FItemID,FQty,
        Fprice,FBatchNo,FUnitID,FSourceBillNo,FSourceEntryID,
        FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,FSCSPID,
        FSCStockID,FOrderBillNo,FOrderEntryID,FOrderInterID,FPlanMode,
        WriteTime,Writor,Status,ReadTime,Reador,
        WritorMsg,ReadorMsg
        ID,FInterID,FBillNo,FTranType,FDate,FROB,
        FDeptID,FSupplyID,FBillerID,FEntryID,FItemID,
        FQty,Fprice,FBatchNo,FUnitID,FSourceBillNo,
        FSourceEntryID,FSourceInterId,FSourceTranType,FDCSPID,FDCStockID,
        FSCSPID,FSCStockID,FOrderBillNo,FOrderEntryID,FOrderInterID,
        FPlanMode,WriteTime,Writor,Status,ReadTime,
        Reador,WritorMsg,ReadorMsg
    </sql>
    <select id="listOrderNo" resultMap="BaseResultMap">
        select top 100 distinct FBillNo
        <include refid="Base_Column_List" />
        from Exd_Instock_Source
        where status = 0
    <select id="listOrderNo" resultType="java.lang.String">
            select distinct fbillno
            from Exd_Outstock_Source
            where status = 0
    </select>
    <select id="listAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from Exd_Outstock_Source
        where FBillNo = #{fbillno}
    <select id="listAll" resultType="com.zy.third.entity.ExdOutstockSource">
            select * from Exd_Outstock_Source where fbillno = #{orderNo}
    </select>
</mapper>
src/main/resources/mapper/third/ExdOutstockTargetMapper.xml
@@ -5,6 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdOutstockTargetMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdOutstockTarget">
            <id property="id" column="ID" />
            <result property="finterid" column="FInterID" />
            <result property="fbillno" column="FBillNo" />
            <result property="ftrantype" column="FTranType" />
@@ -48,13 +49,16 @@
    </resultMap>
    <sql id="Base_Column_List">
        FInterID,FBillNo,FTranType,FDate,FROB,FUserID,
        FDeptID,FSupplyID,FBillerID,FEntryID,FItemID,
        FQtyMust,FQty,Fprice,FBatchNo,FUnitID,
        FSourceBillNo,FSourceEntryID,FSourceInterId,FSourceTranType,FDCSPID,
        FDCStockID,FSCSPID,FSCStockID,FOrderBillNo,FOrderEntryID,
        FOrderInterID,FPlanMode,Barcode,Gross,Width,
        Defects,BackCode,WriteTime,Writor,Status,
        ReadTime,Reador,WritorMsg,ReadorMsg
        ID,FInterID,FBillNo,FTranType,FDate,FROB,
        FUserID,FDeptID,FSupplyID,FBillerID,FEntryID,
        FItemID,FQtyMust,FQty,Fprice,FBatchNo,
        FUnitID,FSourceBillNo,FSourceEntryID,FSourceInterId,FSourceTranType,
        FDCSPID,FDCStockID,FSCSPID,FSCStockID,FOrderBillNo,
        FOrderEntryID,FOrderInterID,FPlanMode,Barcode,Gross,
        Width,Defects,BackCode,WriteTime,Writor,
        Status,ReadTime,Reador,WritorMsg,ReadorMsg
    </sql>
</mapper>
src/main/resources/mapper/third/ExdSupplierMapper.xml
@@ -5,7 +5,7 @@
<mapper namespace="com.zy.third.mapper.ExdSupplierMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdSupplier">
            <result property="id" column="ID" />
            <id property="id" column="ID" />
            <result property="fnumber" column="Fnumber" />
            <result property="fname" column="Fname" />
            <result property="writetime" column="WriteTime" />
src/main/resources/mapper/third/ExdUserMapper.xml
@@ -5,27 +5,29 @@
<mapper namespace="com.zy.third.mapper.ExdUserMapper">
    <resultMap id="BaseResultMap" type="com.zy.third.entity.ExdUser">
            <result property="id" column="ID" />
            <result property="name" column="Name" />
            <result property="writetime" column="WriteTime" />
            <result property="writor" column="Writor" />
            <result property="status" column="Status" />
            <result property="readtime" column="ReadTime" />
            <result property="reador" column="Reador" />
            <result property="writormsg" column="WritorMsg" />
            <result property="readormsg" column="ReadorMsg" />
        <id property="id" column="ID"/>
        <result property="name" column="Name"/>
        <result property="writetime" column="WriteTime"/>
        <result property="writor" column="Writor"/>
        <result property="status" column="Status"/>
        <result property="readtime" column="ReadTime"/>
        <result property="reador" column="Reador"/>
        <result property="writormsg" column="WritorMsg"/>
        <result property="readormsg" column="ReadorMsg"/>
    </resultMap>
    <sql id="Base_Column_List">
        ID,Name,WriteTime,Writor,Status,ReadTime,
        ID
        ,Name,WriteTime,Writor,Status,ReadTime,
        Reador,WritorMsg,ReadorMsg
    </sql>
    <select id="listAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
    <select id="listAll" resultType="com.zy.third.entity.ExdUser">
        select top 100 *
        from Exd_User
        where status = 0
    </select>
</mapper>
src/main/webapp/views/user/user.html
@@ -130,12 +130,12 @@
                        <input name="mobile" placeholder="请输入手机号" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">邮箱</label>
                    <div class="layui-input-block">
                        <input name="email" placeholder="请输入邮箱" class="layui-input">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">邮箱</label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input name="email" placeholder="请输入邮箱" class="layui-input">-->
<!--                    </div>-->
<!--                </div>-->
            </div>
        </div>