自动化立体仓库 - WMS系统
2ca8076932a6e2f6d189457a49cee5fd7f131c4a..9804bdb2b70ab01cd422845dfaa0d2d7bbd98758
2025-05-17 zhang
接口编写
9804bd 对比 | 目录
2025-05-17 zhang
接口编写
406061 对比 | 目录
2025-05-17 zhang
接口编写
244f41 对比 | 目录
2025-05-17 zhang
接口编写
99862b 对比 | 目录
2025-05-17 zhang
接口编写
05e0d3 对比 | 目录
24个文件已添加
6个文件已删除
41个文件已修改
5876 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/InventoryCheckOrderController.java 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/InventoryCheckOrderDetlController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Order.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/InventoryCheckOrderDetlMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/InventoryCheckOrderMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/InventoryCheckOrderDetlService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/InventoryCheckOrderService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/InventoryCheckOrderDetlServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/InventoryCheckOrderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java 285 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccBdCustomerWms.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccCgCgdhdWms.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccCkPddWms.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcBmWms.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcCkWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcCkhw.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcQilibcBarcodeflowWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcRyWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcWlflWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccOrgCorpWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccSaleDbckmxb.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccSaleXclGgsybWms.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccSaleXsckmx.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccSaleXsfhmxWms.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccScZkmxbWms.java 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/VGetBdMaterial.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/mapper/NccCgCgdhdWmsMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/mapper/NccCkPddWmsMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/mapper/NccSaleDbckmxbMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/mapper/NccSaleXsckmxMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/service/NccCkPddWmsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/service/impl/NccCgCgdhdWmsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/service/impl/NccCkPddWmsServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/PlanOrderTask.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/GeneralInBodyVO.java 617 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/GeneralInHeadVO.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/WhsTransBillBodyVO.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/WhsTransBillHeaderVO.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/ic_generalout_b.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/ic_generalout_h.java 859 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/ic_purchasein_b.java 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/ic_purchasein_h.java 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/asrs/OrderMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccBdCustomerWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccCgCgdhdWmsMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccCkPddWmsMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcBmWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcCkWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcCkhwMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcQilibcBarcodeflowWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcRyWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccJcWlflWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccOrgCorpWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccSaleDbckmxbMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccSaleXclGgsybWmsMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccSaleXsckmxMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccSaleXsfhmxWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/NccScZkmxbWmsMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/nc/VGetBdMaterialMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/inventoryCheckOrder/inventoryCheakOrderTable.js 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/inventoryCheckOrder/inventoryCheckOrder.js 452 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/inventoryCheckOrderDetl/inventoryCheckOrderDetl.js 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/inventoryCheckOrder/inventoryCheckOrder.html 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/inventoryCheckOrderDetl/inventoryCheckOrderDetl.html 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -30,7 +30,7 @@
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
src/main/java/com/zy/asrs/controller/InventoryCheckOrderController.java
New file
@@ -0,0 +1,209 @@
package com.zy.asrs.controller;
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.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class InventoryCheckOrderController extends BaseController {
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @RequestMapping("/inventoryCheckOrder/StockCheck/select/barcode")
    @ManagerAuth()
    public R StockCheckSelectBarcode(@RequestParam String barcode) {
        if (Cools.isEmpty(barcode)) {
            return R.ok();
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
        if (Cools.isEmpty(wrkMast)) {
            return R.error("该条码未查询到盘点任务");
        }
        ArrayList<InventoryCheckOrderDetl> checkOrderDetls = new ArrayList<>();
        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        for (WrkDetl wrkDetl : wrkDetls) {
            InventoryCheckOrderDetl checkDetl = inventoryCheckOrderDetlService.selectOne(new EntityWrapper<InventoryCheckOrderDetl>()
                    .eq("order_no", wrkMast.getSheetNo())
                    .eq("matnr", wrkDetl.getMatnr())
                    .eq("batch", wrkDetl.getBatch()));
            if (Cools.isEmpty(checkDetl)) {
                continue;
            }
            checkOrderDetls.add(checkDetl);
        }
        return R.ok(checkOrderDetls);
    }
    @RequestMapping("/inventoryCheckOrder/select/status/1")
    @ManagerAuth()
    public R availableTakeCheckSite(){
        return R.ok().add(inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>().eq("status", "1")));
    }
    @RequestMapping(value = "/inventoryCheckOrder/nav/list/auth")
    @ManagerAuth
    public R navList(@RequestParam(required = false) String orderNo){
        EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>();
        if (!Cools.isEmpty(orderNo)) {
            wrapper.like("order_no", orderNo);
        }
        wrapper.eq("status", 1);
        wrapper.orderBy("create_time", false);
        List<InventoryCheckOrder> orders = inventoryCheckOrderService.selectList(wrapper);
        return R.ok().add(orders);
    }
    @RequestMapping(value = "/inventoryCheckOrder/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(inventoryCheckOrderService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/inventoryCheckOrder/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(InventoryCheckOrder.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(inventoryCheckOrderService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @PostMapping (value = "/inventoryCheckOrder/add/auth")
    @ManagerAuth
    public R add(@RequestBody InventoryCheckOrder inventoryCheckOrder) {
        String orderNo = inventoryCheckOrder.getOrderNo();
        long time = new Date().getTime();
        if (Cools.isEmpty(orderNo)) {
            switch (inventoryCheckOrder.getArea()){
                case "堆垛机":
                    orderNo = "DDJ"+time;
                    break;
                case "四向库":
                    orderNo = "SXK"+time;
                    break;
                case "CTU":
                    orderNo = "CTU"+time;
                    break;
            }
            inventoryCheckOrder.setOrderNo(orderNo);
        }
        int count = inventoryCheckOrderService.selectCount(new EntityWrapper<InventoryCheckOrder>().eq("order_no", orderNo));
        if (count > 0) {
            return R.parse("单据编号已经存在:" + orderNo);
        }
        inventoryCheckOrder.setCreateBy(getUserId().toString());
        inventoryCheckOrder.setCreateTime(new Date());
        inventoryCheckOrder.setStatus("1");
        inventoryCheckOrderService.insert(inventoryCheckOrder);
        return R.ok(orderNo + "新增成功");
    }
    @RequestMapping(value = "/inventoryCheckOrder/update/auth")
    @ManagerAuth
    public R update(InventoryCheckOrder inventoryCheckOrder){
        if (Cools.isEmpty(inventoryCheckOrder) || null==inventoryCheckOrder.getId()){
            return R.error();
        }
        inventoryCheckOrderService.updateById(inventoryCheckOrder);
        return R.ok();
    }
    @RequestMapping(value = "/inventoryCheckOrder/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            inventoryCheckOrderService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/inventoryCheckOrder/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("inventoryCheckOrder"));
        convert(map, wrapper);
        List<InventoryCheckOrder> list = inventoryCheckOrderService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/inventoryCheckOrderQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<InventoryCheckOrder> page = inventoryCheckOrderService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (InventoryCheckOrder inventoryCheckOrder : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", inventoryCheckOrder.getId());
            map.put("value", inventoryCheckOrder.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/inventoryCheckOrder/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<InventoryCheckOrder> wrapper = new EntityWrapper<InventoryCheckOrder>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != inventoryCheckOrderService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(InventoryCheckOrder.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/InventoryCheckOrderDetlController.java
New file
@@ -0,0 +1,151 @@
package com.zy.asrs.controller;
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.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
public class InventoryCheckOrderDetlController extends BaseController {
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @RequestMapping(value = "/inventoryCheckOrderDetl/pakout/list/auth")
    @ManagerAuth
    public R pakoutList(@RequestParam(defaultValue = "1")Integer curr,
                        @RequestParam(defaultValue = "10")Integer limit,
                        @RequestParam Map<String, Object> param){
        if (null == param.get("order_id")|| param.get("order_id").equals("9999999999")){
            return R.ok(inventoryCheckOrderDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no",null)));
        }
        InventoryCheckOrder inventoryCheckOrder = inventoryCheckOrderService.selectById(Integer.parseInt(param.get("order_id").toString()));
        EntityWrapper<InventoryCheckOrderDetl> inventoryCheckOrderDetlEntityWrapper = new EntityWrapper<>();
//        convert(param, inventoryCheckOrderDetlEntityWrapper);
        inventoryCheckOrderDetlEntityWrapper.eq("order_no",inventoryCheckOrder.getOrderNo());
        return R.ok(inventoryCheckOrderDetlService.selectPage(new Page<>(curr, limit), inventoryCheckOrderDetlEntityWrapper));
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(inventoryCheckOrderDetlService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<InventoryCheckOrderDetl> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(InventoryCheckOrderDetl.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(inventoryCheckOrderDetlService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (entry.getKey().equals("curr") || entry.getKey().equals("limit")){
                continue;
            }
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/add/auth")
    @ManagerAuth
    public R add(InventoryCheckOrderDetl inventoryCheckOrderDetl) {
        inventoryCheckOrderDetlService.insert(inventoryCheckOrderDetl);
        return R.ok();
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/update/auth")
    @ManagerAuth
    public R update(InventoryCheckOrderDetl inventoryCheckOrderDetl){
        if (Cools.isEmpty(inventoryCheckOrderDetl) || null==inventoryCheckOrderDetl.getId()){
            return R.error();
        }
        inventoryCheckOrderDetlService.updateById(inventoryCheckOrderDetl);
        return R.ok();
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            inventoryCheckOrderDetlService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<InventoryCheckOrderDetl> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("inventoryCheckOrderDetl"));
        convert(map, wrapper);
        List<InventoryCheckOrderDetl> list = inventoryCheckOrderDetlService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/inventoryCheckOrderDetlQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<InventoryCheckOrderDetl> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<InventoryCheckOrderDetl> page = inventoryCheckOrderDetlService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (InventoryCheckOrderDetl inventoryCheckOrderDetl : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", inventoryCheckOrderDetl.getId());
            map.put("value", inventoryCheckOrderDetl.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/inventoryCheckOrderDetl/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<InventoryCheckOrderDetl> wrapper = new EntityWrapper<InventoryCheckOrderDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != inventoryCheckOrderDetlService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(InventoryCheckOrderDetl.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java
New file
@@ -0,0 +1,99 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("man_Inventory_check_order")
public class InventoryCheckOrder implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 单据号
     */
    @ApiModelProperty(value= "单据号")
    @TableField("order_no")
    private String orderNo;
    /**
     * 库区
     */
    @ApiModelProperty(value= "库区")
    private String area;
    @ApiModelProperty(value= "状态")
    private String status;
    /**
     * 创建时间
     */
    @ApiModelProperty(value= "创建时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 创建人
     */
    @ApiModelProperty(value= "创建人")
    @TableField("create_by")
    private String createBy;
    public InventoryCheckOrder() {}
    public InventoryCheckOrder(Integer id,String orderNo,String area,Date createTime,String createBy) {
        this.id = id;
        this.orderNo = orderNo;
        this.area = area;
        this.createTime = createTime;
        this.createBy = createBy;
    }
//    InventoryCheckOrder inventoryCheckOrder = new InventoryCheckOrder(
//            null,    // ID[非空]
//            null,    // 单据号
//            null,    // 库区
//            null,    // 创建时间
//            null    // 创建人
//    );
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getStatus$(){
        if (Cools.isEmpty(this.status)){
            return "";
        }
        switch (this.status){
            case "1":
                return "未提交";
            case "2":
                return "已提交";
            default:
                return "";
        }
    }
}
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java
New file
@@ -0,0 +1,122 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("man_Inventory_check_order_detl")
public class InventoryCheckOrderDetl implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty(value= "")
    @TableField("order_no")
    private String orderNo;
    @ApiModelProperty(value= "")
    private String matnr;
    @ApiModelProperty(value= "")
    private String maktx;
    @ApiModelProperty(value= "")
    private String batch;
    @ApiModelProperty(value= "")
    private Double anfme;
    @ApiModelProperty(value= "")
    private String area;
    @ApiModelProperty(value= "")
    private String status;
    @ApiModelProperty(value= "")
    @TableField("loc_no")
    private String locNo;
    @ApiModelProperty(value= "")
    @TableField("check_anfme")
    private Double checkAnfme;
    @ApiModelProperty(value= "")
    @TableField("io_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date ioTime;
    public InventoryCheckOrderDetl() {}
    public InventoryCheckOrderDetl(String orderNo,String matnr,String maktx,String batch,Double anfme,String area,String locNo,Date ioTime) {
        this.orderNo = orderNo;
        this.matnr = matnr;
        this.maktx = maktx;
        this.batch = batch;
        this.anfme = anfme;
        this.area = area;
        this.locNo = locNo;
        this.ioTime = ioTime;
    }
//    InventoryCheckOrderDetl inventoryCheckOrderDetl = new InventoryCheckOrderDetl(
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getStatus$(){
        if (Cools.isEmpty(this.status)){
            return "";
        }
        switch (this.status){
            case "1":
                return "待盘";
            case "2":
                return "已盘";
            default:
                return "";
        }
    }
    public String getProfit$(){
        if (Cools.isEmpty(this.status) && !this.status.equals("1")){
            return "未盘点";
        }
        if (Cools.isEmpty(this.anfme) || Cools.isEmpty(this.checkAnfme)){
            return "";
        }
        if (this.anfme > this.checkAnfme){
            return "盘亏";
        }else if (this.anfme < this.checkAnfme){
            return "盘盈";
        }else {
            return "平";
        }
    }
}
src/main/java/com/zy/asrs/entity/Order.java
@@ -221,6 +221,12 @@
    private Long settle;
    /**
     * 步序
     */
    @ApiModelProperty(value= "步序")
    private Integer step;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
src/main/java/com/zy/asrs/mapper/InventoryCheckOrderDetlMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface InventoryCheckOrderDetlMapper extends BaseMapper<InventoryCheckOrderDetl> {
}
src/main/java/com/zy/asrs/mapper/InventoryCheckOrderMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface InventoryCheckOrderMapper extends BaseMapper<InventoryCheckOrder> {
}
src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -14,6 +14,9 @@
    int updateSettle(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("userId")Long userId);
    int updateSettleStep(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("userId")Long userId, @Param("step")Integer step);
    List<Order> selectComplete();
    List<Order> selectComplete1();
    List<Order> selectComplete99();
src/main/java/com/zy/asrs/service/InventoryCheckOrderDetlService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.baomidou.mybatisplus.service.IService;
public interface InventoryCheckOrderDetlService extends IService<InventoryCheckOrderDetl> {
}
src/main/java/com/zy/asrs/service/InventoryCheckOrderService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.baomidou.mybatisplus.service.IService;
public interface InventoryCheckOrderService extends IService<InventoryCheckOrder> {
}
src/main/java/com/zy/asrs/service/OrderService.java
@@ -18,6 +18,8 @@
    boolean updateSettle(Long orderId, Long settle, Long userId);
    boolean updateSettleStep(Long orderId, Long settle, Long userId, Integer step);
    void checkComplete(String orderNo);
    boolean saveHandlerOrder(Boolean pakin, WrkMast wrkMast, List<WrkDetl> wrkDetls);
src/main/java/com/zy/asrs/service/impl/InventoryCheckOrderDetlServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.InventoryCheckOrderDetlMapper;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("inventoryCheckOrderDetlService")
public class InventoryCheckOrderDetlServiceImpl extends ServiceImpl<InventoryCheckOrderDetlMapper, InventoryCheckOrderDetl> implements InventoryCheckOrderDetlService {
}
src/main/java/com/zy/asrs/service/impl/InventoryCheckOrderServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.InventoryCheckOrderMapper;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("inventoryCheckOrderService")
public class InventoryCheckOrderServiceImpl extends ServiceImpl<InventoryCheckOrderMapper, InventoryCheckOrder> implements InventoryCheckOrderService {
}
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -66,6 +66,11 @@
    }
    @Override
    public boolean updateSettleStep(Long orderId, Long settle, Long userId, Integer step) {
        return this.baseMapper.updateSettleStep(orderId, settle, userId,step) > 0;
    }
    @Override
    public void checkComplete(String orderNo) {
        Order order = this.selectByNo(orderNo);
        if (Cools.isEmpty(order) || order.getSettle() >= 4L) {
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -10,12 +10,10 @@
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReportToThirdService;
import com.zy.common.utils.Synchro;
import com.zy.nc.SendUtil;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.util.NcResultMessage;
import com.zy.nc.vo.SaleOutBodyVO;
import com.zy.nc.vo.SaleOutHeadVO;
import com.zy.nc.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -48,65 +46,101 @@
    @Override
    public void report(Order order, List<OrderDetl> orderDetls, DocType docType) {
        Boolean http = false;
        int step = (Cools.isEmpty(order.getStep()) || order.getStep() == 0) ? 0 : order.getStep();
        NcResultMessage response = null;
        Object process1 = null;
        Object process2 = null;
        Object process3 = null;
        try {
            switch (order.getDocType().toString()) {
                case "35":
                    //组装对象数据
                    Map<String, Object> data = new HashMap<String, Object>();
                    SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
                    saleOutHeadVO.setPk_org("FYT");
                    saleOutHeadVO.setCwarehouseid("6101");
                    SaleOutBodyVO saleOutBodyVO = null;
                    List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>();
                    for (OrderDetl orderDetl : orderDetls) {
                        saleOutBodyVO = new SaleOutBodyVO();
                        String remark = orderDetl.getRemark();
                        if (!Cools.isEmpty(remark)) {
                            NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                            saleOutBodyVO.setCsourcetype("4331");
                            saleOutBodyVO.setClocationid("610101");
                            saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                            saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                            saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2());
                            saleOutHeadVO.setVdef3(nccSaleXsfhmxWms.getVdef3());
                            saleOutHeadVO.setVdef4(nccSaleXsfhmxWms.getVdef4());
                            saleOutHeadVO.setVdef7(nccSaleXsfhmxWms.getVdef7());
                            saleOutHeadVO.setVdef8(nccSaleXsfhmxWms.getVdef8());
                            saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13());
                            saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14());
                        }
                        saleOutBodyVO.setVbatchcode(orderDetl.getBatch());
                        saleOutBodyVO.setNshouldnum(orderDetl.getAnfme());
                        saleOutBodyVO.setNnum(orderDetl.getQty());
                        saleOutBodyVOList.add(saleOutBodyVO);
                    }
                    data.put("SaleOutHeadVO", saleOutHeadVO);
                    data.put("SaleOutBodyVO", saleOutBodyVOList);
            switch (order.getDocType$().toString()) {
                case "销售发货":
                    process1 = processXSFH(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(data));
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        http = true;
                        step = 10;
                    }
                    break;
                case "产成品入库":
                case "转库":
                    process1 = processQTRK(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        step = 10;
                    }
                    break;
                case "辅料采购入库":
                case "采购到货":
                    process1 = processCGDH(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        step = 10;
                    }
                    break;
                case "辅料及成品转库":
                case "产成品入库单":
                    if (step == 2) {
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    } else if (step == 1) {
                        process2 = processGENERALOUT(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 2;
                        }
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    } else if (step == 0) {
                        process1 = processZK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 1;
                        }
                        process2 = processGENERALOUT(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 2;
                        }
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    }
                    break;
                case "自动包装入库":
                    break;
                case "内部调拨":
                    break;
//                case "内部调拨":
//                    break;
                default:
                    break;
                    throw new CoolException("不能识别的单据类型");
            }
            if (http) {
            if (step == 10) {
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            } else if (step != 0) {
                // 修改订单状态 做标记
                if (!orderService.updateSettleStep(order.getId(), 6L, null, step)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
@@ -119,6 +153,161 @@
    }
    private Object processXSFH(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
        saleOutHeadVO.setPk_org("FYT");
        saleOutHeadVO.setCwarehouseid("6101");
        SaleOutBodyVO saleOutBodyVO = null;
        List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            saleOutBodyVO = new SaleOutBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                saleOutBodyVO.setCsourcetype("4331");
                saleOutBodyVO.setClocationid("610101");
                saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2());
                saleOutHeadVO.setVdef3(nccSaleXsfhmxWms.getVdef3());
                saleOutHeadVO.setVdef4(nccSaleXsfhmxWms.getVdef4());
                saleOutHeadVO.setVdef7(nccSaleXsfhmxWms.getVdef7());
                saleOutHeadVO.setVdef8(nccSaleXsfhmxWms.getVdef8());
                saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13());
                saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14());
            }
            saleOutBodyVO.setVbatchcode(orderDetl.getBatch());
            saleOutBodyVO.setNshouldnum(orderDetl.getAnfme());
            saleOutBodyVO.setNnum(orderDetl.getQty());
            saleOutBodyVOList.add(saleOutBodyVO);
        }
        data.put("SaleOutHeadVO", saleOutHeadVO);
        data.put("SaleOutBodyVO", saleOutBodyVOList);
        return data;
    }
    private Object processQTRK(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        GeneralInHeadVO generalInHeadVO = new GeneralInHeadVO();
        generalInHeadVO.setPk_org("FYT");
        generalInHeadVO.setCwarehouseid("6101");
        GeneralInBodyVO generalInBodyVO = null;
        List<GeneralInBodyVO> generalInBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            generalInBodyVO = new GeneralInBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                generalInBodyVO.setCsourcetype("4331");
                generalInBodyVO.setClocationid("610101");
                generalInBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                generalInBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                generalInBodyVO.setNnum(orderDetl.getQty());
                generalInBodyVO.setVbatchcode(orderDetl.getBatch());
                generalInBodyVO.setCmaterialoid(orderDetl.getMatnr());
            }
            generalInBodyVOS.add(generalInBodyVO);
        }
        data.put("GeneralInHeadVO", generalInHeadVO);
        data.put("GeneralInBodyVO", generalInBodyVOS);
        return data;
    }
    private Object processZK(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
        whsTransBillHeaderVO.setPk_org("FYT");
        whsTransBillHeaderVO.setCwarehouseid("6101");
        WhsTransBillBodyVO whsTransBillBodyVO = null;
        List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            whsTransBillBodyVO = new WhsTransBillBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                whsTransBillBodyVO.setCsourcetype("4331");
                whsTransBillBodyVO.setClocationid("610101");
                whsTransBillBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                whsTransBillBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                whsTransBillBodyVO.setNnum(orderDetl.getQty());
                whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
                whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            }
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
        }
        data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
        data.put("WhsTransBillBodyVO", whsTransBillBodyVOS);
        return data;
    }
    private Object processCGDH(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
        ic_purchasein_h.setPk_org("FYT");
        ic_purchasein_h.setCwarehouseid("6101");
        ic_purchasein_b ic_purchasein_b = null;
        List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            ic_purchasein_b = new ic_purchasein_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                ic_purchasein_b.setVdef2(nccSaleXsfhmxWms.getVdef2());
                ic_purchasein_b.setVdef3(nccSaleXsfhmxWms.getVdef3());
                ic_purchasein_b.setVdef4(nccSaleXsfhmxWms.getVdef4());
                ic_purchasein_b.setVdef7(nccSaleXsfhmxWms.getVdef7());
                ic_purchasein_b.setVdef8(nccSaleXsfhmxWms.getVdef8());
                ic_purchasein_b.setVdef13(nccSaleXsfhmxWms.getVdef13());
                ic_purchasein_b.setVdef14(nccSaleXsfhmxWms.getVdef14());
            }
            ic_purchasein_bs.add(ic_purchasein_b);
        }
        data.put("ic_purchasein_h", ic_purchasein_h);
        data.put("ic_purchasein_b", ic_purchasein_b);
        return data;
    }
    /**
     * @param orderDetls
     * @return
     */
    private Object processGENERALOUT(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
        ic_purchasein_h.setPk_org("FYT");
        ic_purchasein_h.setCwarehouseid("6101");
        ic_purchasein_b ic_purchasein_b = null;
        List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            ic_purchasein_b = new ic_purchasein_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                ic_purchasein_b.setVdef2(nccSaleXsfhmxWms.getVdef2());
                ic_purchasein_b.setVdef3(nccSaleXsfhmxWms.getVdef3());
                ic_purchasein_b.setVdef4(nccSaleXsfhmxWms.getVdef4());
                ic_purchasein_b.setVdef7(nccSaleXsfhmxWms.getVdef7());
                ic_purchasein_b.setVdef8(nccSaleXsfhmxWms.getVdef8());
                ic_purchasein_b.setVdef13(nccSaleXsfhmxWms.getVdef13());
                ic_purchasein_b.setVdef14(nccSaleXsfhmxWms.getVdef14());
            }
            ic_purchasein_bs.add(ic_purchasein_b);
        }
        data.put("ic_purchasein_h", ic_purchasein_h);
        data.put("ic_purchasein_b", ic_purchasein_b);
        return data;
    }
    private Boolean reportApiLog(Object data, String docType, String url, String path) {
        String response = "";
        boolean success = false;
src/main/java/com/zy/nc/entity/NccBdCustomerWms.java
@@ -63,7 +63,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/entity/NccCgCgdhdWms.java
@@ -178,7 +178,10 @@
     * 
     */
    private Integer bdr;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/entity/NccCkPddWms.java
@@ -165,6 +165,11 @@
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    /**
     * 
     */
    private Integer hdr;
src/main/java/com/zy/nc/entity/NccJcBmWms.java
@@ -66,7 +66,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/entity/NccJcCkWms.java
@@ -237,6 +237,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/NccJcCkhw.java
@@ -47,7 +47,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/entity/NccJcQilibcBarcodeflowWms.java
@@ -68,6 +68,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/NccJcRyWms.java
@@ -71,6 +71,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/NccJcWlflWms.java
@@ -52,6 +52,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/NccOrgCorpWms.java
@@ -31,6 +31,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/NccSaleDbckmxb.java
File was deleted
src/main/java/com/zy/nc/entity/NccSaleXclGgsybWms.java
@@ -173,6 +173,16 @@
     */
    private String clcj;
    /**
     *
     */
    private String wmsMemo;
    /**
     *
     */
    private Integer wmsFlag;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
@@ -216,7 +226,9 @@
            && (this.getSjflmc() == null ? other.getSjflmc() == null : this.getSjflmc().equals(other.getSjflmc()))
            && (this.getZsl() == null ? other.getZsl() == null : this.getZsl().equals(other.getZsl()))
            && (this.getFsl() == null ? other.getFsl() == null : this.getFsl().equals(other.getFsl()))
            && (this.getClcj() == null ? other.getClcj() == null : this.getClcj().equals(other.getClcj()));
            && (this.getClcj() == null ? other.getClcj() == null : this.getClcj().equals(other.getClcj()))
            && (this.getWmsMemo() == null ? other.getWmsMemo() == null : this.getWmsMemo().equals(other.getWmsMemo()))
            && (this.getWmsFlag() == null ? other.getWmsFlag() == null : this.getWmsFlag().equals(other.getWmsFlag()));
    }
    @Override
@@ -255,6 +267,8 @@
        result = prime * result + ((getZsl() == null) ? 0 : getZsl().hashCode());
        result = prime * result + ((getFsl() == null) ? 0 : getFsl().hashCode());
        result = prime * result + ((getClcj() == null) ? 0 : getClcj().hashCode());
        result = prime * result + ((getWmsMemo() == null) ? 0 : getWmsMemo().hashCode());
        result = prime * result + ((getWmsFlag() == null) ? 0 : getWmsFlag().hashCode());
        return result;
    }
@@ -296,6 +310,8 @@
        sb.append(", zsl=").append(zsl);
        sb.append(", fsl=").append(fsl);
        sb.append(", clcj=").append(clcj);
        sb.append(", wmsMemo=").append(wmsMemo);
        sb.append(", wmsFlag=").append(wmsFlag);
        sb.append("]");
        return sb.toString();
    }
src/main/java/com/zy/nc/entity/NccSaleXsckmx.java
File was deleted
src/main/java/com/zy/nc/entity/NccSaleXsfhmxWms.java
@@ -418,7 +418,10 @@
     * 
     */
    private String vdef4;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/entity/NccScZkmxbWms.java
@@ -15,295 +15,299 @@
@Data
public class NccScZkmxbWms {
    /**
     *
     *
     */
    @TableId
    private String cspecialbid;
    /**
     *
     *
     */
    private String vbillcode;
    /**
     *
     *
     */
    private String dmakedate;
    /**
     *
     *
     */
    private Date scdmakedate;
    /**
     *
     *
     */
    private String dbilldate;
    /**
     *
     *
     */
    private String taudittime;
    /**
     *
     *
     */
    private String zzbm;
    /**
     *
     *
     */
    private String zzmc;
    /**
     *
     *
     */
    private String ckzzbm;
    /**
     *
     *
     */
    private String ckzzmc;
    /**
     *
     *
     */
    private String ckssbcode;
    /**
     *
     *
     */
    private String cksssyb;
    /**
     *
     *
     */
    private String ckckbm;
    /**
     *
     *
     */
    private String ckckmc;
    /**
     *
     *
     */
    private String ckbmbm;
    /**
     *
     *
     */
    private String ckbmmc;
    /**
     *
     *
     */
    private String rkzzbm;
    /**
     *
     *
     */
    private String rkzzmc;
    /**
     *
     *
     */
    private String rkssbcode;
    /**
     *
     *
     */
    private String rksssyb;
    /**
     *
     *
     */
    private String rkckbm;
    /**
     *
     *
     */
    private String rkckmc;
    /**
     *
     *
     */
    private String rkbmbm;
    /**
     *
     *
     */
    private String rkbmmc;
    /**
     *
     *
     */
    private Long djzt;
    /**
     *
     *
     */
    private String zklx;
    /**
     *
     *
     */
    private String wlbm;
    /**
     *
     *
     */
    private String wlmc;
    /**
     *
     *
     */
    private String wlgg;
    /**
     *
     *
     */
    private String wlxh;
    /**
     *
     *
     */
    private String wljc;
    /**
     *
     *
     */
    private String jbflbm;
    /**
     *
     *
     */
    private String jbflmc;
    /**
     *
     *
     */
    private String sjflbm;
    /**
     *
     *
     */
    private String sjflmc;
    /**
     *
     *
     */
    private String zsjflbm;
    /**
     *
     *
     */
    private String zsjflmc;
    /**
     *
     *
     */
    private String zdw;
    /**
     *
     *
     */
    private String fdw;
    /**
     *
     *
     */
    private String kczt;
    /**
     *
     *
     */
    private String vbatchcode;
    /**
     *
     *
     */
    private String vdef1;
    /**
     *
     *
     */
    private String vdef2;
    /**
     *
     *
     */
    private String vdef3;
    /**
     *
     *
     */
    private String khbm;
    /**
     *
     *
     */
    private String khmc;
    /**
     *
     *
     */
    private String khjc;
    /**
     *
     *
     */
    private BigDecimal yzzsl;
    /**
     *
     *
     */
    private BigDecimal yzfsl;
    /**
     *
     *
     */
    private BigDecimal ljckzsl;
    /**
     *
     *
     */
    private BigDecimal ljrkzsl;
    /**
     *
     *
     */
    private Integer dr;
    /**
     *
     *
     */
    private String ts;
    /**
     *
     *
     */
    private Integer wmsFlag;
    /**
     *
     *
     */
    private BigDecimal yingzsl;
    /**
     *
     *
     */
    private BigDecimal yingzzsl;
    /**
     *
     *
     */
    private Integer bdr;
    /**
     *
     *
     */
    private String bts;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
src/main/java/com/zy/nc/entity/VGetBdMaterial.java
@@ -228,7 +228,10 @@
     * 
     */
    private Integer wmsFlag;
    /**
     *
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/mapper/NccCgCgdhdWmsMapper.java
@@ -3,6 +3,8 @@
import com.zy.nc.entity.NccCgCgdhdWms;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
/**
* @author ZY
* @description 针对表【ncc_cg_cgdhd_wms】的数据库操作Mapper
@@ -11,5 +13,5 @@
*/
public interface NccCgCgdhdWmsMapper extends BaseMapper<NccCgCgdhdWms> {
    List<String> selectCg();
}
src/main/java/com/zy/nc/mapper/NccCkPddWmsMapper.java
@@ -3,6 +3,8 @@
import com.zy.nc.entity.NccCkPddWms;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
/**
* @author ZY
* @description 针对表【ncc_ck_pdd_wms】的数据库操作Mapper
@@ -12,4 +14,5 @@
public interface NccCkPddWmsMapper extends BaseMapper<NccCkPddWms> {
    List<String> selectPdd();
}
src/main/java/com/zy/nc/mapper/NccSaleDbckmxbMapper.java
File was deleted
src/main/java/com/zy/nc/mapper/NccSaleXsckmxMapper.java
File was deleted
src/main/java/com/zy/nc/service/NccCkPddWmsService.java
@@ -12,5 +12,5 @@
*/
public interface NccCkPddWmsService extends IService<NccCkPddWms> {
    List<String> selectCg();
    List<String> selectPdd();
}
src/main/java/com/zy/nc/service/impl/NccCgCgdhdWmsServiceImpl.java
@@ -20,6 +20,6 @@
    @Override
    public List<String> selectCg() {
        return Collections.emptyList();
        return this.baseMapper.selectCg();
    }
}
src/main/java/com/zy/nc/service/impl/NccCkPddWmsServiceImpl.java
@@ -6,6 +6,9 @@
import com.zy.nc.mapper.NccCkPddWmsMapper;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* @author ZY
* @description 针对表【ncc_ck_pdd_wms】的数据库操作Service实现
@@ -15,4 +18,8 @@
public class NccCkPddWmsServiceImpl extends ServiceImpl<NccCkPddWmsMapper, NccCkPddWms>
implements NccCkPddWmsService{
    @Override
    public List<String> selectPdd() {
        return this.baseMapper.selectPdd();
    }
}
src/main/java/com/zy/nc/task/PlanOrderTask.java
@@ -1,11 +1,22 @@
package com.zy.nc.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.task.core.ReturnT;
import com.zy.nc.entity.NccCgCgdhdWms;
import com.zy.nc.entity.NccCkPddWms;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.entity.NccScZkmxbWms;
import com.zy.nc.service.NccCgCgdhdWmsService;
import com.zy.nc.service.NccCkPddWmsService;
import com.zy.nc.service.NccSaleXsfhmxWmsService;
import com.zy.nc.service.NccScZkmxbWmsService;
import com.zy.nc.task.handler.PlanOrderHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@Slf4j
@Component
@@ -15,6 +26,18 @@
    private PlanOrderHandler planOrderHandler;
    @Autowired
    private NccSaleXsfhmxWmsService nccSaleXsfhmxWmsService;
    @Autowired
    private NccScZkmxbWmsService nccScZkmxbWmsService;
    @Autowired
    private NccCgCgdhdWmsService nccCgCgdhdWmsService;
    @Autowired
    private NccCkPddWmsService nccCkPddWmsService;
    /**
     * 发货
     *
@@ -22,10 +45,19 @@
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute1() {
        ReturnT<String> returnT = planOrderHandler.start1();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
        List<String> Ids = nccSaleXsfhmxWmsService.selectXsfh();
        for (String id : Ids) {
            List<NccSaleXsfhmxWms> wmsFlag = nccSaleXsfhmxWmsService.selectList(new EntityWrapper<NccSaleXsfhmxWms>().eq("vbillcode", id).ne("wms_flag", 1).eq("fstatusflag", 2));
            ReturnT<String> returnT = planOrderHandler.start1(wmsFlag);
            if (!returnT.isSuccess()) {
                for (NccSaleXsfhmxWms wms : wmsFlag) {
                    wms.setWmsMemo(returnT.getMsg());
                    nccSaleXsfhmxWmsService.updateById(wms);
                }
                log.error(returnT.getMsg());
            }
        }
    }
    /**
@@ -35,10 +67,19 @@
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute2() {
        ReturnT<String> returnT = planOrderHandler.start2();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
        List<String> strings = nccScZkmxbWmsService.selectZk();
        for (String string : strings) {
            List<NccScZkmxbWms> wmsFlag = nccScZkmxbWmsService.selectList(new EntityWrapper<NccScZkmxbWms>().eq("vbillcode", string).ne("wms_flag", 1));
            ReturnT<String> returnT = planOrderHandler.start2(wmsFlag);
            if (!returnT.isSuccess()) {
                for (NccScZkmxbWms wms : wmsFlag) {
                    wms.setWmsMemo(returnT.getMsg());
                    nccScZkmxbWmsService.updateById(wms);
                }
                log.error(returnT.getMsg());
            }
        }
    }
    /**
@@ -48,10 +89,19 @@
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute3() {
        ReturnT<String> returnT = planOrderHandler.start3();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
        List<String> strings = nccCgCgdhdWmsService.selectCg();
        for (String string : strings) {
            List<NccCgCgdhdWms> wmsFlag = nccCgCgdhdWmsService.selectList(new EntityWrapper<NccCgCgdhdWms>().eq("vbillcode", string).ne("wms_flag", 1));
            ReturnT<String> returnT = planOrderHandler.start3(wmsFlag);
            if (!returnT.isSuccess()) {
                for (NccCgCgdhdWms wms : wmsFlag) {
                    wms.setWmsMemo(returnT.getMsg());
                    nccCgCgdhdWmsService.updateById(wms);
                }
                log.error(returnT.getMsg());
            }
        }
    }
    /**
@@ -61,9 +111,17 @@
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute4() {
        ReturnT<String> returnT = planOrderHandler.start4();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
        List<String> strings = nccCkPddWmsService.selectPdd();
        for (String string : strings) {
            List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1));
            ReturnT<String> returnT = planOrderHandler.start4(wmsFlag);
            if (!returnT.isSuccess()) {
                for (NccCkPddWms wms : wmsFlag) {
                    wms.setWmsMemo(returnT.getMsg());
                    nccCkPddWmsService.updateById(wms);
                }
                log.error(returnT.getMsg());
            }
        }
    }
}
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java
@@ -2,8 +2,16 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.OpenService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
@@ -19,6 +27,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.List;
@@ -40,6 +49,15 @@
    private NccCkPddWmsService nccCkPddWmsService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private MatService matService;
    @Autowired
    private OpenService openService;
    /**
@@ -47,10 +65,8 @@
     *
     * @return
     */
    public ReturnT<String> start1() {
        List<String> Ids = nccSaleXsfhmxWmsService.selectXsfh();
        for (String id : Ids) {
            List<NccSaleXsfhmxWms> wmsFlag = nccSaleXsfhmxWmsService.selectList(new EntityWrapper<NccSaleXsfhmxWms>().eq("vbillcode", id).ne("wms_flag", 1).eq("fstatusflag", 2));
    public ReturnT<String> start1(List<NccSaleXsfhmxWms> wmsFlag) {
        try {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("销售发货");
            DetlDto detlDto;
@@ -68,11 +84,15 @@
                    i++;
                }
                nccSaleXsfhmxWms.setWmsFlag(1);
                param.setOrderNo(nccSaleXsfhmxWms.getVbillcode());
            }
            param.setOrderNo(id);
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccSaleXsfhmxWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
@@ -82,15 +102,13 @@
     *
     * @return
     */
    public ReturnT<String> start2() {
        List<String> strings = nccScZkmxbWmsService.selectZk();
        for (String string : strings) {
    public ReturnT<String> start2(List<NccScZkmxbWms> wmsFlag) {
        try {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("转库");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            List<NccScZkmxbWms> wmsFlag = nccScZkmxbWmsService.selectList(new EntityWrapper<NccScZkmxbWms>().eq("vbillcode", string).ne("wms_flag", 1));
            for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) {
                log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
                if (nccScZkmxbWms.getDjzt() == 2 && nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getDr() == 0) {
@@ -103,11 +121,15 @@
                    i++;
                }
                nccScZkmxbWms.setWmsFlag(1);
                param.setOrderNo(nccScZkmxbWms.getVbillcode());
            }
            param.setOrderNo(string);
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccScZkmxbWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
@@ -118,36 +140,36 @@
     *
     * @return
     */
    public ReturnT<String> start3() {
        List<String> strings = nccCgCgdhdWmsService.selectCg();
        for (String string : strings) {
    public ReturnT<String> start3(List<NccCgCgdhdWms> wmsFlag) {
        try {
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            param.setOrderType("采购到货");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            List<NccCgCgdhdWms> wmsFlag = nccCgCgdhdWmsService.selectList(new EntityWrapper<NccCgCgdhdWms>().eq("vbillcode", string).ne("wms_flag", 1));
            for (NccCgCgdhdWms nccScZkmxbWms : wmsFlag) {
                log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
//                if (nccScZkmxbWms.getDjzt() == 2 && nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getDr() == 0) {
//                    detlDto = new DetlDto();
//                    detlDto.setMatnr(nccScZkmxbWms.getWlbm());
//                    detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue());
//                    detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
//                    detlDto.setLineNumber(i);
//                    orderDetails.add(detlDto);
//                    i++;
//                }
                log.info("NccCgCgdhdWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
                if (nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getHdr() == 0) {
                    detlDto = new DetlDto();
                    detlDto.setMatnr(nccScZkmxbWms.getWlbm());
                    detlDto.setAnfme(nccScZkmxbWms.getYdzsl().doubleValue());
                    detlDto.setLineNumber(i);
                    orderDetails.add(detlDto);
                    i++;
                }
                nccScZkmxbWms.setWmsFlag(1);
                param.setOrderNo(nccScZkmxbWms.getVbillcode());
            }
            param.setOrderNo(string);
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            nccCgCgdhdWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
@@ -155,32 +177,39 @@
     *
     * @return
     */
    public ReturnT<String> start4() {
        List<String> strings = nccCkPddWmsService.selectCg();
        for (String string : strings) {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("采购到货");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1));
    public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) {
        try {
            InventoryCheckOrder param = new InventoryCheckOrder();
            InventoryCheckOrderDetl checkOrderDetl = null;
            for (NccCkPddWms nccScZkmxbWms : wmsFlag) {
                log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
//                if (nccScZkmxbWms.getDjzt() == 2 && nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getDr() == 0) {
//                    detlDto = new DetlDto();
//                    detlDto.setMatnr(nccScZkmxbWms.getWlbm());
//                    detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue());
//                    detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
//                    detlDto.setLineNumber(i);
//                    orderDetails.add(detlDto);
//                    i++;
//                }
                if (nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getHdr() == 0) {
                    Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm());
                    if (Cools.isEmpty(mat)) {
                        throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品");
                    }
                    List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", nccScZkmxbWms.getVbillcode()).eq("matnr", mat.getMatnr()));
                    if (checkOrderDetls == null || checkOrderDetls.isEmpty()) {
                        throw new CoolException(nccScZkmxbWms.getWlbm() + "盘点单的明细重复了");
                    }
                    checkOrderDetl = new InventoryCheckOrderDetl();
                    checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm());
                    checkOrderDetl.setMaktx(mat.getMatnr());
                    checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode());
                    checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue());
                    checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode());
                    inventoryCheckOrderDetlService.insert(checkOrderDetl);
                }
                nccScZkmxbWms.setWmsFlag(1);
                param.setOrderNo(nccScZkmxbWms.getVbillcode());
            }
            param.setOrderNo(string);
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            param.setStatus("1");
            inventoryCheckOrderService.insert(param);
            nccCkPddWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
src/main/java/com/zy/nc/vo/GeneralInBodyVO.java
New file
@@ -0,0 +1,617 @@
package com.zy.nc.vo;
import lombok.Data;
/**
 * 入库单表体实体类
 */
@Data
public class GeneralInBodyVO {
    /**
     * 来源单据表体主键(必填)
     */
    private String csourcebillbid;
    /**
     * 来源单据主键(必填)
     */
    private String csourcebillhid;
    /**
     * 来源单据类型(必填)
     */
    private String csourcetype;
    /**
     * 实收主数量(必填)
     */
    private Double nnum;
    /**
     * 应收主数量(必填)
     */
    private Double nshouldnum;
    /**
     * 单据行是否条码关闭
     */
    private Boolean bbarcodeclose;
    /**
     * 批次是否封存
     */
    private Boolean bcseal;
    /**
     * 是否已传存货核算
     */
    private Boolean bhasiabill;
    /**
     * 是否在途
     */
    private Boolean bonroadflag;
    /**
     * 客户
     */
    private String casscustid;
    /**
     * 单位
     */
    private String castunitid;
    /**
     * 出入库类型
     */
    private String cbodytranstypecode;
    /**
     * 库存仓库
     */
    private String cbodywarehouseid;
    /**
     * 对应入库单表体主键
     */
    private String ccorrespondbid;
    /**
     * 对应入库单单据号
     */
    private String ccorrespondcode;
    /**
     * 对应入库单主键
     */
    private String ccorrespondhid;
    /**
     * 对应入库单行号
     */
    private String ccorrespondrowno;
    /**
     * 对应入库单交易类型
     */
    private String ccorrespondtranstype;
    /**
     * 对应入库单类型
     */
    private String ccorrespondtype;
    /**
     * 特征码
     */
    private String cffileid;
    /**
     * 源头单据表体主键
     */
    private String cfirstbillbid;
    /**
     * 源头单据表头主键
     */
    private String cfirstbillhid;
    /**
     * 源头单据交易类型
     */
    private String cfirsttranstype;
    /**
     * 源头单据类型
     */
    private String cfirsttype;
    /**
     * 入库单表体主键
     */
    private String cgeneralbid;
    /**
     * 入库利润中心
     */
    private String cliabilityoid;
    /**
     * 入库利润中心
     */
    private String cliabilityvid;
    /**
     * 货位
     */
    private String clocationid;
    /**
     * 物料
     */
    private String cmaterialoid;
    /**
     * 物料编码
     */
    private String cmaterialvid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 生产厂商
     */
    private String cproductorid;
    /**
     * 项目
     */
    private String cprojectid;
    /**
     * 质量等级
     */
    private String cqualitylevelid;
    /**
     * 行号
     */
    private String crowno;
    /**
     * 选择拆解单位
     */
    private String cselastunitid;
    /**
     * 序列号质量等级
     */
    private String csnqualitylevelid;
    /**
     * 序列号单位
     */
    private String csnunitid;
    /**
     * 来源单据交易类型
     */
    private String csourcetranstype;
    /**
     * 其他来源单行主键
     */
    private String csrc2billbid;
    /**
     * 其他来源单主键
     */
    private String csrc2billhid;
    /**
     * 其他来源单据类型编码
     */
    private String csrc2billtype;
    /**
     * 其他来源交易类型编码
     */
    private String csrc2transtype;
    /**
     * 库存状态
     */
    private String cstateid;
    /**
     * 货主客户
     */
    private String ctplcustomerid;
    /**
     * 主单位
     */
    private String cunitid;
    /**
     * 供应商
     */
    private String cvendorid;
    /**
     * 寄存供应商
     */
    private String cvmivenderid;
    /**
     * 入库日期
     */
    private String dbizdate;
    /**
     * 首次入库日期
     */
    private String dinbounddate;
    /**
     * 生产日期
     */
    private String dproducedate;
    /**
     * 失效日期
     */
    private String dvalidate;
    /**
     * 批次版本号
     */
    private Integer ibcversion;
    /**
     * 拆解类型
     */
    private Integer idesatype;
    /**
     * 实收数量
     */
    private Double nassistnum;
    /**
     * 条码主数量
     */
    private Double nbarcodenum;
    /**
     * 累计出库数量
     */
    private Double ncorrespondastnum;
    /**
     * 累计出库毛重主数量
     */
    private Double ncorrespondgrsnum;
    /**
     * 累计出库主数量
     */
    private Double ncorrespondnum;
    /**
     * 金额
     */
    private Double ncostmny;
    /**
     * 单价
     */
    private Double ncostprice;
    /**
     * 箱数
     */
    private Double ncountnum;
    /**
     * 费用结算次数
     */
    private Integer nfeesettlecount;
    /**
     * 毛重主数量
     */
    private Double ngrossnum;
    /**
     * 件数
     */
    private Double npiece;
    /**
     * 计划金额
     */
    private Double nplannedmny;
    /**
     * 计划单价
     */
    private Double nplannedprice;
    /**
     * 应收数量
     */
    private Double nshouldassistnum;
    /**
     * 皮重主数量
     */
    private Double ntarenum;
    /**
     * 累计拣配主数量
     */
    private Double ntotalpicknum;
    /**
     * 体积
     */
    private Double nvolume;
    /**
     * 重量
     */
    private Double nweight;
    /**
     * 批次主键
     */
    private String pk_batchcode;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 计量器具
     */
    private String pk_measware;
    /**
     * 库存组织最新版本
     */
    private String pk_org;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 包装类型
     */
    private String pk_packsort;
    /**
     * 序列号主键
     */
    private String pk_serialcode;
    /**
     * 批次时间戳
     */
    private String tbcts;
    /**
     * 检验时间
     */
    private String tchecktime;
    /**
     * 来源表体时间戳
     */
    private String tsourcebodyts;
    /**
     * 来源表头时间戳
     */
    private String tsourceheadts;
    /**
     * 批次号
     */
    private String vbatchcode;
    /**
     * 批次备注
     */
    private String vbatchcodenote;
    // 批次自定义项(vbcdef1 - vbcdef20)
    private String vbcdef1;
    private String vbcdef2;
    private String vbcdef3;
    private String vbcdef4;
    private String vbcdef5;
    private String vbcdef6;
    private String vbcdef7;
    private String vbcdef8;
    private String vbcdef9;
    private String vbcdef10;
    private String vbcdef11;
    private String vbcdef12;
    private String vbcdef13;
    private String vbcdef14;
    private String vbcdef15;
    private String vbcdef16;
    private String vbcdef17;
    private String vbcdef18;
    private String vbcdef19;
    private String vbcdef20;
    // 表体自定义项(vbdef1 - vbdef20)
    private String vbdef1;
    private String vbdef2;
    private String vbdef3;
    private String vbdef4;
    private String vbdef5;
    private String vbdef6;
    private String vbdef7;
    private String vbdef8;
    private String vbdef9;
    private String vbdef10;
    private String vbdef11;
    private String vbdef12;
    private String vbdef13;
    private String vbdef14;
    private String vbdef15;
    private String vbdef16;
    private String vbdef17;
    private String vbdef18;
    private String vbdef19;
    private String vbdef20;
    /**
     * 单据条码
     */
    private String vbillbarcode;
    /**
     * 来自于零售之单据类型
     */
    private String vbilltypeu8rm;
    /**
     * 换算率
     */
    private String vchangerate;
    /**
     * 源头单据号
     */
    private String vfirstbillcode;
    /**
     * 源头单据行号
     */
    private String vfirstrowno;
    // 自由辅助属性(vfree1 - vfree10)
    private String vfree1;
    private String vfree2;
    private String vfree3;
    private String vfree4;
    private String vfree5;
    private String vfree6;
    private String vfree7;
    private String vfree8;
    private String vfree9;
    private String vfree10;
    /**
     * 行备注
     */
    private String vnotebody;
    /**
     * 序列号
     */
    private String vserialcode;
    // 序列号自定义项(vsndef1 - vsndef40)
    private String vsndef1;
    private String vsndef2;
    private String vsndef3;
    private String vsndef4;
    private String vsndef5;
    private String vsndef6;
    private String vsndef7;
    private String vsndef8;
    private String vsndef9;
    private String vsndef10;
    private String vsndef11;
    private String vsndef12;
    private String vsndef13;
    private String vsndef14;
    private String vsndef15;
    private String vsndef16;
    private String vsndef17;
    private String vsndef18;
    private String vsndef19;
    private String vsndef20;
    private String vsndef21;
    private String vsndef22;
    private String vsndef23;
    private String vsndef24;
    private String vsndef25;
    private String vsndef26;
    private String vsndef27;
    private String vsndef28;
    private String vsndef29;
    private String vsndef30;
    private String vsndef31;
    private String vsndef32;
    private String vsndef33;
    private String vsndef34;
    private String vsndef35;
    private String vsndef36;
    private String vsndef37;
    private String vsndef38;
    private String vsndef39;
    private String vsndef40;
    /**
     * 来源单据号
     */
    private String vsourcebillcode;
    /**
     * 来源单据行号
     */
    private String vsourcerowno;
    /**
     * 其他来源单据号
     */
    private String vsrc2billcode;
    /**
     * 其他来源单行号
     */
    private String vsrc2billrowno;
    /**
     * 收货车号
     */
    private String vtransfercode;
    /**
     * 来自于零售之交易类型
     */
    private String vtranstypeu8rm;
    /**
     * 运输工具号
     */
    private String vvehiclecode;
    /**
     * 供应商批次号
     */
    private String vvendbatchcode;
}
src/main/java/com/zy/nc/vo/GeneralInHeadVO.java
New file
@@ -0,0 +1,205 @@
package com.zy.nc.vo;
import lombok.Data;
/**
 * 入库单实体类
 */
@Data
public class GeneralInHeadVO {
    /**
     * 库存组织最新版本(必填)
     */
    private String pk_org;
    /**
     * 仓库(必填)
     */
    private String cwarehouseid;
    /**
     * 签字人
     */
    private String approver;
    /**
     * 制单人
     */
    private String billmaker;
    /**
     * 业务员
     */
    private String cbizid;
    /**
     * 部门最新版本
     */
    private String cdptid;
    /**
     * 部门
     */
    private String cdptvid;
    /**
     * 入库单表头主键
     */
    private String cgeneralhid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 出库库存组织
     */
    private String cothercalbodyoid;
    /**
     * 出库库存组织版本
     */
    private String cothercalbodyvid;
    /**
     * 出库仓库
     */
    private String cotherwhid;
    /**
     * 创建时间
     */
    private String creationtime;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 出入库类型
     */
    private String ctrantypeid;
    /**
     * 库管员
     */
    private String cwhsmanagerid;
    /**
     * 单据日期
     */
    private String dbilldate;
    /**
     * 制单日期
     */
    private String dmakedate;
    /**
     * 单据状态
     */
    private Integer fbillflag;
    /**
     * 打印次数
     */
    private Integer iprintcount;
    /**
     * 最后修改时间
     */
    private String modifiedtime;
    /**
     * 最后修改人
     */
    private String modifier;
    /**
     * 总数量
     */
    private Double ntotalnum;
    /**
     * 总件数
     */
    private Double ntotalpiece;
    /**
     * 总体积
     */
    private Double ntotalvolume;
    /**
     * 总重量
     */
    private Double ntotalweight;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 计量器具
     */
    private String pk_measware;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 签字日期
     */
    private String taudittime;
    /**
     * 单据号
     */
    private String vbillcode;
    // 表头自定义项(vdef1 - vdef20)
    private String vdef1;
    private String vdef2;
    private String vdef3;
    private String vdef4;
    private String vdef5;
    private String vdef6;
    private String vdef7;
    private String vdef8;
    private String vdef9;
    private String vdef10;
    private String vdef11;
    private String vdef12;
    private String vdef13;
    private String vdef14;
    private String vdef15;
    private String vdef16;
    private String vdef17;
    private String vdef18;
    private String vdef19;
    private String vdef20;
    /**
     * 备注
     */
    private String vnote;
    /**
     * 出入库类型编码
     */
    private String vtrantypecode;
}
src/main/java/com/zy/nc/vo/WhsTransBillBodyVO.java
New file
@@ -0,0 +1,337 @@
package com.zy.nc.vo;
import lombok.Data;
/**
 * 转库单表体实体类
 */
@Data
public class WhsTransBillBodyVO {
    /**
     * 客户
     */
    private String casscustid;
    /**
     * 单位
     */
    private String castunitid;
    /**
     * 库存仓库
     */
    private String cbodywarehouseid;
    /**
     * 特征码
     */
    private String cffileid;
    /**
     * 源头单据表体
     */
    private String cfirstbillbid;
    /**
     * 源头单据表头
     */
    private String cfirstbillhid;
    /**
     * 源头交易类型
     */
    private String cfirsttranstype;
    /**
     * 源头单据类型
     */
    private String cfirsttype;
    /**
     * 货位
     */
    private String clocationid;
    /**
     * 物料(必填)
     */
    private String cmaterialoid;
    /**
     * 物料编码
     */
    private String cmaterialvid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 生产厂商
     */
    private String cproductorid;
    /**
     * 项目
     */
    private String cprojectid;
    /**
     * 质量等级
     */
    private String cqualitylevelid;
    /**
     * 行号
     */
    private String crowno;
    /**
     * 来源单据表体行主键
     */
    private String csourcebillbid;
    /**
     * 来源单据表头主键
     */
    private String csourcebillhid;
    /**
     * 来源交易类型
     */
    private String csourcetranstype;
    /**
     * 来源单据类型
     */
    private String csourcetype;
    /**
     * 转库单表体主键
     */
    private String cspecialbid;
    /**
     * 库存状态
     */
    private String cstateid;
    /**
     * 货主客户
     */
    private String ctplcustomerid;
    /**
     * 主单位
     */
    private String cunitid;
    /**
     * 供应商
     */
    private String cvendorid;
    /**
     * 寄存供应商
     */
    private String cvmivenderid;
    /**
     * 生产日期
     */
    private String dproducedate;
    /**
     * 失效日期
     */
    private String dvalidate;
    /**
     * 应转数量
     */
    private Double nassistnum;
    /**
     * 金额
     */
    private Double ncostmny;
    /**
     * 单价
     */
    private Double ncostprice;
    /**
     * 应转出毛重数量
     */
    private Double ngrossnum;
    /**
     * 应转主数量(必填)
     */
    private Double nnum;
    /**
     * 在途主数量
     */
    private Double nonroadnum;
    /**
     * 累计入库毛重数量
     */
    private Double ntransingrossnum;
    /**
     * 累计入库主数量
     */
    private Double ntransinnum;
    /**
     * 累计出库毛重数量
     */
    private Double ntransoutgrossnum;
    /**
     * 累计出库主数量
     */
    private Double ntransoutnum;
    /**
     * 批次主键
     */
    private String pk_batchcode;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 库存组织最新版本
     */
    private String pk_org;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 检验时间
     */
    private String tchecktime;
    /**
     * 批次号
     */
    private String vbatchcode;
    /**
     * 批次备注
     */
    private String vbatchcodenote;
    // 批次自定义项(vbcdef1 - vbcdef20)
    private String vbcdef1;
    private String vbcdef2;
    private String vbcdef3;
    private String vbcdef4;
    private String vbcdef5;
    private String vbcdef6;
    private String vbcdef7;
    private String vbcdef8;
    private String vbcdef9;
    private String vbcdef10;
    private String vbcdef11;
    private String vbcdef12;
    private String vbcdef13;
    private String vbcdef14;
    private String vbcdef15;
    private String vbcdef16;
    private String vbcdef17;
    private String vbcdef18;
    private String vbcdef19;
    private String vbcdef20;
    // 表体自定义项(vbdef1 - vbdef20)
    private String vbdef1;
    private String vbdef2;
    private String vbdef3;
    private String vbdef4;
    private String vbdef5;
    private String vbdef6;
    private String vbdef7;
    private String vbdef8;
    private String vbdef9;
    private String vbdef10;
    private String vbdef11;
    private String vbdef12;
    private String vbdef13;
    private String vbdef14;
    private String vbdef15;
    private String vbdef16;
    private String vbdef17;
    private String vbdef18;
    private String vbdef19;
    private String vbdef20;
    /**
     * 换算率
     */
    private String vchangerate;
    /**
     * 源头单据号
     */
    private String vfirstbillcode;
    /**
     * 源头单据行号
     */
    private String vfirstrowno;
    // 自由辅助属性(vfree1 - vfree10)
    private String vfree1;
    private String vfree2;
    private String vfree3;
    private String vfree4;
    private String vfree5;
    private String vfree6;
    private String vfree7;
    private String vfree8;
    private String vfree9;
    private String vfree10;
    /**
     * 行备注
     */
    private String vnotebody;
    /**
     * 来源单据号
     */
    private String vsourcebillcode;
    /**
     * 来源单据行号
     */
    private String vsourcerowno;
    /**
     * 供应商批次号
     */
    private String vvendorbatchcode;
    // 以下为getter和setter方法,构造函数等可以根据需求生成
}
src/main/java/com/zy/nc/vo/WhsTransBillHeaderVO.java
New file
@@ -0,0 +1,207 @@
package com.zy.nc.vo;
import lombok.Data;
/**
 * 转库单实体类
 */
@Data
public class WhsTransBillHeaderVO {
    /**
     * 审核人
     */
    private String approver;
    /**
     * 制单人
     */
    private String billmaker;
    /**
     * 待审批
     */
    private String bwaitaudit;
    /**
     * 转出人
     */
    private String cauditorid;
    /**
     * 出库业务员
     */
    private String cbizid;
    /**
     * 出库部门最新版本
     */
    private String cdptid;
    /**
     * 出库部门
     */
    private String cdptvid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 入库业务员
     */
    private String cotherbizid;
    /**
     * 入库部门最新版本
     */
    private String cotherdptid;
    /**
     * 入库部门
     */
    private String cotherdptvid;
    /**
     * 入库仓库(必填)
     */
    private String cotherwhid;
    /**
     * 创建时间
     */
    private String creationtime;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 转库单主键
     */
    private String cspécialhid;
    /**
     * 转库类型(必填)
     */
    private String ctrantypeid;
    /**
     * 出库仓库(必填)
     */
    private String cwarehouseid;
    /**
     * 单据日期
     */
    private String dbilldate;
    /**
     * 制单日期
     */
    private String dmakedate;
    /**
     * 应到货日期
     */
    private String dshldarrivedate;
    /**
     * 应发货日期
     */
    private String dshlddiliverdate;
    /**
     * 单据状态
     */
    private Integer fbillflag;
    /**
     * 打印次数
     */
    private Integer iprintcount;
    /**
     * 是否退料
     */
    private String isbackdeliver;
    /**
     * 最后修改时间
     */
    private String modifiedtime;
    /**
     * 最后修改人
     */
    private String modifier;
    /**
     * 总数量
     */
    private Double ntotalnum;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 库存组织最新版本(必填)
     */
    private String pk_org;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 审核日期
     */
    private String taudittime;
    /**
     * 转入人
     */
    private String vadjuster;
    /**
     * 单据号
     */
    private String vbillcode;
    /**
     * 表头自定义项1
     */
    private String vdef1;
    /**
     * 表头自定义项2
     */
    private String vdef2;
    // 此处省略了vdef3至vdef20的字段,根据需要添加
    /**
     * 备注
     */
    private String vnote;
    /**
     * 转库类型编码
     */
    private String vtrantypecode;
    // 以下为getter和setter方法,构造函数等可以根据需求生成
}
src/main/java/com/zy/nc/vo/ic_generalout_b.java
New file
@@ -0,0 +1,4 @@
package com.zy.nc.vo;
public class ic_generalout_b {
}
src/main/java/com/zy/nc/vo/ic_generalout_h.java
New file
@@ -0,0 +1,859 @@
package com.zy.nc.vo;
import lombok.Data;
import java.util.Date;
/**
 * 普通出库单表体实体类
 */
@Data
public class ic_generalout_h {
    /**
     * 库存组织最新版本(必填)
     */
    private String pk_org;
    /**
     * 仓库(必填)
     */
    private String cwarehouseid;
    /**
     * 签字人
     */
    private String approver;
    /**
     * 制单人
     */
    private String billmaker;
    /**
     * 业务员
     */
    private String cbizid;
    /**
     * 运输方式
     */
    private String cdilivertypeid;
    /**
     * 部门最新版本
     */
    private String cdptid;
    /**
     * 部门
     */
    private String cdptvid;
    /**
     * 普通出库单表体主键
     */
    private String cgeneralbid;
    /**
     * 普通出库单表头主键
     */
    private String cgeneralhid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 入库库存组织最新版本
     */
    private String cothercalbodyoid;
    /**
     * 入库库存组织
     */
    private String cothercalbodyvid;
    /**
     * 入库仓库
     */
    private String cotherwhid;
    /**
     * 创建时间
     */
    private Date creationtime;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 出入库类型
     */
    private String ctrantypeid;
    /**
     * 库管员
     */
    private String cwhsmanagerid;
    /**
     * 单据日期
     */
    private Date dbilldate;
    /**
     * 制单日期
     */
    private Date dmakedate;
    /**
     * 单据状态
     */
    private Boolean fbillflag;
    /**
     * 打印次数
     */
    private Integer iprintcount;
    /**
     * 最后修改时间
     */
    private Date modifiedtime;
    /**
     * 最后修改人
     */
    private String modifier;
    /**
     * 总数量
     */
    private Double ntotalnum;
    /**
     * 总件数
     */
    private Double ntotalpiece;
    /**
     * 总体积
     */
    private Double ntotalvolume;
    /**
     * 总重量
     */
    private Double ntotalweight;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 计量器具
     */
    private String pk_measware;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 签字日期
     */
    private Date taudittime;
    /**
     * 物流组织最新版本
     */
    private String trafficorgoid;
    /**
     * 物流组织
     */
    private String trafficorgvid;
    /**
     * 单据号
     */
    private String vbillcode;
    // 表头自定义项(vdef1 - vdef20)
    private String vdef1;
    private String vdef2;
    private String vdef3;
    private String vdef4;
    private String vdef5;
    private String vdef6;
    private String vdef7;
    private String vdef8;
    private String vdef9;
    private String vdef10;
    private String vdef11;
    private String vdef12;
    private String vdef13;
    private String vdef14;
    private String vdef15;
    private String vdef16;
    private String vdef17;
    private String vdef18;
    private String vdef19;
    private String vdef20;
    /**
     * 运输地址
     */
    private String vdiliveraddress;
    /**
     * 备注
     */
    private String vnote;
    /**
     * 出入库类型编码
     */
    private String vtrantypecode;
    /**
     * 物料编码(必填)
     */
    private String cmaterialvid;
    /**
     * 货位(必填)
     */
    private String clocationid;
    /**
     * 应发数量(必填)
     */
    private Double nshouldassistnum;
    /**
     * 单据行是否条码关闭
     */
    private Boolean bbarcodeclose;
    /**
     * 是否在途
     */
    private Boolean bonroadflag;
    /**
     * 客户
     */
    private String casscustid;
    /**
     * 单位
     */
    private String castunitid;
    /**
     * 出入库类型
     */
    private String cbodytranstypecode;
    /**
     * 库存仓库
     */
    private String cbodywarehouseid;
    /**
     * 对应入库单表体主键
     */
    private String ccorrespondbid;
    /**
     * 对应入库单号
     */
    private String ccorrespondcode;
    /**
     * 对应入库单表头主键
     */
    private String ccorrespondhid;
    /**
     * 对应入库单行号
     */
    private String ccorrespondrowno;
    /**
     * 对应入库单交易类型
     */
    private String ccorrespondtranstype;
    /**
     * 对应入库单类型
     */
    private String ccorrespondtype;
    /**
     * 成本对象
     */
    private String ccostobject;
    /**
     * 特征码
     */
    private String cffileid;
    /**
     * 源头单据表体主键
     */
    private String cfirstbillbid;
    /**
     * 源头单据表头主键
     */
    private String cfirstbillhid;
    /**
     * 源头单据交易类型
     */
    private String cfirsttranstype;
    /**
     * 源头单据类型
     */
    private String cfirsttype;
    /**
     * 普通出库单货位单品表主键
     */
    private String cgenerallid;
    /**
     * 出库利润中心
     */
    private String cliabilityoid;
    /**
     * 出库利润中心
     */
    private String cliabilityvid;
    /**
     * 物料
     */
    private String cmaterialoid;
    /**
     * 成本要素
     */
    private String costclsidreason;
    /**
     * 生产厂商
     */
    private String cproductorid;
    /**
     * 项目
     */
    private String cprojectid;
    /**
     * 项目任务
     */
    private String cprojecttaskid;
    /**
     * 质量等级
     */
    private String cqualitylevelid;
    /**
     * 收货客户
     */
    private String creceieveid;
    /**
     * 收货地区
     */
    private String creceiveareaid;
    /**
     * 收货地点
     */
    private String creceivepointid;
    /**
     * 行号
     */
    private String crowno;
    /**
     * 选择拆解单位
     */
    private String cselastunitid;
    /**
     * 序列号质量等级
     */
    private String csnqualitylevelid;
    /**
     * 序列号单位
     */
    private String csnunitid;
    /**
     * 来源单据表体主键
     */
    private String csourcebillbid;
    /**
     * 来源单据表头主键
     */
    private String csourcebillhid;
    /**
     * 来源单据交易类型
     */
    private String csourcetranstype;
    /**
     * 来源单据类型
     */
    private String csourcetype;
    /**
     * 其他来源单行主键
     */
    private String csrc2billbid;
    /**
     * 其他来源单主键
     */
    private String csrc2billhid;
    /**
     * 其他来源单据类型编码
     */
    private String csrc2billtype;
    /**
     * 其他来源交易类型编码
     */
    private String csrc2transtype;
    /**
     * 库存状态
     */
    private String cstateid;
    /**
     * VMI汇总
     */
    private String csumid;
    /**
     * 货主客户
     */
    private String ctplcustomerid;
    /**
     * 主单位
     */
    private String cunitid;
    /**
     * 供应商
     */
    private String cvendorid;
    /**
     * 寄存供应商
     */
    private String cvmivenderid;
    /**
     * 出库日期
     */
    private Date dbizdate;
    /**
     * 首次入库日期
     */
    private Date dinbounddate;
    /**
     * 生产日期
     */
    private Date dproducedate;
    /**
     * 失效日期
     */
    private Date dvalidate;
    /**
     * 批次版本号
     */
    private Integer ibcversion;
    /**
     * 拆解类型
     */
    private Integer idesatype;
    /**
     * 累计汇总匹配主数量
     */
    private Double naccumvminum;
    /**
     * 实发数量
     */
    private Double nassistnum;
    /**
     * 条码数量
     */
    private Double nbarcodenum;
    /**
     * 累计出库数量
     */
    private Double ncorrespondastnum;
    /**
     * 累计出库毛重主数量
     */
    private Double ncorrespondgrsnum;
    /**
     * 累计出库主数量
     */
    private Double ncorrespondnum;
    /**
     * 金额
     */
    private Double ncostmny;
    /**
     * 单价
     */
    private Double ncostprice;
    /**
     * 箱数
     */
    private Double ncountnum;
    /**
     * 毛重主数量
     */
    private Double ngrossnum;
    /**
     * 实发主数量
     */
    private Double nnum;
    /**
     * 件数
     */
    private Double npiece;
    /**
     * 计划金额
     */
    private Double nplannedmny;
    /**
     * 计划单价
     */
    private Double nplannedprice;
    /**
     * 应发主数量
     */
    private Double nshouldnum;
    /**
     * 皮重主数量
     */
    private Double ntarenum;
    /**
     * 累计运输主数量
     */
    private Double ntotaltrannum;
    /**
     * 体积
     */
    private Double nvolume;
    /**
     * 重量
     */
    private Double nweight;
    /**
     * 批次主键
     */
    private String pk_batchcode;
    /**
     * 包装类型
     */
    private String pk_packsort;
    /**
     * 序列号主键
     */
    private String pk_serialcode;
    /**
     * 检验时间
     */
    private Date tchecktime;
    /**
     * 来源表体时间戳
     */
    private Date tsourcebodyts;
    /**
     * 来源表头时间戳
     */
    private Date tsourceheadts;
    /**
     * 批次号
     */
    private String vbatchcode;
    /**
     * 批次备注
     */
    private String vbatchcodenote;
    // 批次自定义项(vbcdef1 - vbcdef20)
    private String vbcdef1;
    private String vbcdef2;
    private String vbcdef3;
    private String vbcdef4;
    private String vbcdef5;
    private String vbcdef6;
    private String vbcdef7;
    private String vbcdef8;
    private String vbcdef9;
    private String vbcdef10;
    private String vbcdef11;
    private String vbcdef12;
    private String vbcdef13;
    private String vbcdef14;
    private String vbcdef15;
    private String vbcdef16;
    private String vbcdef17;
    private String vbcdef18;
    private String vbcdef19;
    private String vbcdef20;
    // 表体自定义项(vbdef1 - vbdef20)
    private String vbdef1;
    private String vbdef2;
    private String vbdef3;
    private String vbdef4;
    private String vbdef5;
    private String vbdef6;
    private String vbdef7;
    private String vbdef8;
    private String vbdef9;
    private String vbdef10;
    private String vbdef11;
    private String vbdef12;
    private String vbdef13;
    private String vbdef14;
    private String vbdef15;
    private String vbdef16;
    private String vbdef17;
    private String vbdef18;
    private String vbdef19;
    private String vbdef20;
    /**
     * 单据条码
     */
    private String vbillbarcode;
    /**
     * 来自于零售之单据类型
     */
    private String vbilltypeu8rm;
    /**
     * 换算率
     */
    private String vchangerate;
    /**
     * 紧急放行申请单行主键
     */
    private String vexigencybid;
    /**
     * 紧急放行申请单号
     */
    private String vexigencycode;
    /**
     * 紧急放行申请单主键
     */
    private String vexigencyhid;
    /**
     * 紧急放行申请单行号
     */
    private String vexigencyrowno;
    /**
     * 紧急放行单据类型
     */
    private String vexigencytype;
    /**
     * 源头单据号
     */
    private String vfirstbillcode;
    /**
     * 源头单据行号
     */
    private String vfirstrowno;
    // 自由辅助属性(vfree1 - vfree10)
    private String vfree1;
    private String vfree2;
    private String vfree3;
    private String vfree4;
    private String vfree5;
    private String vfree6;
    private String vfree7;
    private String vfree8;
    private String vfree9;
    private String vfree10;
    /**
     * 行备注
     */
    private String vnotebody;
    /**
     * 生产订单号
     */
    private String vproductbatch;
    /**
     * 收货地址
     */
    private String vreceiveaddress;
    /**
     * 序列号
     */
    private String vserialcode;
    // 序列号自定义项(vsndef1 - vsndef40)
    private String vsndef1;
    private String vsndef2;
    private String vsndef3;
    private String vsndef4;
    private String vsndef5;
    private String vsndef6;
    private String vsndef7;
    private String vsndef8;
    private String vsndef9;
    private String vsndef10;
    private String vsndef11;
    private String vsndef12;
    private String vsndef13;
    private String vsndef14;
    private String vsndef15;
    private String vsndef16;
    private String vsndef17;
    private String vsndef18;
    private String vsndef19;
    private String vsndef20;
    private String vsndef21;
    private String vsndef22;
    private String vsndef23;
    private String vsndef24;
    private String vsndef25;
    private String vsndef26;
    private String vsndef27;
    private String vsndef28;
    private String vsndef29;
    private String vsndef30;
    private String vsndef31;
    private String vsndef32;
    private String vsndef33;
    private String vsndef34;
    private String vsndef35;
    private String vsndef36;
    private String vsndef37;
    private String vsndef38;
    private String vsndef39;
    private String vsndef40;
    /**
     * 来源单据号
     */
    private String vsourcebillcode;
    /**
     * 来源单据行号
     */
    private String vsourcerowno;
    /**
     * 其他来源单据号
     */
    private String vsrc2billcode;
    /**
     * 其他来源单行号
     */
    private String vsrc2billrowno;
    /**
     * 收货车号
     */
    private String vtransfercode;
    /**
     * 来自于零售之交易类型
     */
    private String vtranstypeu8rm;
    /**
     * 运输工具号
     */
    private String vvehiclecode;
    /**
     * 供应商批次号
     */
    private String vvendbatchcode;
}
src/main/java/com/zy/nc/vo/ic_purchasein_b.java
New file
@@ -0,0 +1,297 @@
package com.zy.nc.vo;
import lombok.Data;
import java.util.Date;
/**
 * 入库单表体实体类
 */
@Data
public class ic_purchasein_b {
    /**
     * 库存组织最新版本(必填)
     */
    private String pk_org;
    /**
     * 仓库(必填)
     */
    private String cwarehouseid;
    /**
     * 签字人
     */
    private String approver;
    /**
     * 制单人
     */
    private String billmaker;
    /**
     * 进口入库单
     */
    private String bitinbill;
    /**
     * 三角贸易
     */
    private String btriatradeflag;
    /**
     * 采购员
     */
    private String cbizid;
    /**
     * 业务流程
     */
    private String cbiztype;
    /**
     * 结算成本域
     */
    private String ccostdomainid;
    /**
     * 收货客户
     */
    private String ccustomerid;
    /**
     * 采购部门最新版本
     */
    private String cdptid;
    /**
     * 采购部门
     */
    private String cdptvid;
    /**
     * 结算财务组织最新版本
     */
    private String cfanaceorgoid;
    /**
     * 结算财务组织
     */
    private String cfanaceorgvid;
    /**
     * 入库单表体主键
     */
    private String cgeneralbid;
    /**
     * 入库单表头主键
     */
    private String cgeneralhid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 应付财务组织最新版本
     */
    private String cpayfinorgoid;
    /**
     * 应付财务组织
     */
    private String cpayfinorgvid;
    /**
     * 采购组织
     */
    private String cpurorgoid;
    /**
     * 采购组织最新版本
     */
    private String cpurorgvid;
    /**
     * 创建时间
     */
    private Date creationtime;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 收货国
     */
    private String crececountryid;
    /**
     * 发货国
     */
    private String csendcountryid;
    /**
     * 运输方式
     */
    private String csendtypeid;
    /**
     * 报税国
     */
    private String ctaxcountryid;
    /**
     * 贸易术语
     */
    private String ctradewordid;
    /**
     * 出入库类型
     */
    private String ctrantypeid;
    /**
     * 供应商
     */
    private String cvendorid;
    /**
     * 库管员
     */
    private String cwhsmanagerid;
    /**
     * 单据日期
     */
    private Date dbilldate;
    /**
     * 制单日期
     */
    private Date dmakedate;
    /**
     * 单据状态
     */
    private Boolean fbillflag;
    /**
     * 购销类型
     */
    private Boolean fbuysellflag;
    /**
     * 采购退库
     */
    private Boolean freplenishflag;
    /**
     * 打印次数
     */
    private Integer iprintcount;
    /**
     * 最后修改时间
     */
    private Date modifiedtime;
    /**
     * 最后修改人
     */
    private String modifier;
    /**
     * 总数量
     */
    private Double ntotalnum;
    /**
     * 总件数
     */
    private Double ntotalpiece;
    /**
     * 总体积
     */
    private Double ntotalvolume;
    /**
     * 总重量
     */
    private Double ntotalweight;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 计量器具
     */
    private String pk_measware;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 签字日期
     */
    private Date taudittime;
    /**
     * 单据号
     */
    private String vbillcode;
    // 表头自定义项(vdef1 - vdef20)
    private String vdef1;
    private String vdef2;
    private String vdef3;
    private String vdef4;
    private String vdef5;
    private String vdef6;
    private String vdef7;
    private String vdef8;
    private String vdef9;
    private String vdef10;
    private String vdef11;
    private String vdef12;
    private String vdef13;
    private String vdef14;
    private String vdef15;
    private String vdef16;
    private String vdef17;
    private String vdef18;
    private String vdef19;
    private String vdef20;
    /**
     * 备注
     */
    private String vnote;
    /**
     * 退库理由
     */
    private String vreturnreason;
    /**
     * 出入库类型编码
     */
    private String vtrantypecode;
}
src/main/java/com/zy/nc/vo/ic_purchasein_h.java
New file
@@ -0,0 +1,300 @@
package com.zy.nc.vo;
import lombok.Data;
import java.util.Date;
/**
 * 入库单实体类
 */
@Data
public class ic_purchasein_h {
    /**
     * 库存组织最新版本(必填)
     */
    private String pk_org;
    /**
     * 仓库(必填)
     */
    private String cwarehouseid;
    /**
     * 签字人
     */
    private String approver;
    /**
     * 制单人
     */
    private String billmaker;
    /**
     * 进口入库单
     */
    private String bitinbill;
    /**
     * 三角贸易
     */
    private String btriatradeflag;
    /**
     * 采购员
     */
    private String cbizid;
    /**
     * 业务流程
     */
    private String cbiztype;
    /**
     * 结算成本域
     */
    private String ccostdomainid;
    /**
     * 收货客户
     */
    private String ccustomerid;
    /**
     * 采购部门最新版本
     */
    private String cdptid;
    /**
     * 采购部门
     */
    private String cdptvid;
    /**
     * 结算财务组织最新版本
     */
    private String cfanaceorgoid;
    /**
     * 结算财务组织
     */
    private String cfanaceorgvid;
    /**
     * 入库单表体主键
     */
    private String cgeneralbid;
    /**
     * 入库单表头主键
     */
    private String cgeneralhid;
    /**
     * 公司最新版本
     */
    private String corpoid;
    /**
     * 公司
     */
    private String corpvid;
    /**
     * 应付财务组织最新版本
     */
    private String cpayfinorgoid;
    /**
     * 应付财务组织
     */
    private String cpayfinorgvid;
    /**
     * 采购组织
     */
    private String cpurorgoid;
    /**
     * 采购组织最新版本
     */
    private String cpurorgvid;
    /**
     * 创建时间
     */
    private Date creationtime;
    /**
     * 创建人
     */
    private String creator;
    /**
     * 收货国
     */
    private String crececountryid;
    /**
     * 发货国
     */
    private String csendcountryid;
    /**
     * 运输方式
     */
    private String csendtypeid;
    /**
     * 报税国
     */
    private String ctaxcountryid;
    /**
     * 贸易术语
     */
    private String ctradewordid;
    /**
     * 出入库类型
     */
    private String ctrantypeid;
    /**
     * 供应商
     */
    private String cvendorid;
    /**
     * 库管员
     */
    private String cwhsmanagerid;
    /**
     * 单据日期
     */
    private Date dbilldate;
    /**
     * 制单日期
     */
    private Date dmakedate;
    /**
     * 单据状态
     */
    private String fbillflag;
    /**
     * 购销类型
     */
    private String fbuysellflag;
    /**
     * 采购退库
     */
    private String freplenishflag;
    /**
     * 打印次数
     */
    private Integer iprintcount;
    /**
     * 最后修改时间
     */
    private Date modifiedtime;
    /**
     * 最后修改人
     */
    private String modifier;
    /**
     * 总数量
     */
    private Double ntotalnum;
    /**
     * 总件数
     */
    private Double ntotalpiece;
    /**
     * 总体积
     */
    private Double ntotalvolume;
    /**
     * 总重量
     */
    private Double ntotalweight;
    /**
     * 集团
     */
    private String pk_group;
    /**
     * 计量器具
     */
    private String pk_measware;
    /**
     * 库存组织
     */
    private String pk_org_v;
    /**
     * 签字日期
     */
    private Date taudittime;
    /**
     * 单据号
     */
    private String vbillcode;
    // 表头自定义项(vdef1 - vdef20)
    private String vdef1;
    private String vdef2;
    private String vdef3;
    private String vdef4;
    private String vdef5;
    private String vdef6;
    private String vdef7;
    private String vdef8;
    private String vdef9;
    private String vdef10;
    private String vdef11;
    private String vdef12;
    private String vdef13;
    private String vdef14;
    private String vdef15;
    private String vdef16;
    private String vdef17;
    private String vdef18;
    private String vdef19;
    private String vdef20;
    /**
     * 备注
     */
    private String vnote;
    /**
     * 退库理由
     */
    private String vreturnreason;
    /**
     * 出入库类型编码
     */
    private String vtrantypecode;
    // 以下为getter和setter方法,构造函数等可以根据需求生成
}
src/main/resources/mapper/asrs/OrderMapper.xml
@@ -55,6 +55,18 @@
        and id = #{orderId}
    </update>
    <update id="updateSettleStep">
        update man_order
        set settle = #{settle}
        ,update_time = getdate()
        ,step = #{step}
        <if test="userId != null">
            ,update_by = #{userId}
        </if>
        where 1=1
        and id = #{orderId}
    </update>
    <select id="selectComplete" resultMap="BaseResultMap">
        select top 5 *
        from man_order
src/main/resources/mapper/nc/NccBdCustomerWmsMapper.xml
@@ -15,6 +15,7 @@
            <result property="legalbody" column="LEGALBODY" />
            <result property="nlimitmny" column="NLIMITMNY" />
            <result property="wmsFlag" column="wms_flag" />
            <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccCgCgdhdWmsMapper.xml
@@ -36,6 +36,7 @@
            <result property="hts" column="HTS" />
            <result property="bts" column="BTS" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
@@ -46,4 +47,10 @@
        VMEMO,WLBM,WLMC,NNUM,NASTNUM,
        YDZSL,YDSL,HTS,BTS,wms_flag
    </sql>
    <select id="selectCg" resultType="java.lang.String">
        select distinct VBILLCODE
        from ncc_cg_cgdhd_wms
        where wms_flag != 1 and FBILLSTATUS = 2 limit 100
    </select>
</mapper>
src/main/resources/mapper/nc/NccCkPddWmsMapper.xml
@@ -35,6 +35,7 @@
            <result property="hts" column="HTS" />
            <result property="bts" column="BTS" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
@@ -45,4 +46,10 @@
        TMSL,ZMZSL,PDSL,SPZSL,HWBM,
        HWMC,HTS,BTS,wms_flag
    </sql>
    <select id="selectPdd" resultType="java.lang.String">
        select distinct VBILLCODE
        from ncc_ck_pdd_wms
        where wms_flag != 1 and FBILLFLAG = 2 limit 100
    </select>
</mapper>
src/main/resources/mapper/nc/NccJcBmWmsMapper.xml
@@ -16,6 +16,7 @@
            <result property="sssyb" column="SSSYB" />
            <result property="qyzt" column="QYZT" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccJcCkWmsMapper.xml
@@ -50,6 +50,7 @@
            <result property="storaddr" column="STORADDR" />
            <result property="ts" column="TS" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccJcCkhwMapper.xml
@@ -12,6 +12,7 @@
            <result property="hwbm" column="HWBM" />
            <result property="hwmc" column="HWMC" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccJcQilibcBarcodeflowWmsMapper.xml
@@ -16,6 +16,7 @@
            <result property="vbillno" column="VBILLNO" />
            <result property="nastnum" column="NASTNUM" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccJcRyWmsMapper.xml
@@ -17,6 +17,7 @@
            <result property="ssbmmc" column="SSBMMC" />
            <result property="sssyb" column="SSSYB" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccJcWlflWmsMapper.xml
@@ -13,6 +13,7 @@
            <result property="wljbfl" column="WLJBFL" />
            <result property="code1" column="CODE1" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccOrgCorpWmsMapper.xml
@@ -9,6 +9,7 @@
            <result property="name" column="NAME" />
            <result property="shortname" column="SHORTNAME" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccSaleDbckmxbMapper.xml
File was deleted
src/main/resources/mapper/nc/NccSaleXclGgsybWmsMapper.xml
New file
@@ -0,0 +1,11 @@
<?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.nc.mapper.NccSaleXclGgsybWmsMapper">
</mapper>
src/main/resources/mapper/nc/NccSaleXsckmxMapper.xml
File was deleted
src/main/resources/mapper/nc/NccSaleXsfhmxWmsMapper.xml
@@ -79,6 +79,7 @@
            <result property="kczzmc" column="KCZZMC" />
            <result property="vnote" column="VNOTE" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/NccScZkmxbWmsMapper.xml
@@ -59,6 +59,7 @@
            <result property="dr" column="DR" />
            <result property="ts" column="TS" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/resources/mapper/nc/VGetBdMaterialMapper.xml
@@ -48,6 +48,7 @@
            <result property="sjflbm" column="SJFLBM" />
            <result property="sjflmc" column="SJFLMC" />
            <result property="wmsFlag" column="wms_flag" />
        <result property="wmsMemo" column="wms_memo" />
    </resultMap>
    <sql id="Base_Column_List">
src/main/webapp/static/js/inventoryCheckOrder/inventoryCheakOrderTable.js
New file
@@ -0,0 +1,174 @@
var insTb;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"  // 配置模块所在的目录
}).use(['table','laydate', 'form',  'admin', 'tableX'], function() {
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    var tableX = layui.tableX;
    /****************************************** 左边表 *************************************************/
    insTb = table.render({
        elem: '#originTable',
        url: baseUrl + '/inventoryCheckOrder/nav/list/auth',
        height: 'full-120',
        headers: {token: localStorage.getItem('token')},
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        page: false,
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'data': res.data
            }
        },
        response: {
            statusCode: 200
        },
        // toolbar: ['<p>',
        //     '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>&nbsp;',
        //     '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon">&#xe642;</i>修改</button>&nbsp;',
        //     '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>删除</button>',
        //     '</p>'].join(''),
        defaultToolbar: [],
        cols: [[
            // {type: 'numbers', title: '#'},
            {field: 'createTime$', title: '日期'},
            {field: 'orderNo', title: '单据编号', align: 'center'},
            {field: 'status$', title: '状态', align: 'center'}
        ]],
        done: function (res, curr, count) {
            $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
            // // 绑定鼠标右键
            // tableX.bindCtxMenu('originTable', function (d) {
            //     return [
            //         {
            //             icon: 'layui-icon layui-icon-ok',
            //             name: '一键出库',
            //             click: function (d) {
            //                 autoOut(d.id);
            //             }
            //         }
            //     ]
            //
            // })
        }
    });
    /* 表格搜索 */
    form.on('submit(originTableSearch)', function (data) {
        insTb.reload({where: data.field});
        return false;
    });
    /* 表格重置 */
    form.on('submit(originTbReset)', function (data) {
        insTb.reload({where: null});
        insTb2.reload({where: null, page: {curr: 1}});
        return false;
    });
    /* 表格头工具栏点击事件 */
    table.on('toolbar(originTable)', function (obj) {
        if (obj.event === 'add') { // 添加
            showEdit();
        } else if (obj.event === 'edit') { // 修改
            if (selObj == null) {
                return;
            }
            showEdit(selObj.data);
        } else if (obj.event === 'del') { // 删除
            if (selObj == null) {
                return;
            }
            doDel(selObj);
        }
    });
    /* 监听行单击事件 */
    var selObj;
    table.on('row(originTable)', function (obj) {
        selObj = obj;
        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
        insTb2.reload({where: {order_id: obj.data.id}, page: {curr: 1}});
    });
    /* 显示表单弹窗 */
    function showEdit(mData) {
        admin.open({
            type: 1,
            title: (mData ? '修改' : '添加') + '项目',
            content: $('#hostEditDialog').html(),
            success: function (layero, dIndex) {
                // 回显表单数据
                form.val('hostEditForm', mData);
                // 表单提交事件
                form.on('submit(hostEditSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/host/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            selObj = null;
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                insTb.reload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
            }
        });
    }
    /* 删除 */
    function doDel(obj) {
        layer.confirm('确定要删除此单据类型吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/host/delete/one/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {param: JSON.stringify(obj.data)},
                method: 'POST',
                success: function (res) {
                    selObj = null;
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.closeAll();
                        insTb.reload();
                        $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
})
src/main/webapp/static/js/inventoryCheckOrder/inventoryCheckOrder.js
New file
@@ -0,0 +1,452 @@
var pageCurr;
var insTb2;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).extend({
    notice: 'notice/notice',
}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge', 'tableX'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    var util = layui.util;
    var notice = layui.notice;
    var treeTable = layui.treeTable;
    var xmSelect = layui.xmSelect;
    var tableMerge = layui.tableMerge;
    var tableX = layui.tableX;
    insTb2 = table.render({
        elem: '#orderDetlTable',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/inventoryCheckOrderDetl/pakout/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#orderDetToolbar',
        height: 'full-120',
        where: {order_id: 9999999999},
        cols: [[
            {type: 'checkbox'}
            ,{field: 'orderNo', align: 'center',title: '单据编号', templet: '#orderNoTpl'}
            ,{field: 'locNo', align: 'center',title: '库位'}
            ,{field: 'matnr', align: 'center',title: '商品编码', width: 160}
            ,{field: 'maktx', align: 'center',title: '商品名称', width: 200}
            ,{field: 'batch', align: 'center',title: '批次'}
            ,{field: 'anfme', align: 'center',title: '数量'}
            ,{field: 'checkAnfme', align: 'center',title: '盘点数量', style: 'font-weight: bold'}
            // ,{field: 'qty', align: 'center',title: '作业数量', style: 'font-weight: bold'}
            // ,{field: 'enableQty', align: 'center',title: '待出数量', style: 'font-weight: bold'}
            // ,{field: 'name', align: 'center',title: '名称'}
            // ,{field: 'model', align: 'center',title: '型号'}
            ,{field: 'unit', align: 'center',title: '单位', hide: true}
            ,{field: 'barcode', align: 'center',title: '商品条码', hide: true}
            // ,{field: 'supplier', align: 'center',title: '供应商'}
            // ,{field: 'unitPrice', align: 'center',title: '单价'}
            // ,{field: 'itemNum', align: 'center',title: '品项数'}
            // ,{field: 'count', align: 'center',title: '数量'}
            // ,{field: 'weight', align: 'center',title: '重量'}
            ,{field: 'profit$', align: 'center',title: '盈亏',templet: '#profitTpl'}
            ,{field: 'status$', align: 'center',title: '状态'}
            // ,{field: 'createBy$', align: 'center',title: '添加人员'}
            // ,{field: 'createTime$', align: 'center',title: '添加时间'}
            // ,{field: 'updateBy$', align: 'center',title: '修改人员'}
            // ,{field: 'updateTime$', align: 'center',title: '修改时间'}
            // ,{field: 'memo', align: 'center',title: '备注'}
            // ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 160}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    /* 表格2搜索 */
    form.on('submit(sensorTbSearch)', function (data) {
        insTb2.reload({where: data.field, page: {curr: 1}});
        return false;
    });
    // 显示弹框
    $('#showFormBtn').on('click', function () {
        // 弹框内容
        var content = `
                <form class="layui-form" id="billForm" style="padding: 20px;">
                    <div class="layui-form-item" style="margin-bottom: 20px;">
                        <label class="layui-form-label" style="width: 80px; font-size: 14px;">库区:</label>
                        <div class="layui-input-block" style="margin-left: 110px;">
                            <select id="warehouseArea" class="layui-input" style="width: 100%;">
                                <option value="堆垛机" selected>堆垛机</option>
                                <option value="四向库">四向库</option>
                                <option value="CTU">CTU</option>
                            </select>
                        </div>
                    </div>
                    <div class="layui-form-item" style="text-align: right;">
                        <button type="button" class="layui-btn" id="saveBtn" style="display: inline-block; padding: 0px 20px; font-size: 16px; background-color: #5FB878; border-color: #5FB878; text-align: center;">保存</button>
                    </div>
                </form>
            `;
        // 弹框
        layer.open({
            type: 1,  // 使用 HTML 内容
            title: '添加盘点单',
            content: content,
            area: ['400px', '280px'],  // 弹框大小
            shadeClose: true,  // 点击遮罩关闭
            offset: '100px',
            success: function (layero, index) {
                form.render();
                // 点击保存按钮事件
                $('#saveBtn').on('click', function () {
                    var billNumber = $('#billNumber').val();
                    var warehouseArea = $('#warehouseArea').val();
                });
            }
        });
    });
    /* 表格2头工具栏点击事件 */
    table.on('toolbar(orderDetlTable)', function (obj) {
        // console.log(obj.config.where.order_id);
        var checkStatus = table.checkStatus(obj.config.id).data;
        if (obj.event === 'pakoutPreview') { // 添加
            if (checkStatus.length === 0) {
                layer.msg('请选择至少一条出库明细', {icon: 2});
                return;
            }
            pakoutPreview(checkStatus.map(function (d) {
                return d.id;
            }));
        } else if (obj.event === 'del') { // 删除
            var checkRows = table.checkStatus('sensorTable');
            if (checkRows.data.length === 0) {
                layer.msg('请选择要删除的数据', {icon: 2});
                return;
            }
            var ids = checkRows.data.map(function (d) {
                return d.id;
            });
            doDelSensor({ids: ids});
        } else if (obj.event === 'submitERP') { // 提交erp
            $.ajax({
                url: baseUrl + "/mobile/checkOut/submit/auth",
                headers: {'token': localStorage.getItem('token')},
                // contentType: 'application/json;charset=UTF-8',
                data: {
                    orderId: obj.config.where.order_id
                },
                method: 'GET',
                success: function (res) {
                    notice.destroy();
                    if (res.code === 200) {
                        layer.msg(res.msg, {icon: 1});
                        insTb.reload({where: null});
                        insTb2.reload({where: null, page: {curr: 1}});
                    } else if (res.code === 403) {
                        top.location.href = baseUrl + "/";
                    } else {
                        layer.msg(res.msg, {icon: 2})
                    }
                }
            });
        }
    });
    /* 表格2工具条点击事件 */
    table.on('tool(orderDetlTable)', function (obj) {
        console.log(obj);
        var data = obj.data;
        switch (obj.event) {
            // 出库
            case 'pakoutPreview':
                pakoutPreview([data.id])
                break;
        }
    });
    function pakoutPreview(ids) {
        let loadIndex = layer.load(2);
        $.ajax({
            url: baseUrl + "/out/pakout/preview/auth/sxk",
            headers: {'token': localStorage.getItem('token')},
            contentType: 'application/json;charset=UTF-8',
            data: JSON.stringify(ids),
            method: 'POST',
            success: function (res) {
                layer.close(loadIndex);
                var tableCache;
                if (res.code === 200){
                    layer.open({
                        type: 1
                        ,title: false
                        ,closeBtn: false
                        ,offset: '50px'
                        ,area: ['1200px', '700px']
                        ,shade: 0.5
                        ,shadeClose: false
                        ,btn: ['立即出库', '稍后处理']
                        ,btnAlign: 'c'
                        ,moveType: 1 //拖拽模式,0或者1
                        ,content: $('#pakoutPreviewBox').html()
                        ,success: function(layero, index){
                            stoPreTabIdx = table.render({
                                elem: '#stoPreTab',
                                data: res.data,
                                height: 520,
                                page: false,
                                limit: Number.MAX_VALUE,
                                cellMinWidth: 100,
                                cols: [[
                                    // {type: 'checkbox', merge: ['orderNo']},
                                    {field: 'orderNo', title: '单据编号', merge: true, align: 'center'},
                                    {field: 'title', title: '商品', merge: true, align: 'center', width: 350},
                                    {field: 'batch', title: '序列码', align: 'center'},
                                    {field: 'anfme', title: '数量', align: 'center', width: 90, style: 'font-weight: bold'},
                                    {field: 'locNo', title: '货位', align: 'center', width: 100, templet: '#locNoTpl'},
                                    {field: 'staNos', align: 'center', title: '出库站', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
                                    {type: 'checkbox', merge: ['locNo']},
                                ]],
                                done: function (res) {
                                    tableMerge.render(this);
                                    $('.layui-table-body.layui-table-main').css("overflow", "auto");
                                    tableCache = tableData = table.cache.stoPreTab;
                                }
                            });
                            // 修改出库站
                            form.on('select(tbBasicTbStaNos)', function (obj) {
                                let index  = obj.othis.parents('tr').attr("data-index");
                                let data = tableCache[index];
                                for (let i = 0; i<tableCache.length; i++) {
                                    if (tableCache[i].locNo === data.locNo) {
                                        tableCache[i]['staNo'] = Number(obj.elem.value);
                                    }
                                }
                                obj.othis.children().find("input").css("color", "blue");
                                return false;
                            });
                            // 批量修改出库站
                            form.on('submit(batchModifySta)', function () {
                                let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
                                if (stoPreTabData.length < 1) {
                                    layer.msg("请至少选择一条以上合并数据", {icon: 7});
                                    return false;
                                }
                                modifySta(stoPreTabData);
                            });
                            // 批量修改出库站 - 站点选择
                            function modifySta(stoPreTabData) {
                                // 出库站取交集
                                let staBatchSelectVal = [];
                                for(let i = 0; i<stoPreTabData.length; i++) {
                                    let staNos = stoPreTabData[i].staNos;
                                    if (staNos !== null) {
                                        if (staBatchSelectVal.length === 0) {
                                            staBatchSelectVal = staNos;
                                        } else {
                                            staBatchSelectVal = staBatchSelectVal.filter(val =>
                                                {
                                                    return new Set(staNos).has(val)
                                                }
                                            )
                                        }
                                    }
                                }
                                if (staBatchSelectVal.length === 0) {
                                    layer.msg("出库站没有交集,无法批量修改", {icon: 2});
                                    return;
                                }
                                admin.open({
                                    type: 1,
                                    area: '300px',
                                    offset: 'auto',
                                    title: '请选择站点',
                                    content: $('#staBatchSelectDialog').html(),
                                    success: function (layero, ddIndex) {
                                        // 渲染下拉框
                                        let template = Handlebars.compile($('#batchStaSelectTpl').html());
                                        $('#batchSelectStaBox').html(template({list: staBatchSelectVal}));
                                        // 确认
                                        form.on('submit(staBatchSelectConfirm)', function (obj) {
                                            let loadIdx = layer.load(2);
                                            let batchSta = Number(obj.field.batchSta);
                                            let arr = [];
                                            for (let j = 0; j<stoPreTabData.length; j++) {
                                                for (let i = 0; i<tableCache.length; i++) {
                                                    if (tableCache[i].orderNo === stoPreTabData[j].orderNo
                                                        && tableCache[i].matnr === stoPreTabData[j].matnr
                                                        && tableCache[i].locNo === stoPreTabData[j].locNo) {
                                                        tableCache[i]['staNo'] = batchSta;
                                                        arr.push(i);
                                                    }
                                                }
                                            }
                                            stoPreTabIdx.reload({data: tableCache});
                                            arr.forEach(item => {
                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .order-sta-select').val(batchSta);
                                            });
                                            layui.form.render('select');
                                            arr.forEach(item => {
                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .layui-select-title').find("input").css("color", "blue");
                                            });
                                            layer.close(loadIdx); layer.close(ddIndex);
                                            return false;
                                        });
                                        // 弹窗不出现滚动条
                                        $(layero).children('.layui-layer-content').css('overflow', 'visible');
                                        layui.form.render('select');
                                    },
                                })
                            }
                        }
                        ,yes: function(index, layero){
                            //按钮【立即出库】的回调
                            pakout(tableCache, index);
                        }
                        ,btn2: function(index, layero){
                            //按钮【稍后处理】的回调
                            layer.close(index)
                            //return false 开启该代码可禁止点击该按钮关闭
                        }
                    });
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                } else {
                    layer.msg(res.msg, {icon: 2})
                }
            }
        })
    }
    function pakout(tableCache, layerIndex) {
        // let loadIndex = layer.load(2);
        notice.msg('正在生成出库任务......', {icon: 4});
        $.ajax({
            url: baseUrl + "/out/pakout/auth/sxk",
            headers: {'token': localStorage.getItem('token')},
            contentType: 'application/json;charset=UTF-8',
            data: JSON.stringify(tableCache),
            method: 'POST',
            success: function (res) {
                notice.destroy();
                if (res.code === 200) {
                    layer.close(layerIndex);
                    layer.msg(res.msg, {icon: 1});
                    insTb.reload({where: null});
                    insTb2.reload({where: null, page: {curr: 1}});
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/";
                } else {
                    layer.msg(res.msg, {icon: 2})
                }
            }
        });
    }
    /* 删除订单 */
    function doDelSensor(obj) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/sensor/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: obj.ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        $(".layui-laypage-btn")[0].click();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    }else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 修改状态
    form.on('switch(statusSwitch)', function (obj) {
        var index  = obj.othis.parents('tr').attr("data-index");
        var data = tableData[index];
        data[this.name] = obj.elem.checked?1:0;
        http.post(baseUrl+"/sensor/edit/auth", {id: data.id, status: data[this.name]}, function (res) {
            layer.msg(res.msg, {icon: 1});
        })
    })
    window.pakoutPreview = pakoutPreview;
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    (child ? parent.tableIns : tableIns).reload({
        where: searchData,
        page: {
            curr: pageCurr
        }
    });
}
/**
 * 一键出库
 */
function autoOut(orderId) {
    let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false});
    $.ajax({
        url: baseUrl + "/out/pakout/orderDetlIds/auth",
        headers: {'token': localStorage.getItem('token')},
        data: { orderId : orderId },
        method: 'POST',
        success: function (res) {
            layer.close(loadIndex);
            if (res.code === 200){
                pakoutPreview(res.data);
            } else if (res.code === 403){
                top.location.href = baseUrl+"/";
            } else {
                layer.msg(res.msg, {icon: 2});
            }
        }
    })
}
src/main/webapp/static/js/inventoryCheckOrderDetl/inventoryCheckOrderDetl.js
New file
@@ -0,0 +1,258 @@
var pageCurr;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    // 数据渲染
    tableIns = table.render({
        elem: '#inventoryCheckOrderDetl',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/inventoryCheckOrderDetl/list/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: ''}
            ,{field: 'orderNo', align: 'center',title: ''}
            ,{field: 'matnr', align: 'center',title: ''}
            ,{field: 'maktx', align: 'center',title: ''}
            ,{field: 'batch', align: 'center',title: ''}
            ,{field: 'anfme', align: 'center',title: ''}
            ,{field: 'area', align: 'center',title: ''}
            ,{field: 'locNo', align: 'center',title: ''}
            ,{field: 'ioTime$', align: 'center',title: ''}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(inventoryCheckOrderDetl)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(inventoryCheckOrderDetl)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'inventoryCheckOrderDetl': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/inventoryCheckOrderDetl/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(inventoryCheckOrderDetl)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '订单状态',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                layDateRender(mData);
                form.val('detail', mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/inventoryCheckOrderDetl/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/inventoryCheckOrderDetl/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(false);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#ioTime\\$',
                type: 'datetime',
                value: data!==undefined?data['ioTime\\$']:null
            });
        }, 300);
    }
    layDateRender();
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(child) {
    var searchData = {};
    $.each($('#search-box [name]').serializeArray(), function() {
        searchData[this.name] = this.value;
    });
    tableIns.reload({
        where: searchData,
        page: {curr: pageCurr}
     });
}
src/main/webapp/views/inventoryCheckOrder/inventoryCheckOrder.html
New file
@@ -0,0 +1,332 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/originTable.css" media="all">
    <style>
        body {
            color: #595959;
            background-color: #f5f7f9;
        }
        .admin-form {
            padding: 25px 30px 0 0 !important;
            margin: 0 !important;
        }
        .layui-table-view .layui-table-cell .layui-select-title .layui-input {
            height: 28px;
            line-height: 28px;
        }
        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
            height: 40px;
            line-height: 40px;
        }
        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
            height: 40px;
            line-height: 40px;
        }
        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-select-title .layui-input {
            height: 20px;
            line-height: 20px;
        }
        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-btn-xs {
            height: 18px;
            line-height: 18px;
        }
        /* 权限控制 */
        #btn-pakoutPreview {
            display: none;
        }
        /*#btn-delete {*/
        /*    display: none;*/
        /*}*/
        /*.btn-edit {*/
        /*    display: none;*/
        /*}*/
        /*.btn-more {*/
        /*    display: none;*/
        /*}*/
    </style>
</head>
<body>
<!-- 正文开始 -->
<div class="layui-fluid" style="padding-bottom: 0;">
    <div class="layui-row layui-col-space15">
        <!-- 左 -->
        <div class="layui-col-md3" id="left-table">
            <div class="layui-card">
                <div class="layui-card-body" style="padding: 10px;">
                    <form class="layui-form toolbar">
                        <div class="layui-form-item">
                            <div class="layui-inline" style="max-width: 300px;">
                                <input name="orderNo" class="layui-input" placeholder="输入单据编号" autocomplete="off"/>
                            </div>
                            <div class="layui-inline">
                                <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit>
                                    <i class="layui-icon">&#xe615;</i>搜索
                                </button>
                                <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit>
                                    <i class="layui-icon">&#xe666;</i>重置
                                </button>
                            </div>
                        </div>
                    </form>
                    <table id="originTable" lay-filter="originTable"></table>
                </div>
            </div>
        </div>
        <!-- 右 -->
        <div class="layui-col-md9">
            <div class="layui-card">
                <div class="layui-card-body" style="padding: 10px;">
                    <!--                    <form class="layui-form toolbar">-->
<!--                        <div class="layui-form-item">-->
<!--&lt;!&ndash;                            <div class="layui-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                <label class="layui-form-label">商品编码:</label>&ndash;&gt;-->
<!--&lt;!&ndash;                                <div class="layui-input-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                    <input name="matnr" class="layui-input" placeholder="商品编码"/>&ndash;&gt;-->
<!--&lt;!&ndash;                                </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            <div class="layui-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                <label class="layui-form-label">商品名称:</label>&ndash;&gt;-->
<!--&lt;!&ndash;                                <div class="layui-input-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                    <input name="maktx" class="layui-input" placeholder="商品名称"/>&ndash;&gt;-->
<!--&lt;!&ndash;                                </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            <div class="layui-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                <label class="layui-form-label">序列码:</label>&ndash;&gt;-->
<!--&lt;!&ndash;                                <div class="layui-input-inline">&ndash;&gt;-->
<!--&lt;!&ndash;                                    <input name="batch" class="layui-input" placeholder="序列码"/>&ndash;&gt;-->
<!--&lt;!&ndash;                                </div>&ndash;&gt;-->
<!--&lt;!&ndash;                            </div>&ndash;&gt;-->
<!--                            &lt;!&ndash;                            <div class="layui-inline">&ndash;&gt;-->
<!--                            &lt;!&ndash;                                <label class="layui-form-label">状态:</label>&ndash;&gt;-->
<!--                            &lt;!&ndash;                                <div class="layui-input-inline">&ndash;&gt;-->
<!--                            &lt;!&ndash;                                    <select name="isOnline">&ndash;&gt;-->
<!--                            &lt;!&ndash;                                        <option value="1">充电中</option>&ndash;&gt;-->
<!--                            &lt;!&ndash;                                        <option value="1">充电中</option>&ndash;&gt;-->
<!--                            &lt;!&ndash;                                        <option value="0">不在充电</option>&ndash;&gt;-->
<!--                            &lt;!&ndash;                                    </select>&ndash;&gt;-->
<!--                            &lt;!&ndash;                                </div>&ndash;&gt;-->
<!--                            &lt;!&ndash;                            </div>&ndash;&gt;-->
<!--                            <div class="layui-inline">&emsp;-->
<!--                                <button class="layui-btn icon-btn" lay-filter="sensorTbSearch" lay-submit>-->
<!--                                    <i class="layui-icon">&#xe615;</i>搜索-->
<!--                                </button>-->
<!--                            </div>-->
<!--                        </div>-->
<!--                    </form>-->
                    <table id="orderDetlTable" lay-filter="orderDetlTable"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<!-- 头工具栏 -->
<script type="text/html" id="orderDetToolbar">
    <!--    <div class="layui-btn-container">-->
    <!--        <div class="layui-col-md3">-->
    <!--            <select id="staNoSelect" lay-verify="required">-->
    <!--                <option value="">请选择站点</option>-->
    <!--            </select>-->
    <!--        </div>-->
    <!--    </div>-->
<!--    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="submitERP"><i class="layui-icon">&#xe681;</i>提交ERP</button>-->
    <button id="submitERP" class="layui-btn icon-btn btn-add" lay-event="submitERP"><i class="layui-icon">&#xe681;</i>提交ERP</button>
    <button id="showFormBtn" class="layui-btn icon-btn"  lay-submit>
        <i class="layui-icon">&#xe654;</i>添加单据
    </button>
</script>
<!-- 行工具栏 -->
<script type="text/html" id="operate">
    {{#if (d.enableQty > 0){ }}
    <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>出库</a>
    {{# } }}
</script>
<!-- 出库预览 -->
<script type="text/html" id="pakoutPreviewBox" style="display: none">
    <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
        <span style="font-size: large; font-weight: bold">出库预览</span>
    </div>
    <div class="layui-card">
        <div class="layui-card-body" style="padding: 10px">
            <table id="stoPreTab" lay-filter="stoPreTab"></table>
        </div>
        <button class="layui-btn layui-btn-primary layui-border-black layui-btn-sm" lay-filter="batchModifySta" lay-submit style="display: block;float: right;margin-right: 1rem">
            批量修改
        </button>
    </div>
</script>
<script type="text/html" id="tbBasicTbStaNos">
    <div class="ew-select-fixed">
        <select class="order-sta-select" lay-filter="tbBasicTbStaNos">
            {{#if (d.staNos!=null) {}}
            {{# for(let i=0; i<d.staNos.length; i++) { }}
            <option value="{{d.staNos[i]}}">{{d.staNos[i]}}</option>
            {{# } }}
            {{# } }}
        </select>
    </div>
</script>
<script type="text/html" id="staBatchSelectDialog">
    <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
        <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
        </select>
        <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">确定</button>
    </form>
</script>
<script type="text/html" id="locNoTpl">
    <span name="locNo"
          {{# if( d.lack === false){ }}
          class="layui-badge layui-badge-green" >{{d.locNo}}</span>
    {{# } else { }}
    class="layui-badge layui-badge-red" >库存不足</span>
    {{# } }}
</script>
<!-- 行样式 -->
<script type="text/html" id="orderNoTpl">
    <span name="orderNo" class="layui-badge layui-badge-gray">{{d.orderNo}}</span>
</script>
<script type="text/html" id="statusTpl">
    <input type="checkbox" name="status" value="{{d.status}}" lay-skin="switch" lay-text="正常|禁用" lay-filter="statusSwitch" {{ d.status === 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="profitTpl">
    <span name="settle"
          {{# if( d.profit$ === "盘亏"){ }}
          class="layui-badge layui-badge-red"
          {{# }else if(d.profit$ === "盘盈"){ }}
          class="layui-badge layui-badge-green"
          {{# }else if(d.profit$ === "平"){ }}
          class="layui-badge layui-badge-gray"
          {{# } }}
    >{{d.profit$}}</span>
</script>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form">
        <input name="id" type="hidden">
        <input name="status" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md4">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">设备编号</label>
                    <div class="layui-input-block">
                        <input name="uuid" placeholder="请输入设备编号" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                    </div>
                </div>
            </div>
            <div class="layui-col-md4">
                <div class="layui-form-item">
                    <label class="layui-form-label">设备类型:</label>
                    <div class="layui-input-block">
                        <div id="modelSel" class="ew-xmselect-tree"></div>
                    </div>
                </div>
            </div>
            <div class="layui-col-md4">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">所属项目: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input name="hostId" class="layui-input" style="display: none">
                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请选择所属项目" onfocus=this.blur()>
                        <div class="cool-auto-complete-window">
                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
            </div>
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label">详细地址</label>
                    <div class="layui-input-block">
                        <input name="addr" placeholder="请输入详细地址" class="layui-input">
                    </div>
                </div>
            </div>
            <hr class="layui-bg-gray">
            <div class="layui-col-md12" style="text-align: center">
                <iframe id="mapIframe" src="map.html" scrolling="no" frameborder="0"
                        style="display: inline-block; width: 90%;height: 400px;margin: auto">
                </iframe>
            </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/tools/md5.js"></script>
<script type="text/javascript" src="../../static/js/inventoryCheckOrder/inventoryCheakOrderTable.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/inventoryCheckOrder/inventoryCheckOrder.js" charset="utf-8"></script>
<!--<script type="text/template" id="takeSiteSelectTemplate">-->
<!--    {{#each data}}-->
<!--    <option value="{{siteId}}">{{desc}}</option>-->
<!--    {{/each}}-->
<!--</script>-->
<!-- 项目编辑窗口 -->
<script type="text/html" id="hostEditDialog">
    <form id="hostEditForm" lay-filter="hostEditForm" class="layui-form model-form">
        <input name="id" type="hidden"/>
        <div class="layui-form-item">
            <label class="layui-form-label layui-form-required">项目名称:</label>
            <div class="layui-input-block">
                <input name="name" placeholder="请输入类型名称" class="layui-input"
                       lay-verType="tips" lay-verify="required" required/>
            </div>
        </div>
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="hostEditSubmit" lay-submit>保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</body>
<script type="text/template" id="batchStaSelectTpl">
    <option value="">选择出库站</option>
    {{#each list}}
    <option value="{{this}}">{{this}}</option>
    {{/each}}
</script>
</html>
src/main/webapp/views/inventoryCheckOrderDetl/inventoryCheckOrderDetl.html
New file
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">
                        </div>
                    </div>
                     <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="inventoryCheckOrderDetl" lay-filter="inventoryCheckOrderDetl"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/inventoryCheckOrderDetl/inventoryCheckOrderDetl.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="orderNo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="matnr" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="maktx" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="batch" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="anfme" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="area" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="locNo" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="ioTime" id="ioTime$" placeholder="请输入">
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </form>
</script>
</html>