自动化立体仓库 - WMS系统
#
zjj
2025-09-17 4474cf3c30e6ad06711d2021be15ff82c36bd75a
#
33个文件已添加
10个文件已修改
3868 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/ICBOMController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ICMOController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/POInStockController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/POInStockEntryController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ReceiveRecordController.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BomChild.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ICBOM.java 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ICMO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/POInStock.java 478 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/POInStockEntry.java 448 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ReceiveRecord.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ICBOMMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ICMOMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/POInStockEntryMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/POInStockMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ReceiveRecordMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ICBOMService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ICMOService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/POInStockEntryService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/POInStockService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ReceiveRecordService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ICBOMServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ICMOServiceImpl.java 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/POInStockEntryServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/POInStockServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ReceiveRecordServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/ERPDateUtils.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/controller/KingdeeContorller.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/entity/IcmoDTO.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/entity/PoInStockDTO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/entity/PoOrder.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/entity/SubContract.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/entity/Vendor.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/utils/CustomStringUtils.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/utils/ERPDateUtil.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/kingdee/utils/SnowFlakeUtils.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ICBOMMapper.xml 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ICMOMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/POInStockEntryMapper.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/POInStockMapper.xml 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ReceiveRecordMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/erpReceiving/erpReceiving.html 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ICBOMController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
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.common.DateUtils;
import com.zy.asrs.entity.ICBOM;
import com.zy.asrs.service.ICBOMService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
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 ICBOMController extends BaseController {
    @Autowired
    private ICBOMService iCBOMService;
    @RequestMapping(value = "/iCBOM/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(iCBOMService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/iCBOM/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<ICBOM> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(ICBOM.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(iCBOMService.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);
            }
        }
    }
    @RequestMapping(value = "/iCBOM/add/auth")
    @ManagerAuth
    public R add(ICBOM iCBOM) {
        iCBOMService.insert(iCBOM);
        return R.ok();
    }
    @RequestMapping(value = "/iCBOM/update/auth")
    @ManagerAuth
    public R update(ICBOM iCBOM){
        if (Cools.isEmpty(iCBOM) || null==iCBOM.getFInterID()){
            return R.error();
        }
        iCBOMService.updateById(iCBOM);
        return R.ok();
    }
    @RequestMapping(value = "/iCBOM/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            iCBOMService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/iCBOM/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<ICBOM> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("iCBOM"));
        convert(map, wrapper);
        List<ICBOM> list = iCBOMService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/iCBOMQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<ICBOM> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<ICBOM> page = iCBOMService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (ICBOM iCBOM : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", iCBOM.getFInterID());
            map.put("value", iCBOM.getFInterID());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/iCBOM/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<ICBOM> wrapper = new EntityWrapper<ICBOM>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != iCBOMService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(ICBOM.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/ICMOController.java
@@ -1,11 +1,14 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
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.AppAuth;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Department;
import com.zy.asrs.entity.ICMO;
import com.zy.asrs.service.DepartmentService;
@@ -16,9 +19,11 @@
import com.core.common.R;
import com.zy.asrs.utils.ERPDateUtils;
import com.zy.common.web.BaseController;
import com.zy.kingdee.entity.IcmoDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.InputStream;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -33,11 +38,42 @@
    @Autowired
    private DepartmentService departmentService;
    @RequestMapping(value = "/iCMO/{id}/auth")
    @RequestMapping(value = "/iCMO/getList/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(iCMOService.selectById(String.valueOf(id)));
    public R getList(@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){
        //计划开工时间
        if (!Cools.isEmpty(param.get("fplancommitdate"))){
            param.put("fplancommitdate", ERPDateUtils.getERPFiltterDate(param.get("fplancommitdate").toString()));
        }
        IcmoDTO data = new IcmoDTO();
        try {
            data = JSON.parseObject(JSON.toJSONString(param), IcmoDTO.class);
            if (Cools.isEmpty(data)) {
                data = new IcmoDTO();
            }
        } catch (Exception e) {
            throw new CoolException("转换失败");
        }
        List<IcmoDTO> icmoDTOList = iCMOService.getIcmoDTOList(data);
        return R.ok(icmoDTOList);
    }
    @PostMapping("/other/tongbu/v1")
    @ManagerAuth()
    @AppAuth(memo = "金蝶新增收料通知单")
    public R tongbu(@RequestBody List<IcmoDTO> icmoDTOS) {
        return iCMOService.tongbu(icmoDTOS);
    }
    @RequestMapping(value = "/iCMO/list/auth")
    @ManagerAuth
@@ -47,14 +83,17 @@
                  @RequestParam(required = false)String orderByType,
                  @RequestParam(required = false)String condition,
                  @RequestParam Map<String, Object> param){
        if (!Cools.isEmpty(param.get("FPlanCommitDate"))){
            param.put("FPlanCommitDate", ERPDateUtils.getERPFiltterDate(param.get("FPlanCommitDate").toString()));
        //计划开工时间
        if (!Cools.isEmpty(param.get("fplancommitdate"))){
            param.put("fplancommitdate", ERPDateUtils.getERPFiltterDate(param.get("fplancommitdate").toString()));
        }
        //车间
        String fWorkShop = null;
        if (!Cools.isEmpty(param.get("FWorkShop"))){
            fWorkShop = param.get("FWorkShop").toString();
            param.remove("FWorkShop");
        }
        EntityWrapper<ICMO> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
@@ -82,67 +121,8 @@
        }
    }
    @RequestMapping(value = "/iCMO/add/auth")
    @ManagerAuth
    public R add(ICMO iCMO) {
        iCMOService.insert(iCMO);
        return R.ok();
    }
    @RequestMapping(value = "/iCMO/update/auth")
    @ManagerAuth
    public R update(ICMO iCMO){
        if (Cools.isEmpty(iCMO) || null==iCMO.getFInterID()){
            return R.error();
        }
        iCMOService.updateById(iCMO);
        return R.ok();
    }
    @RequestMapping(value = "/iCMO/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            iCMOService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/iCMO/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<ICMO> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("iCMO"));
        convert(map, wrapper);
        List<ICMO> list = iCMOService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/iCMOQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<ICMO> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<ICMO> page = iCMOService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (ICMO iCMO : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", iCMO.getFInterID());
            map.put("value", iCMO.getFInterID());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/iCMO/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<ICMO> wrapper = new EntityWrapper<ICMO>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != iCMOService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(ICMO.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/POInStockController.java
New file
@@ -0,0 +1,41 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
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.AppAuth;
import com.core.common.DateUtils;
import com.zy.asrs.entity.ICMO;
import com.zy.asrs.entity.POInStock;
import com.zy.asrs.service.POInStockService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import com.zy.kingdee.entity.IcmoDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class POInStockController extends BaseController {
    @Autowired
    private POInStockService pOInStockService;
    @PostMapping("/other/synchronizeTheReceiptOrder/v1")
    @ManagerAuth()
    @AppAuth(memo = "金蝶新增收料通知单")
    public R synchronizeTheReceiptOrder(@RequestBody List<ICMO> icmos) {
        return pOInStockService.synchronizeTheReceiptOrder(icmos);
    }
}
src/main/java/com/zy/asrs/controller/POInStockEntryController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
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.common.DateUtils;
import com.zy.asrs.entity.POInStockEntry;
import com.zy.asrs.service.POInStockEntryService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
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 POInStockEntryController extends BaseController {
    @Autowired
    private POInStockEntryService pOInStockEntryService;
    @RequestMapping(value = "/pOInStockEntry/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(pOInStockEntryService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/pOInStockEntry/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<POInStockEntry> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(POInStockEntry.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(pOInStockEntryService.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);
            }
        }
    }
    @RequestMapping(value = "/pOInStockEntry/add/auth")
    @ManagerAuth
    public R add(POInStockEntry pOInStockEntry) {
        pOInStockEntryService.insert(pOInStockEntry);
        return R.ok();
    }
    @RequestMapping(value = "/pOInStockEntry/update/auth")
    @ManagerAuth
    public R update(POInStockEntry pOInStockEntry){
        if (Cools.isEmpty(pOInStockEntry) || null==pOInStockEntry.getFDetailID()){
            return R.error();
        }
        pOInStockEntryService.updateById(pOInStockEntry);
        return R.ok();
    }
    @RequestMapping(value = "/pOInStockEntry/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            pOInStockEntryService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/pOInStockEntry/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<POInStockEntry> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("pOInStockEntry"));
        convert(map, wrapper);
        List<POInStockEntry> list = pOInStockEntryService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/pOInStockEntryQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<POInStockEntry> wrapper = new EntityWrapper<>();
        wrapper.like("_f_detail_i_d", condition);
        Page<POInStockEntry> page = pOInStockEntryService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (POInStockEntry pOInStockEntry : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", pOInStockEntry.getFDetailID());
            map.put("value", pOInStockEntry.getFDetailID());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/pOInStockEntry/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<POInStockEntry> wrapper = new EntityWrapper<POInStockEntry>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != pOInStockEntryService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(POInStockEntry.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/ReceiveRecordController.java
New file
@@ -0,0 +1,125 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
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.common.DateUtils;
import com.zy.asrs.entity.ReceiveRecord;
import com.zy.asrs.service.ReceiveRecordService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
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 ReceiveRecordController extends BaseController {
    @Autowired
    private ReceiveRecordService receiveRecordService;
    @RequestMapping(value = "/receiveRecord/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(receiveRecordService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/receiveRecord/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<ReceiveRecord> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(ReceiveRecord.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(receiveRecordService.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);
            }
        }
    }
    @RequestMapping(value = "/receiveRecord/add/auth")
    @ManagerAuth
    public R add(ReceiveRecord receiveRecord) {
        receiveRecordService.insert(receiveRecord);
        return R.ok();
    }
    @RequestMapping(value = "/receiveRecord/update/auth")
    @ManagerAuth
    public R update(ReceiveRecord receiveRecord){
        if (Cools.isEmpty(receiveRecord) || null==receiveRecord.getId()){
            return R.error();
        }
        receiveRecordService.updateById(receiveRecord);
        return R.ok();
    }
    @RequestMapping(value = "/receiveRecord/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            receiveRecordService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/receiveRecord/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<ReceiveRecord> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("receiveRecord"));
        convert(map, wrapper);
        List<ReceiveRecord> list = receiveRecordService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/receiveRecordQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<ReceiveRecord> wrapper = new EntityWrapper<>();
        wrapper.like("id", condition);
        Page<ReceiveRecord> page = receiveRecordService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (ReceiveRecord receiveRecord : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", receiveRecord.getId());
            map.put("value", receiveRecord.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/receiveRecord/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<ReceiveRecord> wrapper = new EntityWrapper<ReceiveRecord>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != receiveRecordService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(ReceiveRecord.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/entity/BomChild.java
New file
@@ -0,0 +1,68 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class BomChild implements Serializable {
    private static final long serialVersionUID = 1L;
    private String invClassCode;
    private Integer venId;
    private String venName;
    private Integer whId;
    private String whName;
    private String invName;
    private String invStd;
    private String unit;
    private String invCode;
    private BigDecimal forderprice;
    private BigDecimal gramWeight;
    private Integer fsource;
    private Integer ferpclsid;
    private Integer finterid;
    private Integer fentryid;
    private String fbrno;
    private Integer fitemid;
    private BigDecimal fauxqty;
    private BigDecimal fqty;
    private BigDecimal fscrap;
    private Integer fopersn;
    private Integer foperid;
    private String fmachinepos;
    private String fnote;
    private Integer fmaterieltype;
    private Integer fmarshaltype;
    private BigDecimal fpercent;
    private Date fbeginday;
    private Date fendday;
    private BigDecimal foffsetday;
    private Integer fbackflush;
    private Integer fstockid;
    private Integer fspid;
    private Short fsupply;
    private Integer funitid;
    private Integer fauxpropid;
    private Date fpdmimportdate;
    private String fpositionno;
    private String fitemsize;
    private String fitemsuite;
    private String fnote1;
    private String fnote2;
    private String fnote3;
    private Short fhaschar;
    private String fdetailid;
    private Integer fentrykey;
    private BigDecimal fcostpercentage;
    private Integer fplanner;
}
src/main/java/com/zy/asrs/entity/ICBOM.java
New file
@@ -0,0 +1,285 @@
package com.zy.asrs.entity;
import com.core.common.Cools;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("ICBOM")
public class ICBOM implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableField("FBrNo")
    private String FBrNo;
    @ApiModelProperty(value= "")
    @TableId(value = "FInterID", type = IdType.INPUT)
    @TableField("FInterID")
    private Integer FInterID;
    @ApiModelProperty(value= "")
    @TableField("FBOMNumber")
    private String FBOMNumber;
    @ApiModelProperty(value= "")
    @TableField("FImpMode")
    private Short FImpMode;
    @ApiModelProperty(value= "")
    @TableField("FUseStatus")
    private Integer FUseStatus;
    @ApiModelProperty(value= "")
    @TableField("FVersion")
    private String FVersion;
    @ApiModelProperty(value= "")
    @TableField("FParentID")
    private Integer FParentID;
    @ApiModelProperty(value= "")
    @TableField("FItemID")
    private Integer FItemID;
    @ApiModelProperty(value= "")
    @TableField("FQty")
    private BigDecimal FQty;
    @ApiModelProperty(value= "")
    @TableField("FYield")
    private Double FYield;
    @ApiModelProperty(value= "")
    @TableField("FCheckID")
    private Integer FCheckID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FCheckDate")
    private Date FCheckDate;
    @ApiModelProperty(value= "")
    @TableField("FOperatorID")
    private Integer FOperatorID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FEnterTime")
    private Date FEnterTime;
    @ApiModelProperty(value= "")
    @TableField("FStatus")
    private Short FStatus;
    @ApiModelProperty(value= "")
    @TableField("FCancellation")
    private Boolean FCancellation;
    @ApiModelProperty(value= "")
    @TableField("FTranType")
    private Integer FTranType;
    @ApiModelProperty(value= "")
    @TableField("FRoutingID")
    private Integer FRoutingID;
    @ApiModelProperty(value= "")
    @TableField("FBomType")
    private Integer FBomType;
    @ApiModelProperty(value= "")
    @TableField("FCustID")
    private Integer FCustID;
    @ApiModelProperty(value= "")
    @TableField("FCustItemID")
    private Integer FCustItemID;
    @ApiModelProperty(value= "")
    @TableField("FAccessories")
    private Integer FAccessories;
    @ApiModelProperty(value= "")
    @TableField("FNote")
    private String FNote;
    @ApiModelProperty(value= "")
    @TableField("FUnitID")
    private Integer FUnitID;
    @ApiModelProperty(value= "")
    @TableField("FAUXQTY")
    private Double FAUXQTY;
    @ApiModelProperty(value= "")
    @TableField("FCheckerID")
    private Integer FCheckerID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FAudDate")
    private Date FAudDate;
    @ApiModelProperty(value= "")
    @TableField("FEcnInterID")
    private Integer FEcnInterID;
    @ApiModelProperty(value= "")
    @TableField("FBeenChecked")
    private Boolean FBeenChecked;
    @ApiModelProperty(value= "")
    @TableField("FForbid")
    private Short FForbid;
    @ApiModelProperty(value= "")
    @TableField("FAuxPropID")
    private Integer FAuxPropID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FPDMImportDate")
    private Date FPDMImportDate;
    @ApiModelProperty(value= "")
    @TableField("FBOMSkip")
    private Short FBOMSkip;
    @ApiModelProperty(value= "")
    @TableField("FClassTypeID")
    private Integer FClassTypeID;
    @ApiModelProperty(value= "")
    @TableField("FPrintCount")
    private Short FPrintCount;
    @ApiModelProperty(value= "")
    @TableField("FUserID")
    private Integer FUserID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FUseDate")
    private Date FUseDate;
    @ApiModelProperty(value= "")
    @TableField("FCurCheckLevel")
    private Integer FCurCheckLevel;
    @TableField(exist = false)
    private String soCode;
    @TableField(exist = false)
    private String depCode;
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date fplancommitdate;
    public ICBOM() {}
//    ICBOM iCBOM = new ICBOM(
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
    public String getFCheckDate$(){
        if (Cools.isEmpty(this.FCheckDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FCheckDate);
    }
    public String getFEnterTime$(){
        if (Cools.isEmpty(this.FEnterTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FEnterTime);
    }
    public String getFAudDate$(){
        if (Cools.isEmpty(this.FAudDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FAudDate);
    }
    public String getFPDMImportDate$(){
        if (Cools.isEmpty(this.FPDMImportDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FPDMImportDate);
    }
    public String getFUseDate$(){
        if (Cools.isEmpty(this.FUseDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FUseDate);
    }
}
src/main/java/com/zy/asrs/entity/ICMO.java
@@ -54,6 +54,10 @@
    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private String tableName;
    @ApiModelProperty(value= "")
    @TableField("FBrNo")
    private String FBrNo;
@@ -579,6 +583,12 @@
    @TableField("iz_print_return")
    private String izPrintReturn;
    @TableField(exist = false)
    private Department department;
    @TableField(exist = false)
    private Integer Fsource;
    public ICMO() {}
    public ICItemCore getICItemCore(){
src/main/java/com/zy/asrs/entity/POInStock.java
New file
@@ -0,0 +1,478 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("POInStock")
public class POInStock implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableId(value = "FBrNo", type = IdType.INPUT)
    @TableField("FBrNo")
    private String FBrNo;
    @ApiModelProperty(value= "")
    @TableId(value = "FInterID", type = IdType.INPUT)
    @TableField("FInterID")
    private Integer FInterID;
    @ApiModelProperty(value= "")
    @TableField("FBillNo")
    private String FBillNo;
    @ApiModelProperty(value= "")
    @TableField("FCurrencyID")
    private Integer FCurrencyID;
    @ApiModelProperty(value= "")
    @TableField("FTranType")
    private Short FTranType;
    @ApiModelProperty(value= "")
    @TableField("FSupplyID")
    private Integer FSupplyID;
    @ApiModelProperty(value= "")
    @TableField("FDeptID")
    private Integer FDeptID;
    @ApiModelProperty(value= "")
    @TableField("FEmpID")
    private Integer FEmpID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FDate")
    private Date FDate;
    @ApiModelProperty(value= "")
    @TableField("FStockID")
    private Integer FStockID;
    @ApiModelProperty(value= "")
    @TableField("FPosterID")
    private Integer FPosterID;
    @ApiModelProperty(value= "")
    @TableField("FCheckerID")
    private Integer FCheckerID;
    @ApiModelProperty(value= "")
    @TableField("FBillerID")
    private Integer FBillerID;
    @ApiModelProperty(value= "")
    @TableField("FFManagerID")
    private Integer FFManagerID;
    @ApiModelProperty(value= "")
    @TableField("FSManagerID")
    private Integer FSManagerID;
    @ApiModelProperty(value= "")
    @TableField("FCnnBillNo")
    private String FCnnBillNo;
    @ApiModelProperty(value= "")
    @TableField("FClosed")
    private Short FClosed;
    @ApiModelProperty(value= "")
    @TableField("FNote")
    private String FNote;
    @ApiModelProperty(value= "")
    @TableField("FInvoiceClosed")
    private Short FInvoiceClosed;
    @ApiModelProperty(value= "")
    @TableField("FBClosed")
    private Short FBClosed;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FCreateDate")
    private Date FCreateDate;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FCheckDate")
    private Date FCheckDate;
    @ApiModelProperty(value= "")
    @TableField("FExchangeRate")
    private Double FExchangeRate;
    @ApiModelProperty(value= "")
    @TableField("FStatus")
    private Short FStatus;
    @ApiModelProperty(value= "")
    @TableField("FCancellation")
    private Boolean FCancellation;
    @ApiModelProperty(value= "")
    @TableField("FUpStockWhenSave")
    private Boolean FUpStockWhenSave;
    @ApiModelProperty(value= "")
    @TableField("FPOStyle")
    private Integer FPOStyle;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel1")
    private Integer FMultiCheckLevel1;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel2")
    private Integer FMultiCheckLevel2;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel3")
    private Integer FMultiCheckLevel3;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel4")
    private Integer FMultiCheckLevel4;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel5")
    private Integer FMultiCheckLevel5;
    @ApiModelProperty(value= "")
    @TableField("FMultiCheckLevel6")
    private Integer FMultiCheckLevel6;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate1")
    private Date FMultiCheckDate1;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate2")
    private Date FMultiCheckDate2;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate3")
    private Date FMultiCheckDate3;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate4")
    private Date FMultiCheckDate4;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate5")
    private Date FMultiCheckDate5;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FMultiCheckDate6")
    private Date FMultiCheckDate6;
    @ApiModelProperty(value= "")
    @TableField("FCurCheckLevel")
    private Integer FCurCheckLevel;
    @ApiModelProperty(value= "")
    @TableField("FRelateBrID")
    private Integer FRelateBrID;
    @ApiModelProperty(value= "")
    @TableField("FExplanation")
    private String FExplanation;
    @ApiModelProperty(value= "")
    @TableField("FFetchAdd")
    private String FFetchAdd;
    @ApiModelProperty(value= "")
    @TableField("FSelectBillNo")
    private String FSelectBillNo;
    @ApiModelProperty(value= "")
    @TableField("FSelTranType")
    private Integer FSelTranType;
    @ApiModelProperty(value= "")
    @TableField("FChildren")
    private Integer FChildren;
    @ApiModelProperty(value= "")
    @TableField("FBrID")
    private Integer FBrID;
    @ApiModelProperty(value= "")
    @TableField("FTranStatus")
    private Integer FTranStatus;
    @ApiModelProperty(value= "")
    @TableField("FAreaPS")
    private Integer FAreaPS;
    @ApiModelProperty(value= "")
    @TableField("FReStatus")
    private String FReStatus;
    @ApiModelProperty(value= "")
    @TableField("FPOOrdBillNo")
    private String FPOOrdBillNo;
    @ApiModelProperty(value= "")
    @TableField("FManageType")
    private Integer FManageType;
    @ApiModelProperty(value= "")
    @TableField("FBizType")
    private Integer FBizType;
    @ApiModelProperty(value= "")
    @TableField("FWWType")
    private Integer FWWType;
    @ApiModelProperty(value= "")
    @TableField("FPrintCount")
    private Short FPrintCount;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FHeadSelfP0338")
    private Date FHeadSelfP0338;
    @ApiModelProperty(value= "")
    @TableField("FHeadSelfP0339")
    private String FHeadSelfP0339;
    @ApiModelProperty(value= "")
    @TableField("same_id")
    private String sameId;
    public POInStock() {}
    public POInStock(String FBrNo,Integer FInterID,String FBillNo,Integer FCurrencyID,Short FTranType,Integer FSupplyID,Integer FDeptID,Integer FEmpID,Date FDate,Integer FStockID,Integer FPosterID,Integer FCheckerID,Integer FBillerID,Integer FFManagerID,Integer FSManagerID,String FCnnBillNo,Short FClosed,String FNote,Short FInvoiceClosed,Short FBClosed,Date FCreateDate,Date FCheckDate,Double FExchangeRate,Short FStatus,Boolean FCancellation,Boolean FUpStockWhenSave,Integer FPOStyle,Integer FMultiCheckLevel1,Integer FMultiCheckLevel2,Integer FMultiCheckLevel3,Integer FMultiCheckLevel4,Integer FMultiCheckLevel5,Integer FMultiCheckLevel6,Date FMultiCheckDate1,Date FMultiCheckDate2,Date FMultiCheckDate3,Date FMultiCheckDate4,Date FMultiCheckDate5,Date FMultiCheckDate6,Integer FCurCheckLevel,Integer FRelateBrID,String FExplanation,String FFetchAdd,String FSelectBillNo,Integer FSelTranType,Integer FChildren,Integer FBrID,Integer FTranStatus,Integer FAreaPS,String FReStatus,String FPOOrdBillNo,Integer FManageType,Integer FBizType,Integer FWWType,Short FPrintCount,Date FHeadSelfP0338,String FHeadSelfP0339,String sameId) {
        this.FBrNo = FBrNo;
        this.FInterID = FInterID;
        this.FBillNo = FBillNo;
        this.FCurrencyID = FCurrencyID;
        this.FTranType = FTranType;
        this.FSupplyID = FSupplyID;
        this.FDeptID = FDeptID;
        this.FEmpID = FEmpID;
        this.FDate = FDate;
        this.FStockID = FStockID;
        this.FPosterID = FPosterID;
        this.FCheckerID = FCheckerID;
        this.FBillerID = FBillerID;
        this.FFManagerID = FFManagerID;
        this.FSManagerID = FSManagerID;
        this.FCnnBillNo = FCnnBillNo;
        this.FClosed = FClosed;
        this.FNote = FNote;
        this.FInvoiceClosed = FInvoiceClosed;
        this.FBClosed = FBClosed;
        this.FCreateDate = FCreateDate;
        this.FCheckDate = FCheckDate;
        this.FExchangeRate = FExchangeRate;
        this.FStatus = FStatus;
        this.FCancellation = FCancellation;
        this.FUpStockWhenSave = FUpStockWhenSave;
        this.FPOStyle = FPOStyle;
        this.FMultiCheckLevel1 = FMultiCheckLevel1;
        this.FMultiCheckLevel2 = FMultiCheckLevel2;
        this.FMultiCheckLevel3 = FMultiCheckLevel3;
        this.FMultiCheckLevel4 = FMultiCheckLevel4;
        this.FMultiCheckLevel5 = FMultiCheckLevel5;
        this.FMultiCheckLevel6 = FMultiCheckLevel6;
        this.FMultiCheckDate1 = FMultiCheckDate1;
        this.FMultiCheckDate2 = FMultiCheckDate2;
        this.FMultiCheckDate3 = FMultiCheckDate3;
        this.FMultiCheckDate4 = FMultiCheckDate4;
        this.FMultiCheckDate5 = FMultiCheckDate5;
        this.FMultiCheckDate6 = FMultiCheckDate6;
        this.FCurCheckLevel = FCurCheckLevel;
        this.FRelateBrID = FRelateBrID;
        this.FExplanation = FExplanation;
        this.FFetchAdd = FFetchAdd;
        this.FSelectBillNo = FSelectBillNo;
        this.FSelTranType = FSelTranType;
        this.FChildren = FChildren;
        this.FBrID = FBrID;
        this.FTranStatus = FTranStatus;
        this.FAreaPS = FAreaPS;
        this.FReStatus = FReStatus;
        this.FPOOrdBillNo = FPOOrdBillNo;
        this.FManageType = FManageType;
        this.FBizType = FBizType;
        this.FWWType = FWWType;
        this.FPrintCount = FPrintCount;
        this.FHeadSelfP0338 = FHeadSelfP0338;
        this.FHeadSelfP0339 = FHeadSelfP0339;
        this.sameId = sameId;
    }
//    POInStock pOInStock = new POInStock(
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
    public String getFDate$(){
        if (Cools.isEmpty(this.FDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FDate);
    }
    public String getFCreateDate$(){
        if (Cools.isEmpty(this.FCreateDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FCreateDate);
    }
    public String getFCheckDate$(){
        if (Cools.isEmpty(this.FCheckDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FCheckDate);
    }
    public String getFMultiCheckDate1$(){
        if (Cools.isEmpty(this.FMultiCheckDate1)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate1);
    }
    public String getFMultiCheckDate2$(){
        if (Cools.isEmpty(this.FMultiCheckDate2)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate2);
    }
    public String getFMultiCheckDate3$(){
        if (Cools.isEmpty(this.FMultiCheckDate3)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate3);
    }
    public String getFMultiCheckDate4$(){
        if (Cools.isEmpty(this.FMultiCheckDate4)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate4);
    }
    public String getFMultiCheckDate5$(){
        if (Cools.isEmpty(this.FMultiCheckDate5)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate5);
    }
    public String getFMultiCheckDate6$(){
        if (Cools.isEmpty(this.FMultiCheckDate6)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FMultiCheckDate6);
    }
    public String getFHeadSelfP0338$(){
        if (Cools.isEmpty(this.FHeadSelfP0338)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FHeadSelfP0338);
    }
}
src/main/java/com/zy/asrs/entity/POInStockEntry.java
New file
@@ -0,0 +1,448 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("POInStockEntry")
public class POInStockEntry implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableField("FBrNo")
    private String FBrNo;
    @ApiModelProperty(value= "")
    @TableId(value = "FInterID", type = IdType.INPUT)
    private Integer FInterID;
    @ApiModelProperty(value= "")
    @TableId(value = "FEntryID", type = IdType.INPUT)
    private Integer FEntryID;
    @ApiModelProperty(value= "")
    @TableField("FItemID")
    private Integer FItemID;
    @ApiModelProperty(value= "")
    @TableField("FQty")
    private BigDecimal FQty;
    @ApiModelProperty(value= "")
    @TableField("FCommitQty")
    private BigDecimal FCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FPrice")
    private BigDecimal FPrice;
    @ApiModelProperty(value= "")
    @TableField("FAmount")
    private BigDecimal FAmount;
    @ApiModelProperty(value= "")
    @TableField("FNote")
    private String FNote;
    @ApiModelProperty(value= "")
    @TableField("FInvoiceQty")
    private BigDecimal FInvoiceQty;
    @ApiModelProperty(value= "")
    @TableField("FBCommitQty")
    private BigDecimal FBCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FQCheckQty")
    private BigDecimal FQCheckQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxQCheckQty")
    private BigDecimal FAuxQCheckQty;
    @ApiModelProperty(value= "")
    @TableField("FUnitID")
    private Integer FUnitID;
    @ApiModelProperty(value= "")
    @TableField("FAuxBCommitQty")
    private BigDecimal FAuxBCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxCommitQty")
    private BigDecimal FAuxCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxInvoiceQty")
    private BigDecimal FAuxInvoiceQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxPrice")
    private BigDecimal FAuxPrice;
    @ApiModelProperty(value= "")
    @TableField("FAuxQty")
    private BigDecimal FAuxQty;
    @ApiModelProperty(value= "")
    @TableField("FSourceEntryID")
    private Integer FSourceEntryID;
    @ApiModelProperty(value= "")
    @TableField("FQtyPass")
    private BigDecimal FQtyPass;
    @ApiModelProperty(value= "")
    @TableField("FAuxQtyPass")
    private BigDecimal FAuxQtyPass;
    @ApiModelProperty(value= "")
    @TableField("FMapNumber")
    private String FMapNumber;
    @ApiModelProperty(value= "")
    @TableField("FMapName")
    private String FMapName;
    @ApiModelProperty(value= "")
    @TableField("FBatchNo")
    private String FBatchNo;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FKFDate")
    private Date FKFDate;
    @ApiModelProperty(value= "")
    @TableField("FKFPeriod")
    private Integer FKFPeriod;
    @ApiModelProperty(value= "")
    @TableField("FDCSPID")
    private Integer FDCSPID;
    @ApiModelProperty(value= "")
    @TableField("FAuxPropID")
    private Integer FAuxPropID;
    @ApiModelProperty(value= "")
    @TableField("FDCStockID")
    private Integer FDCStockID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FFetchDate")
    private Date FFetchDate;
    @ApiModelProperty(value= "")
    @TableField("FSecCoefficient")
    private Double FSecCoefficient;
    @ApiModelProperty(value= "")
    @TableField("FSecQty")
    private Double FSecQty;
    @ApiModelProperty(value= "")
    @TableField("FSecCommitQty")
    private Double FSecCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FSourceTranType")
    private Integer FSourceTranType;
    @ApiModelProperty(value= "")
    @TableField("FSourceInterId")
    private Integer FSourceInterId;
    @ApiModelProperty(value= "")
    @TableField("FSourceBillNo")
    private String FSourceBillNo;
    @ApiModelProperty(value= "")
    @TableField("FContractInterID")
    private Integer FContractInterID;
    @ApiModelProperty(value= "")
    @TableField("FContractEntryID")
    private Integer FContractEntryID;
    @ApiModelProperty(value= "")
    @TableField("FContractBillNo")
    private String FContractBillNo;
    @ApiModelProperty(value= "")
    @TableField("FOrderInterID")
    private Integer FOrderInterID;
    @ApiModelProperty(value= "")
    @TableField("FOrderEntryID")
    private Integer FOrderEntryID;
    @ApiModelProperty(value= "")
    @TableField("FOrderBillNo")
    private String FOrderBillNo;
    @ApiModelProperty(value= "")
    @TableField("FStockID")
    private Integer FStockID;
    @ApiModelProperty(value= "")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @TableField("FPeriodDate")
    private Date FPeriodDate;
    @ApiModelProperty(value= "")
    @TableField("FNotPassQty")
    private Double FNotPassQty;
    @ApiModelProperty(value= "")
    @TableField("FNPCommitQty")
    private Double FNPCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FSampleBreakQty")
    private Double FSampleBreakQty;
    @ApiModelProperty(value= "")
    @TableField("FConPassQty")
    private Double FConPassQty;
    @ApiModelProperty(value= "")
    @TableField("FConCommitQty")
    private Double FConCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxNotPassQty")
    private Double FAuxNotPassQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxNPCommitQty")
    private Double FAuxNPCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxSampleBreakQty")
    private Double FAuxSampleBreakQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxConPassQty")
    private Double FAuxConPassQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxConCommitQty")
    private Double FAuxConCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxRelateQty")
    private Double FAuxRelateQty;
    @ApiModelProperty(value= "")
    @TableField("FRelateQty")
    private Double FRelateQty;
    @ApiModelProperty(value= "")
    @TableField("FBackQty")
    private Double FBackQty;
    @ApiModelProperty(value= "")
    @TableField("FAuxBackQty")
    private Double FAuxBackQty;
    @ApiModelProperty(value= "")
    @TableField("FSecBackQty")
    private Double FSecBackQty;
    @ApiModelProperty(value= "")
    @TableField("FSecConCommitQty")
    private Double FSecConCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FPlanMode")
    private Integer FPlanMode;
    @ApiModelProperty(value= "")
    @TableField("FMTONo")
    private String FMTONo;
    @ApiModelProperty(value= "")
    @TableField("FOrderType")
    private Integer FOrderType;
    @ApiModelProperty(value= "")
    @TableField("FCheckMethod")
    private Integer FCheckMethod;
    @ApiModelProperty(value= "")
    @TableField("FSecConPassQty")
    private Double FSecConPassQty;
    @ApiModelProperty(value= "")
    @TableField("FSecQCheckQty")
    private Double FSecQCheckQty;
    @ApiModelProperty(value= "")
    @TableField("FSecRelateQty")
    private Double FSecRelateQty;
    @ApiModelProperty(value= "")
    @TableField("FSecQtyPass")
    private Double FSecQtyPass;
    @ApiModelProperty(value= "")
    @TableField("FSecNotPassQty")
    private Double FSecNotPassQty;
    @ApiModelProperty(value= "")
    @TableField("FDetailID")
    private Integer FDetailID;
    @ApiModelProperty(value= "")
    @TableField("FComplexQty")
    private String FComplexQty;
    @ApiModelProperty(value= "")
    @TableField("FBarCode")
    private String FBarCode;
    @ApiModelProperty(value= "")
    @TableField("FBTPLCommitQty")
    private Double FBTPLCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FTPLCommitQty")
    private Double FTPLCommitQty;
    @ApiModelProperty(value= "")
    @TableField("FEntrySelfP0362")
    private String FEntrySelfP0362;
    @ApiModelProperty(value= "")
    @TableField("FEntrySelfP0365")
    private String FEntrySelfP0365;
    @ApiModelProperty(value= "")
    @TableField("FEntrySelfP0440")
    private String FEntrySelfP0440;
    public POInStockEntry() {}
//    POInStockEntry pOInStockEntry = new POInStockEntry(
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    // [非空]
//            null,    // [非空]
//            null,    //
//            null,    //
//            null    //
//    );
    public String getFKFDate$(){
        if (Cools.isEmpty(this.FKFDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FKFDate);
    }
    public String getFFetchDate$(){
        if (Cools.isEmpty(this.FFetchDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FFetchDate);
    }
    public String getFPeriodDate$(){
        if (Cools.isEmpty(this.FPeriodDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.FPeriodDate);
    }
}
src/main/java/com/zy/asrs/entity/ReceiveRecord.java
New file
@@ -0,0 +1,70 @@
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@TableName("mo_receive_record")
public class ReceiveRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableId(value = "id", type = IdType.INPUT)
    private String id;
    @ApiModelProperty(value= "")
    @TableField("so_code")
    private String soCode;
    @ApiModelProperty(value= "")
    private BigDecimal qty;
    @ApiModelProperty(value= "")
    @TableField("record_id")
    private Integer recordId;
    @ApiModelProperty(value= "")
    @TableField("inv_id")
    private Integer invId;
    @ApiModelProperty(value= "")
    @TableField("same_id")
    private String sameId;
    @ApiModelProperty(value= "")
    @TableField("iz_update_qty")
    private String izUpdateQty;
    @ApiModelProperty(value= "")
    private String itype;
    @ApiModelProperty(value= "")
    @TableField("same_id1")
    private String sameId1;
    public ReceiveRecord() {}
//    ReceiveRecord receiveRecord = new ReceiveRecord(
//            null,    // [非空]
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null,    //
//            null    //
//    );
}
src/main/java/com/zy/asrs/mapper/ICBOMMapper.java
New file
@@ -0,0 +1,22 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BomChild;
import com.zy.asrs.entity.ICBOM;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.ICMO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface ICBOMMapper extends BaseMapper<ICBOM> {
    List<BomChild> getListByChild(@Param("main") BomChild m);
    List<ICBOM> getList(@Param("main") ICBOM m);
    int updateMaxNum(ICMO m);
}
src/main/java/com/zy/asrs/mapper/ICMOMapper.java
@@ -2,11 +2,21 @@
import com.zy.asrs.entity.ICMO;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.kingdee.entity.IcmoDTO;
import com.zy.kingdee.entity.Vendor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface ICMOMapper extends BaseMapper<ICMO> {
    List<IcmoDTO> getIcmoDTOList(@Param("main") IcmoDTO mainDTO);
    List<Vendor> getVendorList(Vendor vendor);
    int updateMaxNum(ICMO icmo3);
}
src/main/java/com/zy/asrs/mapper/POInStockEntryMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.POInStockEntry;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface POInStockEntryMapper extends BaseMapper<POInStockEntry> {
}
src/main/java/com/zy/asrs/mapper/POInStockMapper.java
New file
@@ -0,0 +1,36 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.POInStock;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.kingdee.entity.PoOrder;
import com.zy.kingdee.entity.SubContract;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface POInStockMapper extends BaseMapper<POInStock> {
    String getMaxCode(String fbillno);
    int getMaxId();
    int deleteBySameId(@Param("sameId") String sameId);
    int deleteDetailBySameId(@Param("sameId") String sameId);
    int deleteZjBySameId(@Param("sameId") String sameId);
    int deleteZjDetailBySameId(@Param("sameId") String sameId);
    int updateZjMain(POInStock m);
    int updatePoQty(PoOrder poOrder);
    int updateWwQty(SubContract poOrder3);
}
src/main/java/com/zy/asrs/mapper/ReceiveRecordMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.ReceiveRecord;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface ReceiveRecordMapper extends BaseMapper<ReceiveRecord> {
}
src/main/java/com/zy/asrs/service/ICBOMService.java
New file
@@ -0,0 +1,19 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BomChild;
import com.zy.asrs.entity.ICBOM;
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.ICMO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ICBOMService extends IService<ICBOM> {
    List<BomChild> getListByChild(BomChild bomChild);
    List<ICBOM> getList(ICBOM query);
    int updateMaxNum(ICMO m);
}
src/main/java/com/zy/asrs/service/ICMOService.java
@@ -1,10 +1,17 @@
package com.zy.asrs.service;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.core.common.R;
import com.zy.asrs.entity.ICMO;
import com.baomidou.mybatisplus.service.IService;
import com.zy.kingdee.entity.IcmoDTO;
import java.util.List;
public interface ICMOService extends IService<ICMO> {
    List<IcmoDTO> getIcmoDTOList(IcmoDTO icmoDTO);
    R tongbu(List<IcmoDTO> icmoDTOS);
}
src/main/java/com/zy/asrs/service/POInStockEntryService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.POInStockEntry;
import com.baomidou.mybatisplus.service.IService;
public interface POInStockEntryService extends IService<POInStockEntry> {
}
src/main/java/com/zy/asrs/service/POInStockService.java
New file
@@ -0,0 +1,16 @@
package com.zy.asrs.service;
import com.core.common.R;
import com.zy.asrs.entity.ICMO;
import com.zy.asrs.entity.POInStock;
import com.baomidou.mybatisplus.service.IService;
import com.zy.kingdee.entity.IcmoDTO;
import java.util.List;
public interface POInStockService extends IService<POInStock> {
    R synchronizeTheReceiptOrder(List<ICMO> icmos);
}
src/main/java/com/zy/asrs/service/ReceiveRecordService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.ReceiveRecord;
import com.baomidou.mybatisplus.service.IService;
public interface ReceiveRecordService extends IService<ReceiveRecord> {
}
src/main/java/com/zy/asrs/service/impl/ICBOMServiceImpl.java
New file
@@ -0,0 +1,33 @@
package com.zy.asrs.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.zy.asrs.entity.BomChild;
import com.zy.asrs.entity.ICMO;
import com.zy.asrs.mapper.ICBOMMapper;
import com.zy.asrs.entity.ICBOM;
import com.zy.asrs.service.ICBOMService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service("iCBOMService")
@DS("slave_1")
public class ICBOMServiceImpl extends ServiceImpl<ICBOMMapper, ICBOM> implements ICBOMService {
    @Override
    public List<BomChild> getListByChild(BomChild m) {
        return this.baseMapper.getListByChild(m);
    }
    @Override
    public List<ICBOM> getList(ICBOM query) {
        return this.baseMapper.getList(query);
    }
    @Override
    public int updateMaxNum(ICMO m) {
        return this.baseMapper.updateMaxNum(m);
    }
}
src/main/java/com/zy/asrs/service/impl/ICMOServiceImpl.java
@@ -1,14 +1,469 @@
package com.zy.asrs.service.impl;
import cn.hutool.core.date.DatePattern;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.ICMOMapper;
import com.zy.asrs.entity.ICMO;
import com.zy.asrs.mapper.POInStockEntryMapper;
import com.zy.asrs.mapper.POInStockMapper;
import com.zy.asrs.mapper.ReceiveRecordMapper;
import com.zy.asrs.service.ICBOMService;
import com.zy.asrs.service.ICMOService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.service.POInStockService;
import com.zy.kingdee.entity.IcmoDTO;
import com.zy.kingdee.entity.PoOrder;
import com.zy.kingdee.entity.SubContract;
import com.zy.kingdee.entity.Vendor;
import com.zy.kingdee.utils.CustomStringUtils;
import com.zy.kingdee.utils.ERPDateUtil;
import com.zy.kingdee.utils.SnowFlakeUtils;
import org.aspectj.weaver.ResolvedType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service("iCMOService")
@DS("slave_1")
public class ICMOServiceImpl extends ServiceImpl<ICMOMapper, ICMO> implements ICMOService {
    @Autowired
    private ICBOMService icbomService;
    @Autowired
    private POInStockMapper poInStockMapper;
    @Autowired
    private ReceiveRecordMapper receiveRecordMapper;
    @Autowired
    private POInStockEntryMapper poInStockEntryMapper;
    @Override
    public List<IcmoDTO> getIcmoDTOList(IcmoDTO icmoDTO) {
        return this.baseMapper.getIcmoDTOList(icmoDTO);
    }
    public List<Vendor> getVendorList(Vendor vendor) {
        return this.baseMapper.getVendorList(vendor);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R tongbu(List<IcmoDTO> list) {
        try {
            String sameId = String.valueOf(SnowFlakeUtils.getFlowIdInstance().nextId());
            List<IcmoDTO> listReturn = new ArrayList<>();
            for (IcmoDTO detail : list) {
                ICMO oldIcmo = selectById(detail.getFinterid());
                if (oldIcmo != null) {
                    if (!(oldIcmo.getIzSyncReceive() == null ? "" : oldIcmo.getIzSyncReceive()).equals("是")) {
                        getBomList(detail, listReturn);
                        ICMO icmo = new ICMO();
                        icmo.setFInterID(detail.getFinterid());
                        icmo.setIzSyncReceive("是");
                        updateById(icmo);
                    }
                }
            }
            List<IcmoDTO> listReturn2 = (List) listReturn.stream().filter(g -> {
                return (g.getInvCode().startsWith("M") || g.getFerpclsid() == null || (g.getFerpclsid().compareTo((Integer) 1) != 0 && g.getFerpclsid().compareTo((Integer) 3) != 0)) ? false : true;
            }).collect(Collectors.toList());
            List<IcmoDTO> newPoList = (List) listReturn2.stream().filter(g2 -> {
                return g2.getFerpclsid() != null && g2.getFerpclsid().compareTo((Integer) 1) == 0;
            }).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> {
                return new TreeSet<>(Comparator.comparing(o -> {
                    return o.getFsource();
                }));
            }), (v1) -> {
                return new ArrayList(v1);
            }));
//            List<IcmoDTO> listReturn2 = listReturn.stream()
//                    .filter(g -> g.getInvCode() != null && !g.getInvCode().startsWith("M")
//                            && g.getFerpclsid() != null
//                            && (g.getFerpclsid().compareTo(1) == 0 || g.getFerpclsid().compareTo(3) == 0))
//                    .collect(Collectors.toList());
//
//            List<IcmoDTO> newPoList = listReturn2.stream()
//                    .filter(g2 -> g2.getFerpclsid() != null && g2.getFerpclsid().compareTo(1) == 0)
//                    .collect(Collectors.collectingAndThen(
//                            Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(IcmoDTO::getFsource))),
//                            ArrayList::new));
            for (IcmoDTO m : newPoList) {
                if (m.getFsource().intValue() != 0) {
                    Vendor vendor = new Vendor();
                    vendor.setVenId(m.getFsource());
                    List<Vendor> vendors = getVendorList(vendor);
                    if (vendors == null || vendors.size() <= 0 || !vendors.get(0).getVenCode().contains("-")) {
                        POInStock poInStock = new POInStock();
                        poInStock.setSameId(sameId);
                        poInStock.setFInterID(Integer.valueOf(this.poInStockMapper.getMaxId() + 1));
                        poInStock.setFBrNo("0");
                        poInStock.setFBillNo(getNewCode1(vendors.get(0).getVenCode()));
                        poInStock.setFCurrencyID(1);
                        poInStock.setFTranType((short) 72);
                        poInStock.setFSupplyID(m.getFsource());
                        poInStock.setFDeptID(11376);
                        poInStock.setFEmpID(11375);
                        poInStock.setFDate(ERPDateUtil.parseStrToDate(ERPDateUtil.getDateStr(new Date(), "yyyy-MM-dd"), "yyyy-MM-dd"));
                        poInStock.setFBillerID(16399);
                        poInStock.setFFManagerID(0);
                        poInStock.setFClosed((short) 0);
                        poInStock.setFInvoiceClosed((short) 0);
                        poInStock.setFBClosed((short) 0);
                        poInStock.setFExchangeRate(Double.valueOf(1.0d));
                        poInStock.setFStatus((short) 0);
                        poInStock.setFCancellation(false);
                        poInStock.setFUpStockWhenSave(false);
                        poInStock.setFPOStyle(252);
                        poInStock.setFRelateBrID(0);
                        poInStock.setFSelTranType(0);
                        poInStock.setFChildren(0);
                        poInStock.setFTranStatus(0);
                        poInStock.setFAreaPS(20302);
                        poInStock.setFManageType(0);
                        poInStock.setFBizType(12510);
                        poInStock.setFWWType(0);
                        poInStock.setFPrintCount((short)0);
                        Date date = m.getFplancommitdate();
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(date);
                        cal.add(5, -2);
                        int day = dayForWeek(ERPDateUtil.getDateStr(cal.getTime(), "yyyy-MM-dd"));
                        if (day == 7) {
                            cal.add(5, -2);
                        }
                        poInStock.setFHeadSelfP0338(cal.getTime());
                        poInStock.setFHeadSelfP0339(m.getDepCode().substring(0, m.getDepCode().indexOf(".")));
                        this.poInStockMapper.insert(poInStock);
                        ICMO icmo2 = new ICMO();
                        icmo2.setTableName("POInstock");
                        icmo2.setFInterID(poInStock.getFInterID());
                        this.icbomService.updateMaxNum(icmo2);
                        List<IcmoDTO> newPoDetailList = (List) listReturn2.stream().filter(g3 -> {
                            return g3.getFsource().toString().equals(m.getFsource().toString()) && g3.getFerpclsid() != null && g3.getFerpclsid().compareTo((Integer) 1) == 0;
                        }).collect(Collectors.toList());
                        List<POInStockEntry> listDetail = new ArrayList<>();
                        int row = 1;
                        for (IcmoDTO q : newPoDetailList) {
                            ReceiveRecord receviceRecord = new ReceiveRecord();
                            receviceRecord.setId(String.valueOf(SnowFlakeUtils.getFlowIdInstance().nextId()));
                            receviceRecord.setSameId(sameId);
                            receviceRecord.setInvId(q.getFitemid());
                            receviceRecord.setRecordId(q.getFinterid());
                            receviceRecord.setQty(q.getFqty() == null ? BigDecimal.ZERO : q.getFqty());
                            receviceRecord.setSoCode(q.getSoCode());
                            receviceRecord.setItype(ResolvedType.PARAMETERIZED_TYPE_IDENTIFIER);
                            receviceRecord.setIzUpdateQty("是");
                            POInStockEntry poInStockEntry = listDetail.stream().filter(p -> {
                                return p.getFItemID().toString().equals(q.getFitemid().toString());
                            }).findAny().orElse(null);
                            if (poInStockEntry == null) {
                                POInStockEntry poInStockEntry2 = new POInStockEntry();
                                poInStockEntry2.setFBrNo("0");
                                poInStockEntry2.setFEntryID(Integer.valueOf(row));
                                poInStockEntry2.setFInterID(poInStock.getFInterID());
                                poInStockEntry2.setFItemID(q.getFitemid());
                                poInStockEntry2.setFQty(q.getFqty() == null ? BigDecimal.ZERO : q.getFqty());
                                poInStockEntry2.setFAuxQty(poInStockEntry2.getFQty());
                                poInStockEntry2.setFUnitID(q.getFunitid());
                                poInStockEntry2.setFEntrySelfP0362(q.getSoCode());
                                poInStockEntry2.setFOrderBillNo(q.getSoCode());
                                poInStockEntry2.setFCheckMethod(352);
                                poInStockEntry2.setFPlanMode(14036);
                                poInStockEntry2.setFCommitQty(BigDecimal.ZERO);
                                poInStockEntry2.setFPrice(q.getForderprice() == null ? BigDecimal.ZERO : q.getForderprice());
                                poInStockEntry2.setFAmount(poInStockEntry2.getFQty().multiply(poInStockEntry2.getFPrice()));
                                poInStockEntry2.setFAuxPrice(poInStockEntry2.getFPrice());
                                poInStockEntry2.setFInvoiceQty(BigDecimal.ZERO);
                                poInStockEntry2.setFBCommitQty(BigDecimal.ZERO);
                                poInStockEntry2.setFQCheckQty(BigDecimal.ZERO);
                                poInStockEntry2.setFAuxQCheckQty(BigDecimal.ZERO);
                                poInStockEntry2.setFQtyPass(poInStockEntry2.getFQty());
                                poInStockEntry2.setFAuxQtyPass(poInStockEntry2.getFQty());
                                listDetail.add(poInStockEntry2);
                                PoOrder poOrder = new PoOrder();
                                poOrder.setFitemid(poInStockEntry2.getFItemID());
                                poOrder.setFentryselfp0262(q.getSoCode());
                                poOrder.setFentryselfp0263(q.getFqty() == null ? BigDecimal.ZERO : q.getFqty());
                                int n = this.poInStockMapper.updatePoQty(poOrder);
                                if (n <= 0) {
                                    receviceRecord.setIzUpdateQty("否");
                                }
                                row++;
                            } else {
                                poInStockEntry.setFQty(poInStockEntry.getFQty().add(q.getFqty() == null ? BigDecimal.ZERO : q.getFqty()));
                                poInStockEntry.setFAuxQty(poInStockEntry.getFQty());
                                List<String> listSo = Arrays.asList(poInStockEntry.getFEntrySelfP0362().split(","));
                                String soCode = listSo.stream().filter(p2 -> {
                                    return p2.equals(q.getSoCode());
                                }).findAny().orElse(null);
                                if (CustomStringUtils.isBlank(soCode)) {
                                    poInStockEntry.setFEntrySelfP0362(poInStockEntry.getFEntrySelfP0362() + "," + q.getSoCode());
                                }
                                PoOrder poOrder2 = new PoOrder();
                                poOrder2.setFitemid(poInStockEntry.getFItemID());
                                poOrder2.setFentryselfp0262(q.getSoCode());
                                poOrder2.setFentryselfp0263(q.getFqty() == null ? BigDecimal.ZERO : q.getFqty());
                                int n2 = this.poInStockMapper.updatePoQty(poOrder2);
                                if (n2 <= 0) {
                                    receviceRecord.setIzUpdateQty("否");
                                }
                            }
                            this.receiveRecordMapper.insert(receviceRecord);
                        }
                        Iterator<POInStockEntry> it = listDetail.iterator();
                        while (it.hasNext()) {
                            this.poInStockEntryMapper.insert(it.next());
                        }
                    }
                }
            }
            List<IcmoDTO> newWwList = listReturn2.stream()
                    .filter(g4 -> g4.getFerpclsid() != null && g4.getFerpclsid().equals(3))
                    .collect(Collectors.collectingAndThen(
                            Collectors.toMap(
                                    IcmoDTO::getFsource,
                                    Function.identity(),
                                    (existing, replacement) -> existing
                            ),
                            map -> new ArrayList<>(map.values())
                    ));
            for (IcmoDTO m2 : newWwList) {
                if (m2.getFsource().intValue() != 0) {
                    Vendor vendor2 = new Vendor();
                    vendor2.setVenId(m2.getFsource());
                    List<Vendor> vendors2 = this.baseMapper.getVendorList(vendor2);
                    if (vendors2 == null || vendors2.size() <= 0 || !vendors2.get(0).getVenCode().contains("-")) {
                        POInStock poInStock2 = new POInStock();
                        poInStock2.setSameId(sameId);
                        poInStock2.setFInterID(Integer.valueOf(this.poInStockMapper.getMaxId() + 1));
                        poInStock2.setFBrNo("0");
                        poInStock2.setFBillNo(getNewCode1(vendors2.get(0).getVenCode()));
                        poInStock2.setFCurrencyID(1);
                        poInStock2.setFTranType((short) 72);
                        poInStock2.setFSupplyID(m2.getFsource());
                        poInStock2.setFDeptID(11376);
                        poInStock2.setFEmpID(11375);
                        poInStock2.setFDate(ERPDateUtil.parseStrToDate(ERPDateUtil.getDateStr(new Date(), "yyyy-MM-dd"), "yyyy-MM-dd"));
                        poInStock2.setFBillerID(16399);
                        poInStock2.setFFManagerID(0);
                        poInStock2.setFClosed((short) 0);
                        poInStock2.setFInvoiceClosed((short) 0);
                        poInStock2.setFBClosed((short) 0);
                        poInStock2.setFExchangeRate(Double.valueOf(1.0d));
                        poInStock2.setFStatus((short) 0);
                        poInStock2.setFCancellation(false);
                        poInStock2.setFUpStockWhenSave(false);
                        poInStock2.setFPOStyle(252);
                        poInStock2.setFRelateBrID(0);
                        poInStock2.setFSelTranType(1007105);
                        poInStock2.setFChildren(0);
                        poInStock2.setFTranStatus(0);
                        poInStock2.setFAreaPS(20302);
                        poInStock2.setFManageType(0);
                        poInStock2.setFBizType(12511);
                        poInStock2.setFWWType(14190);
                        poInStock2.setFPrintCount((short) 0);
                        Date date2 = m2.getFplancommitdate();
                        Calendar cal2 = Calendar.getInstance();
                        cal2.setTime(date2);
                        cal2.add(5, -2);
                        int day2 = dayForWeek(ERPDateUtil.getDateStr(cal2.getTime(), "yyyy-MM-dd"));
                        if (day2 == 7) {
                            cal2.add(5, -2);
                        }
                        poInStock2.setFHeadSelfP0338(cal2.getTime());
                        poInStock2.setFHeadSelfP0339(m2.getDepCode().substring(0, m2.getDepCode().indexOf(".")));
                        this.poInStockMapper.insert(poInStock2);
                        ICMO icmo3 = new ICMO();
                        icmo3.setTableName("POInstock");
                        icmo3.setFInterID(poInStock2.getFInterID());
                        this.baseMapper.updateMaxNum(icmo3);
                        List<IcmoDTO> newPoDetailList2 = (List) listReturn2.stream().filter(g5 -> {
                            return g5.getFsource().toString().equals(m2.getFsource().toString()) && g5.getFerpclsid() != null && g5.getFerpclsid().compareTo((Integer) 3) == 0;
                        }).collect(Collectors.toList());
                        List<POInStockEntry> listDetail2 = new ArrayList<>();
                        int row2 = 1;
                        for (IcmoDTO q2 : newPoDetailList2) {
                            ReceiveRecord receviceRecord2 = new ReceiveRecord();
                            receviceRecord2.setId(String.valueOf(SnowFlakeUtils.getFlowIdInstance().nextId()));
                            receviceRecord2.setSameId(sameId);
                            receviceRecord2.setInvId(q2.getFitemid());
                            receviceRecord2.setQty(q2.getFqty() == null ? BigDecimal.ZERO : q2.getFqty());
                            receviceRecord2.setSoCode(q2.getSoCode());
                            receviceRecord2.setRecordId(q2.getFinterid());
                            receviceRecord2.setItype("W");
                            receviceRecord2.setIzUpdateQty("是");
                            POInStockEntry poInStockEntry3 = listDetail2.stream().filter(p3 -> {
                                return p3.getFItemID().toString().equals(q2.getFitemid().toString());
                            }).findAny().orElse(null);
                            if (poInStockEntry3 == null) {
                                POInStockEntry poInStockEntry4 = new POInStockEntry();
                                poInStockEntry4.setFBrNo("0");
                                poInStockEntry4.setFEntryID(Integer.valueOf(row2));
                                poInStockEntry4.setFInterID(poInStock2.getFInterID());
                                poInStockEntry4.setFItemID(q2.getFitemid());
                                poInStockEntry4.setFQty(q2.getFqty() == null ? BigDecimal.ZERO : q2.getFqty());
                                poInStockEntry4.setFAuxQty(poInStockEntry4.getFQty());
                                poInStockEntry4.setFUnitID(q2.getFunitid());
                                poInStockEntry4.setFEntrySelfP0362(q2.getSoCode());
                                poInStockEntry4.setFOrderBillNo(q2.getSoCode());
                                poInStockEntry4.setFCheckMethod(352);
                                poInStockEntry4.setFPlanMode(14036);
                                poInStockEntry4.setFCommitQty(BigDecimal.ZERO);
                                poInStockEntry4.setFPrice(q2.getForderprice() == null ? BigDecimal.ZERO : q2.getForderprice());
                                poInStockEntry4.setFAmount(poInStockEntry4.getFQty().multiply(poInStockEntry4.getFPrice()));
                                poInStockEntry4.setFAuxPrice(poInStockEntry4.getFPrice());
                                poInStockEntry4.setFInvoiceQty(BigDecimal.ZERO);
                                poInStockEntry4.setFBCommitQty(BigDecimal.ZERO);
                                poInStockEntry4.setFQCheckQty(BigDecimal.ZERO);
                                poInStockEntry4.setFAuxQCheckQty(BigDecimal.ZERO);
                                poInStockEntry4.setFQtyPass(poInStockEntry4.getFQty());
                                poInStockEntry4.setFAuxQtyPass(poInStockEntry4.getFQty());
                                listDetail2.add(poInStockEntry4);
                                SubContract poOrder3 = new SubContract();
                                poOrder3.setFitemid(poInStockEntry4.getFItemID());
                                poOrder3.setForderno(q2.getSoCode());
                                poOrder3.setFdecimal(q2.getFqty() == null ? BigDecimal.ZERO : q2.getFqty());
                                int n3 = this.poInStockMapper.updateWwQty(poOrder3);
                                if (n3 <= 0) {
                                    receviceRecord2.setIzUpdateQty("否");
                                }
                                row2++;
                            } else {
                                poInStockEntry3.setFQty(poInStockEntry3.getFQty().add(q2.getFqty() == null ? BigDecimal.ZERO : q2.getFqty()));
                                poInStockEntry3.setFAuxQty(poInStockEntry3.getFQty());
                                List<String> listSo2 = Arrays.asList(poInStockEntry3.getFEntrySelfP0362().split(","));
                                String soCode2 = listSo2.stream().filter(p4 -> {
                                    return p4.equals(q2.getSoCode());
                                }).findAny().orElse(null);
                                if (CustomStringUtils.isBlank(soCode2)) {
                                    poInStockEntry3.setFEntrySelfP0362(poInStockEntry3.getFEntrySelfP0362() + "," + q2.getSoCode());
                                }
                                SubContract poOrder4 = new SubContract();
                                poOrder4.setFitemid(poInStockEntry3.getFItemID());
                                poOrder4.setForderno(q2.getSoCode());
                                poOrder4.setFdecimal(q2.getFqty() == null ? BigDecimal.ZERO : q2.getFqty());
                                int n4 = this.poInStockMapper.updateWwQty(poOrder4);
                                if (n4 <= 0) {
                                    receviceRecord2.setIzUpdateQty("否");
                                }
                            }
                            this.receiveRecordMapper.insert(receviceRecord2);
                        }
                        Iterator<POInStockEntry> it2 = listDetail2.iterator();
                        while (it2.hasNext()) {
                            this.poInStockEntryMapper.insert(it2.next());
                        }
                    }
                }
            }
            return R.ok();
        } catch (Exception e) {
            throw new CoolException(e.getMessage());
        }
    }
    public List<IcmoDTO> getBomList(IcmoDTO m, List<IcmoDTO> listReturn) throws Exception {
        ICBOM query = new ICBOM();
        query.setFItemID(m.getFitemid());
        List<ICBOM> parentList = this.icbomService.getList(query);
        for (ICBOM parent : parentList) {
            parent.setFInterID(m.getFinterid());
            parent.setFQty(m.getFqty().multiply(parent.getFQty()));
            parent.setSoCode(m.getSoCode());
            parent.setDepCode(m.getDepCode());
            parent.setFplancommitdate(m.getFplancommitdate());
            listReturn = getChildList(parent, listReturn, parent.getFQty());
        }
        return listReturn;
    }
    public List<IcmoDTO> getChildList(ICBOM parent, List<IcmoDTO> listReturn, BigDecimal qty) {
        BomChild bomChild = new BomChild();
        bomChild.setFitemid(parent.getFItemID());
        List<BomChild> childList = this.icbomService.getListByChild(bomChild);
        for (BomChild child : childList) {
            IcmoDTO icmoDTO = new IcmoDTO();
            icmoDTO.setFinterid(parent.getFInterID());
            icmoDTO.setSoCode(parent.getSoCode());
            icmoDTO.setFplancommitdate(parent.getFplancommitdate());
            icmoDTO.setDepCode(parent.getDepCode());
            icmoDTO.setFitemid(child.getFitemid());
            icmoDTO.setFqty(child.getFqty().multiply(qty));
            icmoDTO.setFsource(child.getFsource());
            icmoDTO.setFerpclsid(child.getFerpclsid());
            icmoDTO.setFunitid(child.getFunitid());
            icmoDTO.setInvCode(child.getInvCode());
            icmoDTO.setForderprice(child.getForderprice());
            if (child.getFplanner() == null || child.getFplanner().intValue() == 0) {
                listReturn.add(icmoDTO);
            }
            parent.setFItemID(child.getFitemid());
            listReturn = getChildList(parent, listReturn, qty.multiply(child.getFqty()));
        }
        return listReturn;
    }
    public String getNewCode1(String venCode) {
        String strCode = venCode + ERPDateUtil.getDateStr(new Date(), DatePattern.PURE_DATE_PATTERN);
        try {
            String nowCode = this.poInStockMapper.getMaxCode(strCode);
            if (!CustomStringUtils.isBlank(nowCode)) {
                String strLeft = nowCode.substring(0, strCode.length());
                String strRight = nowCode.substring(strCode.length(), nowCode.length());
                Integer num = Integer.valueOf(Integer.valueOf(strRight).intValue() + 1);
                String retu = "";
                for (int i = 0; i < 2 - String.valueOf(num).length(); i++) {
                    retu = retu + "0";
                }
                return strLeft + retu + String.valueOf(num);
            }
            return strCode + "01";
        } catch (Exception e) {
            return strCode + "01";
        }
    }
    public static int dayForWeek(String pTime) throws Exception {
        int dayForWeek;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.setTime(format.parse(pTime));
        if (c.get(7) == 1) {
            dayForWeek = 7;
        } else {
            dayForWeek = c.get(7) - 1;
        }
        return dayForWeek;
    }
}
src/main/java/com/zy/asrs/service/impl/POInStockEntryServiceImpl.java
New file
@@ -0,0 +1,14 @@
package com.zy.asrs.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.zy.asrs.mapper.POInStockEntryMapper;
import com.zy.asrs.entity.POInStockEntry;
import com.zy.asrs.service.POInStockEntryService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("pOInStockEntryService")
@DS("slave_1")
public class POInStockEntryServiceImpl extends ServiceImpl<POInStockEntryMapper, POInStockEntry> implements POInStockEntryService {
}
src/main/java/com/zy/asrs/service/impl/POInStockServiceImpl.java
New file
@@ -0,0 +1,43 @@
package com.zy.asrs.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.R;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.POInStockMapper;
import com.zy.asrs.service.ICBOMService;
import com.zy.asrs.service.ICMOService;
import com.zy.asrs.service.POInStockService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.kingdee.entity.IcmoDTO;
import com.zy.kingdee.utils.SnowFlakeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service("pOInStockService")
@DS("slave_1")
public class POInStockServiceImpl extends ServiceImpl<POInStockMapper, POInStock> implements POInStockService {
    @Autowired
    private ICMOService icmoService;
    @Autowired
    private ICBOMService icbomService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R synchronizeTheReceiptOrder(List<ICMO> list) {
        return R.ok();
    }
}
src/main/java/com/zy/asrs/service/impl/ReceiveRecordServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.ReceiveRecordMapper;
import com.zy.asrs.entity.ReceiveRecord;
import com.zy.asrs.service.ReceiveRecordService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("receiveRecordService")
public class ReceiveRecordServiceImpl extends ServiceImpl<ReceiveRecordMapper, ReceiveRecord> implements ReceiveRecordService {
}
src/main/java/com/zy/asrs/utils/ERPDateUtils.java
@@ -10,15 +10,16 @@
        LocalDateTime dateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
        LocalDate date = dateTime.toLocalDate();
        LocalDateTime startOfDay = date.atStartOfDay();
        LocalDateTime endOfDay = date.atTime(LocalTime.MAX);
//        LocalDateTime startOfDay = date.atStartOfDay();
//        LocalDateTime endOfDay = date.atTime(LocalTime.MAX);
//
//        // 5. 格式化输出
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//        String startStr = startOfDay.format(formatter);
//        String endStr = endOfDay.format(formatter).split("\\.")[0]; // 去除纳秒部分
        // 5. 格式化输出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String startStr = startOfDay.format(formatter);
        String endStr = endOfDay.format(formatter).split("\\.")[0]; // 去除纳秒部分
//        return startStr + " - " + endStr;
        return startStr + " - " + endStr;
        return date.toString();
    }
}
src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
        generator.url="127.0.0.1:1433;databasename=AIS20201127144525";
        generator.username="sa";
        generator.password="sa@123";
        generator.table="t_Department";
        generator.table="mo_receive_record";
        generator.packagePath="com.zy.asrs";
        generator.html=false;
        generator.htmlDetail=false;
src/main/java/com/zy/kingdee/controller/KingdeeContorller.java
@@ -1,32 +1,34 @@
package com.zy.kingdee.controller;
import cn.hutool.core.date.DatePattern;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.annotations.AppAuth;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.ICMO;
import com.zy.common.constant.ApiInterfaceConstant;
import com.zy.common.utils.HttpHandler;
import com.zy.kingdee.entity.PoInStockDTO;
import com.zy.kingdee.entity.ResDto;
import com.zy.kingdee.utils.ERPDateUtil;
import com.zy.kingdee.utils.K3ApiUtil;
import com.zy.kingdee.utils.KingDeeUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import okhttp3.internal.http.HttpMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.*;
@RestController
@RequestMapping("kingdee")
@@ -111,4 +113,78 @@
        return R.ok(parseObject.get("data"));
    }
//    @PostMapping("/other/synchronizeTheReceiptOrder/v1")
//    @ManagerAuth()
//    @AppAuth(memo = "金蝶新增收料通知单")
//        public R synchronizeTheReceiptOrder(@RequestBody List<ICMO> icmos) {
//        if (null == K3ApiUtil.TokenRes){
//            K3ApiUtil.init();
//        }
//        Map<String, String> map = new LinkedHashMap<>();
//        map.put("access_token", K3ApiUtil.TokenRes.getAccessToken());
//        Map<String, Object> jsonMap = new HashMap<>();
//        jsonMap.put("AccountDB","004");
//        jsonMap.put("Object",getPoInStockDto(icmos));
//
//
//        String resStr = HttpRequest.post("api.kingdee.com" + "/koas/app007140/api/materialreceiptnotice/create" + K3ApiUtil.getMapStr(map))
//                .header("KIS-Timestamp", Long.toString(System.currentTimeMillis() / 1000L))
//                .header("KIS-State", "TEST" + K3ApiUtil.getNonce(12))
//                .header("KIS-TraceID", "TEST")
//                .header("KIS-Ver", "1.0")
//                .header("KIS-AuthData", K3ApiUtil.gatewayDto.getData().getAuthData())
//                .header("X-Api-SignHeaders", "X-Api-TimeStamp,X-Api-Nonce")
//                .header("X-GW-Router-Addr", K3ApiUtil.gatewayDto.getData().getGwRouterAddr())
//                .contentType("application/json")
//                .body(JSON.toJSONString(jsonMap))
//                .execute()
//                .body();
//
//        JSONObject parseObject = JSON.parseObject(resStr);
//        if (parseObject.get("errcode").hashCode() != 0) {
//            throw new CoolException(parseObject.get("description").toString());
//        }
//        return R.ok(parseObject.get("data"));
//    }
//    @SneakyThrows
//    public PoInStockDTO getPoInStockDto(List<ICMO> icmos)  {
//        PoInStockDTO.HeadDTO headDTO = new PoInStockDTO.HeadDTO();
//        headDTO.setFBillNo("test001");
//        headDTO.setFSupplyID(icmos.get(0).getFSupplyID());
//        headDTO.setFCurrencyID(1);
//        headDTO.setFdate(ERPDateUtil.getDateStr(new Date(), "yyyy-MM-dd"));
//        headDTO.setFExchangeRate(1D);
//        headDTO.setFDeptID(11376);
//        headDTO.setFEmpID(11375);
//        headDTO.setFPOStyle(252);
//        headDTO.setFBizType(12510);
//        headDTO.setFWWType(0);
//        headDTO.setFAreaPS(20302);
//
//        List<PoInStockDTO.EntryDTO> entryDTOS = new ArrayList<>();
//        for (ICMO icmo: icmos){
//            PoInStockDTO.EntryDTO entryDTO = new PoInStockDTO.EntryDTO();
//            entryDTO.setFAuxPropID(icmo.getFAuxPropID());
//            entryDTO.setFBatchNo(icmo.getFGMPBatchNo());
//            entryDTO.setFCheckMethod(352);
//            entryDTO.setFMTONo(icmo.getFMTONo());
//            entryDTO.setFPlanMode(icmo.getFPlanMode());
//            entryDTO.setFSecCoefficient(1D);
//            entryDTO.setFSecQty(icmo.getFQty());
//            entryDTO.setFUnitID(icmo.getFUnitID().toString());
//            entryDTOS.add(entryDTO);
//
//        }
//        PoInStockDTO poInStockDTO = new PoInStockDTO();
//        poInStockDTO.setHead(headDTO);
//        poInStockDTO.setEntry(entryDTOS);
//
//
//        return poInStockDTO;
//    }
}
src/main/java/com/zy/kingdee/entity/IcmoDTO.java
New file
@@ -0,0 +1,175 @@
package com.zy.kingdee.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class IcmoDTO {
    private String izJb;
    private String izJs;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dateStart;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dateEnd;
    private BigDecimal qty;
    private String unit;
    private String invCode;
    private String invName;
    private String invStd;
    private String depName;
    private String depCode;
    private Integer depId;
    private String soCode;
    private Integer whId;
    private String whName;
    private String venName;
    private Integer venId;
    private Integer fsource;
    private Integer ferpclsid;
    private String iz_sync_receive;
    private String izSyncReceive;
    private String izPrint;
    private String iz_sync_receive_return;
    private String izSyncReceiveReturn;
    private String izPrintReturn;
    private BigDecimal forderprice;
    private Integer finterid;
    private String fbrno;
    private String fbillno;
    private Short ftrantype;
    private Short fstatus;
    private Short fmrp;
    private Short ftype;
    private Integer fworkshop;
    private Integer fitemid;
    private BigDecimal fqty;
    private BigDecimal fcommitqty;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date fplancommitdate;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date fplanfinishdate;
    private Integer fconveyerid;
    private Date fcommitdate;
    private Integer fcheckerid;
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date fcheckdate;
    private Integer frequesterid;
    private Integer fbillerid;
    private Integer fsourceentryid;
    private Short fclosed;
    private String fnote;
    private Integer funitid;
    private BigDecimal fauxcommitqty;
    private BigDecimal fauxqty;
    private Integer forderinterid;
    private Integer fpporderinterid;
    private Integer fparentinterid;
    private Boolean fcancellation;
    private Integer fsupplyid;
    private BigDecimal fqtyfinish;
    private BigDecimal fqtyscrap;
    private BigDecimal fqtyforitem;
    private BigDecimal fqtylost;
    private Date fplanissuedate;
    private String froutingid;
    private Date fstartdate;
    private Date ffinishdate;
    private BigDecimal fauxqtyfinish;
    private BigDecimal fauxqtyscrap;
    private BigDecimal fauxqtyforitem;
    private BigDecimal fauxqtylost;
    private Integer fmrpclosed;
    private Integer fbominterid;
    private BigDecimal fqtypass;
    private BigDecimal fauxqtypass;
    private BigDecimal fqtyback;
    private BigDecimal fauxqtyback;
    private BigDecimal ffinishtime;
    private BigDecimal freadytime;
    private BigDecimal fpowercuttime;
    private BigDecimal ffixtime;
    private BigDecimal fwaititemtime;
    private BigDecimal fwaittooltime;
    private Integer ftaskid;
    private Integer fworktypeid;
    private Integer fcostobjid;
    private BigDecimal fstockqty;
    private BigDecimal fauxstockqty;
    private Boolean fsuspend;
    private Integer fprojectno;
    private Integer fproductionlineid;
    private BigDecimal freleasedqty;
    private BigDecimal freleasedauxqty;
    private BigDecimal funscheduledqty;
    private BigDecimal funscheduledauxqty;
    private Integer fsubentryid;
    private Integer fscheduleid;
    private Integer fplanorderinterid;
    private BigDecimal fprocessprice;
    private BigDecimal fprocessfee;
    private String fgmpbatchno;
    private BigDecimal fgmpcollectrate;
    private BigDecimal fgmpitembalance;
    private BigDecimal fgmpbulkqty;
    private Integer fcustid;
    private Integer fmultichecklevel1;
    private Integer fmultichecklevel2;
    private Integer fmultichecklevel3;
    private Integer fmultichecklevel4;
    private Integer fmultichecklevel5;
    private Integer fmultichecklevel6;
    private Date fmulticheckdate1;
    private Date fmulticheckdate2;
    private Date fmulticheckdate3;
    private Date fmulticheckdate4;
    private Date fmulticheckdate5;
    private Date fmulticheckdate6;
    private Integer fcurchecklevel;
    private Integer fmrplockflag;
    private Integer fhandworkclose;
    private Integer fconfirmerid;
    private Date fconfirmdate;
    private BigDecimal finhighlimit;
    private BigDecimal finhighlimitqty;
    private BigDecimal fauxinhighlimitqty;
    private BigDecimal finlowlimit;
    private BigDecimal finlowlimitqty;
    private BigDecimal fauxinlowlimitqty;
    private Integer fchangetimes;
    private BigDecimal fcheckcommitqty;
    private BigDecimal fauxcheckcommitqty;
    private Date fclosedate;
    private Integer fplanconfirmed;
    private Integer fplanmode;
    private String fmtono;
    private Integer fprintcount;
    private Integer ffinclosed;
    private Integer ffincloseer;
    private Date ffinclosedate;
    private Integer fstockflag;
    private Integer fstartflag;
    private String fvchbillno;
    private Integer fvchinterid;
    private Integer fcardclosed;
    private BigDecimal fhrreadytime;
    private Integer fsourcetrantype;
    private Integer fsourceinterid;
    private String fsourcebillno;
    private Integer fdiscardstockinqty;
    private Integer fseldiscardstockinqty;
    private String fplancategory;
    private Integer fauxpropid;
    private Integer tflag;
    private Integer tFlag;
    private String statusId;
}
src/main/java/com/zy/kingdee/entity/PoInStockDTO.java
New file
@@ -0,0 +1,44 @@
package com.zy.kingdee.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class PoInStockDTO {
        private HeadDTO Head;
        private List<EntryDTO> Entry;
        @NoArgsConstructor
        @Data
        public static class HeadDTO {
            private String FBillNo; //单据编号
            private Integer FSupplyID; //供应商ID
            private Integer FCurrencyID; //币别ID
            private String Fdate; //日期ISO8601时间格式
            private Double FExchangeRate; //汇率
            private Integer FDeptID; //部门ID
            private Integer FEmpID; //业务员ID
            private Integer FPOStyle; //采购方式
            private Integer FBizType; //业务类型
            private Integer FWWType; //委外类型
            private Integer FAreaPS; //采购范围
        }
        @NoArgsConstructor
        @Data
        public static class EntryDTO {
            private Integer FAuxPropID; //辅助属性ID
            private String FBatchNo; //批号
            private Integer FCheckMethod; //检验方式
            private String FMTONo; //计划跟踪号
            private Integer FPlanMode; //计划模式
            private Double FSecCoefficient; //换算率
            private Double FSecQty; //辅助数量
            private String FUnitID; //单位
        }
    }
src/main/java/com/zy/kingdee/entity/PoOrder.java
New file
@@ -0,0 +1,13 @@
package com.zy.kingdee.entity;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PoOrder {
    private String fentryselfp0262;
    private Integer fitemid;
    private BigDecimal fentryselfp0263;
}
src/main/java/com/zy/kingdee/entity/SubContract.java
New file
@@ -0,0 +1,14 @@
package com.zy.kingdee.entity;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class SubContract {
    private String forderno;
    private Integer fitemid;
    private BigDecimal fdecimal;
}
src/main/java/com/zy/kingdee/entity/Vendor.java
New file
@@ -0,0 +1,12 @@
package com.zy.kingdee.entity;
import lombok.Data;
@Data
public class Vendor {
    private Integer venId;
    private String venCode;
    private String venName;
}
src/main/java/com/zy/kingdee/utils/CustomStringUtils.java
New file
@@ -0,0 +1,57 @@
package com.zy.kingdee.utils;
import com.core.common.SpringUtils;
public class CustomStringUtils {
    public static boolean isBlank(Object... objects) {
        Boolean result = false;
        for (Object object : objects) {
            if (null == object || "".equals(object.toString().trim()) || "null".equals(object.toString().trim())) {
                result = true;
                break;
            }
        }
        return result.booleanValue();
    }
    public static boolean isNotBlank(Object... objects) {
        return !isBlank(objects);
    }
    public static boolean isBlank(String... objects) {
        return isBlank((Object[]) objects);
    }
    public static boolean isNotBlank(String... objects) {
        return !isBlank((Object[]) objects);
    }
    public static boolean isBlank(String str) {
        return isBlank(str);
    }
    public static boolean isNotBlank(String str) {
        return !isBlank(str);
    }
    public static int indexOf(String baseStr, String[] strings) {
        if (null == baseStr || baseStr.length() == 0 || null == strings) {
            return 0;
        }
        int i = 0;
        for (String string : strings) {
            boolean result = baseStr.equals(string);
            if (result) {
                i++;
            }
            i = i;
        }
        return i;
    }
    public static String trimToEmpty(Object str) {
        return isBlank(str) ? "" : str.toString().trim();
    }
}
src/main/java/com/zy/kingdee/utils/ERPDateUtil.java
New file
@@ -0,0 +1,78 @@
package com.zy.kingdee.utils;
import com.alibaba.excel.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class ERPDateUtil {
    public static int getDiffBetweenMonths(Date date1, Date date2) {
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTime(date1);
        c2.setTime(date2);
        int result = c2.get(2) - c1.get(2);
        int month = (c2.get(1) - c1.get(1)) * 12;
        return Math.abs(result + month);
    }
    public static Date getNextMonthDate(Date date, int afterMonth) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(2, calendar.get(2) + afterMonth);
        Date next = calendar.getTime();
        return next;
    }
    public static Date getFirstDate(String string) throws ParseException {
        if (StringUtils.isEmpty(string)) {
            return null;
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = simpleDateFormat.parse(string + "-01 00:00:00");
        return date;
    }
    public static String getNextDateStr(Date date, int afterDay) {
        Date nextDate = getNextDate(date, afterDay);
        String dateStr = getDateStr(nextDate, "yyyy-MM-dd");
        return dateStr;
    }
    public static Date getNextDate(Date date, int afterDay) {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        Integer day = Integer.valueOf(calendar.get(5));
        calendar.set(5, day.intValue() + afterDay);
        Date newDate = calendar.getTime();
        return newDate;
    }
    public static String getDateStr(Date date, String format) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        String s = simpleDateFormat.format(date);
        return s;
    }
    public static Date parseStrToDate(String string, String format) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        Date parse = simpleDateFormat.parse(string);
        return parse;
    }
    public static int getMonth(String string) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = simpleDateFormat.parse(string);
        int month = parse.getMonth() + 1;
        return month;
    }
    public static void main(String[] args) throws ParseException {
        Date a = getFirstDate("2018-8");
        System.out.print(a);
    }
}
src/main/java/com/zy/kingdee/utils/SnowFlakeUtils.java
New file
@@ -0,0 +1,79 @@
package com.zy.kingdee.utils;
public class SnowFlakeUtils {
    private static SnowFlakeUtils flowIdWorker = new SnowFlakeUtils(1);
    private final long id;
    private final long epoch = 1524291141010L;
    private final long workerIdBits = 10;
    private final long maxWorkerId;
    private final long sequenceBits = 12;
    private final long workerIdShift;
    private final long timestampLeftShift;
    private final long sequenceMask;
    private long sequence;
    private long lastTimestamp;
    private SnowFlakeUtils(long id) {
        getClass();
        this.maxWorkerId = (-1) ^ ((-1) << 10);
        getClass();
        this.workerIdShift = 12L;
        getClass();
        getClass();
        this.timestampLeftShift = 12 + 10;
        getClass();
        this.sequenceMask = (-1) ^ ((-1) << 12);
        this.sequence = 0L;
        this.lastTimestamp = -1L;
        if (id > this.maxWorkerId || id < 0) {
            throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", Long.valueOf(this.maxWorkerId)));
        }
        this.id = id;
    }
    public static SnowFlakeUtils getFlowIdInstance() {
        return flowIdWorker;
    }
    private static long timeGen() {
        return System.currentTimeMillis();
    }
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            SnowFlakeUtils snowFlakeUtils = getFlowIdInstance();
            System.out.println(snowFlakeUtils.nextId());
        }
    }
    public synchronized long nextId() {
        long timestamp = timeGen();
        if (this.lastTimestamp == timestamp) {
            this.sequence = (this.sequence + 1) & this.sequenceMask;
            if (this.sequence == 0) {
                timestamp = tilNextMillis(this.lastTimestamp);
            }
        } else {
            this.sequence = 0L;
        }
        if (timestamp < this.lastTimestamp) {
            return -1L;
        }
        this.lastTimestamp = timestamp;
        getClass();
        return ((timestamp - 1524291141010L) << ((int) this.timestampLeftShift)) | (this.id << ((int) this.workerIdShift)) | this.sequence;
    }
    private long tilNextMillis(long lastTimestamp) {
        long jTimeGen = timeGen();
        while (true) {
            long timestamp = jTimeGen;
            if (timestamp <= lastTimestamp) {
                jTimeGen = timeGen();
            } else {
                return timestamp;
            }
        }
    }
}
src/main/resources/mapper/ICBOMMapper.xml
New file
@@ -0,0 +1,137 @@
<?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.asrs.mapper.ICBOMMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ICBOM">
        <result column="FBrNo" property="FBrNo" />
        <result column="FInterID" property="FInterID" />
        <result column="FBOMNumber" property="FBOMNumber" />
        <result column="FImpMode" property="FImpMode" />
        <result column="FUseStatus" property="FUseStatus" />
        <result column="FVersion" property="FVersion" />
        <result column="FParentID" property="FParentID" />
        <result column="FItemID" property="FItemID" />
        <result column="FQty" property="FQty" />
        <result column="FYield" property="FYield" />
        <result column="FCheckID" property="FCheckID" />
        <result column="FCheckDate" property="FCheckDate" />
        <result column="FOperatorID" property="FOperatorID" />
        <result column="FEnterTime" property="FEnterTime" />
        <result column="FStatus" property="FStatus" />
        <result column="FCancellation" property="FCancellation" />
        <result column="FTranType" property="FTranType" />
        <result column="FRoutingID" property="FRoutingID" />
        <result column="FBomType" property="FBomType" />
        <result column="FCustID" property="FCustID" />
        <result column="FCustItemID" property="FCustItemID" />
        <result column="FAccessories" property="FAccessories" />
        <result column="FNote" property="FNote" />
        <result column="FUnitID" property="FUnitID" />
        <result column="FAUXQTY" property="FAUXQTY" />
        <result column="FCheckerID" property="FCheckerID" />
        <result column="FAudDate" property="FAudDate" />
        <result column="FEcnInterID" property="FEcnInterID" />
        <result column="FBeenChecked" property="FBeenChecked" />
        <result column="FForbid" property="FForbid" />
        <result column="FAuxPropID" property="FAuxPropID" />
        <result column="FPDMImportDate" property="FPDMImportDate" />
        <result column="FBOMSkip" property="FBOMSkip" />
        <result column="FClassTypeID" property="FClassTypeID" />
        <result column="FPrintCount" property="FPrintCount" />
        <result column="FUserID" property="FUserID" />
        <result column="FUseDate" property="FUseDate" />
        <result column="FCurCheckLevel" property="FCurCheckLevel" />
    </resultMap>
    <resultMap id="resultBomChild" type="com.zy.asrs.entity.BomChild" >
        <id column="FInterID" property="finterid" jdbcType="INTEGER" />
        <id column="FEntryID" property="fentryid" jdbcType="INTEGER" />
        <result column="FBrNo" property="fbrno" jdbcType="VARCHAR" />
        <result column="FItemID" property="fitemid" jdbcType="INTEGER" />
        <result column="FAuxQty" property="fauxqty" jdbcType="DECIMAL" />
        <result column="FQty" property="fqty" jdbcType="DECIMAL" />
        <result column="FScrap" property="fscrap" jdbcType="DECIMAL" />
        <result column="FOperSN" property="fopersn" jdbcType="INTEGER" />
        <result column="FOperID" property="foperid" jdbcType="INTEGER" />
        <result column="FMachinePos" property="fmachinepos" jdbcType="VARCHAR" />
        <result column="FNote" property="fnote" jdbcType="NVARCHAR" />
        <result column="FMaterielType" property="fmaterieltype" jdbcType="INTEGER" />
        <result column="FMarshalType" property="fmarshaltype" jdbcType="INTEGER" />
        <result column="FPercent" property="fpercent" jdbcType="DECIMAL" />
        <result column="FBeginDay" property="fbeginday" jdbcType="TIMESTAMP" />
        <result column="FEndDay" property="fendday" jdbcType="TIMESTAMP" />
        <result column="FOffSetDay" property="foffsetday" jdbcType="DECIMAL" />
        <result column="FBackFlush" property="fbackflush" jdbcType="INTEGER" />
        <result column="FStockID" property="fstockid" jdbcType="INTEGER" />
        <result column="FSPID" property="fspid" jdbcType="INTEGER" />
        <result column="FSupply" property="fsupply" jdbcType="SMALLINT" />
        <result column="FUnitID" property="funitid" jdbcType="INTEGER" />
        <result column="FAuxPropID" property="fauxpropid" jdbcType="INTEGER" />
        <result column="FPDMImportDate" property="fpdmimportdate" jdbcType="TIMESTAMP" />
        <result column="FPositionNo" property="fpositionno" jdbcType="NVARCHAR" />
        <result column="FItemSize" property="fitemsize" jdbcType="NVARCHAR" />
        <result column="FItemSuite" property="fitemsuite" jdbcType="NVARCHAR" />
        <result column="FNote1" property="fnote1" jdbcType="NVARCHAR" />
        <result column="FNote2" property="fnote2" jdbcType="NVARCHAR" />
        <result column="FNote3" property="fnote3" jdbcType="NVARCHAR" />
        <result column="FHasChar" property="fhaschar" jdbcType="SMALLINT" />
        <result column="FDetailID" property="fdetailid" jdbcType="CHAR" />
        <result column="FEntryKey" property="fentrykey" jdbcType="INTEGER" />
        <result column="FCostPercentage" property="fcostpercentage" jdbcType="DECIMAL" />
        <result column="FErpClsID" property="ferpclsid" jdbcType="INTEGER" />
        <result column="FSource" property="fsource" jdbcType="INTEGER" />
        <result column="invCode" property="invCode" jdbcType="VARCHAR" />
        <result column="invName" property="invName" jdbcType="VARCHAR" />
        <result column="invStd" property="invStd" jdbcType="VARCHAR" />
        <result column="unit" property="unit" jdbcType="VARCHAR" />
        <result column="whName" property="whName" jdbcType="VARCHAR" />
        <result column="whId" property="whId" jdbcType="INTEGER" />
        <result column="venName" property="venName" jdbcType="VARCHAR" />
        <result column="venId" property="venId" jdbcType="INTEGER" />
        <result column="invClassCode" property="invClassCode" jdbcType="VARCHAR" />
        <result column="gramWeight" property="gramWeight" jdbcType="DECIMAL" />
        <result column="forderprice" property="forderprice" jdbcType="DECIMAL" />
        <result column="FPlanner" property="fplanner" jdbcType="INTEGER" />
    </resultMap>
    <update id="updateMaxNum" parameterType="com.zy.asrs.entity.ICBOM">
        update ICMaxNum set fmaxnum =#{finterid,jdbcType=INTEGER}
        where  FTableName =#{tableName,jdbcType=VARCHAR}
    </update>
    <select id="getListByChild"  resultMap="resultBomChild">
        select
            t.*,inv.FErpClsID,inv.FSource,inv.FNumber invCode,inv.FName invName,inv.FModel invStd,inv.FUnitID,unit.FName unit
                ,wh.FName whName,inv.fdefaultloc whId ,inv1.fsource venId,ven.FName venName,t2.FNumber invClassCode,inv.FNetWeight gramWeight,
            inv.FOrderPrice forderprice,inv.FPlanner
        from  ICBOMCHILD t
                  left join ICBOM t1 on t.FInterID=t1.FInterID
                  left join ICBOMGROUP t2 on t2.FInterID=t1.FParentID
                  left join t_icitem inv on t.FItemID=inv.FItemID
                  left join t_item unit on inv.FUnitID=unit.FItemID
                  left join t_item  wh on inv.fdefaultloc=wh.FItemID
                  left join t_icitem inv1 on t1.FItemID=inv1.FItemID
                  left join  t_item ven on inv1.FSource=ven.FItemID
        where
            t1.FUseStatus=1072 and
            t1.FItemID= #{main.fitemid,jdbcType=INTEGER}
        order by inv.FNumber
    </select>
    <select id="getList" resultType="com.zy.asrs.entity.ICBOM">
        select
            *
        from  ICBOM
        where FUseStatus=1072 and
            fitemid= #{main.FItemID,jdbcType=INTEGER}
        order by finterid
    </select>
</mapper>
src/main/resources/mapper/ICMOMapper.xml
@@ -135,5 +135,211 @@
        <result column="iz_print_return" property="izPrintReturn" />
    </resultMap>
    <resultMap id="resultMapDTO" type="com.zy.kingdee.entity.IcmoDTO" >
        <id column="FInterID" property="finterid" jdbcType="INTEGER" />
        <result column="FBrNo" property="fbrno" jdbcType="VARCHAR" />
        <result column="FBillNo" property="fbillno" jdbcType="VARCHAR" />
        <result column="FTranType" property="ftrantype" jdbcType="SMALLINT" />
        <result column="FStatus" property="fstatus" jdbcType="SMALLINT" />
        <result column="FMRP" property="fmrp" jdbcType="SMALLINT" />
        <result column="FType" property="ftype" jdbcType="SMALLINT" />
        <result column="FWorkShop" property="fworkshop" jdbcType="INTEGER" />
        <result column="FItemID" property="fitemid" jdbcType="INTEGER" />
        <result column="FQty" property="fqty" jdbcType="DECIMAL" />
        <result column="FCommitQty" property="fcommitqty" jdbcType="DECIMAL" />
        <result column="FPlanCommitDate" property="fplancommitdate" jdbcType="TIMESTAMP" />
        <result column="FPlanFinishDate" property="fplanfinishdate" jdbcType="TIMESTAMP" />
        <result column="FConveyerID" property="fconveyerid" jdbcType="INTEGER" />
        <result column="FCommitDate" property="fcommitdate" jdbcType="TIMESTAMP" />
        <result column="FCheckerID" property="fcheckerid" jdbcType="INTEGER" />
        <result column="FCheckDate" property="fcheckdate" jdbcType="TIMESTAMP" />
        <result column="FRequesterID" property="frequesterid" jdbcType="INTEGER" />
        <result column="FBillerID" property="fbillerid" jdbcType="INTEGER" />
        <result column="FSourceEntryID" property="fsourceentryid" jdbcType="INTEGER" />
        <result column="FClosed" property="fclosed" jdbcType="SMALLINT" />
        <result column="FNote" property="fnote" jdbcType="VARCHAR" />
        <result column="FUnitID" property="funitid" jdbcType="INTEGER" />
        <result column="FAuxCommitQty" property="fauxcommitqty" jdbcType="DECIMAL" />
        <result column="FAuxQty" property="fauxqty" jdbcType="DECIMAL" />
        <result column="FOrderInterID" property="forderinterid" jdbcType="INTEGER" />
        <result column="FPPOrderInterID" property="fpporderinterid" jdbcType="INTEGER" />
        <result column="FParentInterID" property="fparentinterid" jdbcType="INTEGER" />
        <result column="FCancellation" property="fcancellation" jdbcType="BIT" />
        <result column="FSupplyID" property="fsupplyid" jdbcType="INTEGER" />
        <result column="FQtyFinish" property="fqtyfinish" jdbcType="DECIMAL" />
        <result column="FQtyScrap" property="fqtyscrap" jdbcType="DECIMAL" />
        <result column="FQtyForItem" property="fqtyforitem" jdbcType="DECIMAL" />
        <result column="FQtyLost" property="fqtylost" jdbcType="DECIMAL" />
        <result column="FPlanIssueDate" property="fplanissuedate" jdbcType="TIMESTAMP" />
        <result column="FRoutingID" property="froutingid" jdbcType="NVARCHAR" />
        <result column="FStartDate" property="fstartdate" jdbcType="TIMESTAMP" />
        <result column="FFinishDate" property="ffinishdate" jdbcType="TIMESTAMP" />
        <result column="FAuxQtyFinish" property="fauxqtyfinish" jdbcType="DECIMAL" />
        <result column="FAuxQtyScrap" property="fauxqtyscrap" jdbcType="DECIMAL" />
        <result column="FAuxQtyForItem" property="fauxqtyforitem" jdbcType="DECIMAL" />
        <result column="FAuxQtyLost" property="fauxqtylost" jdbcType="DECIMAL" />
        <result column="FMrpClosed" property="fmrpclosed" jdbcType="INTEGER" />
        <result column="FBomInterID" property="fbominterid" jdbcType="INTEGER" />
        <result column="FQtyPass" property="fqtypass" jdbcType="DECIMAL" />
        <result column="FAuxQtyPass" property="fauxqtypass" jdbcType="DECIMAL" />
        <result column="FQtyBack" property="fqtyback" jdbcType="DECIMAL" />
        <result column="FAuxQtyBack" property="fauxqtyback" jdbcType="DECIMAL" />
        <result column="FFinishTime" property="ffinishtime" jdbcType="DECIMAL" />
        <result column="FReadyTIme" property="freadytime" jdbcType="DECIMAL" />
        <result column="FPowerCutTime" property="fpowercuttime" jdbcType="DECIMAL" />
        <result column="FFixTime" property="ffixtime" jdbcType="DECIMAL" />
        <result column="FWaitItemTime" property="fwaititemtime" jdbcType="DECIMAL" />
        <result column="FWaitToolTime" property="fwaittooltime" jdbcType="DECIMAL" />
        <result column="FTaskID" property="ftaskid" jdbcType="INTEGER" />
        <result column="FWorkTypeID" property="fworktypeid" jdbcType="INTEGER" />
        <result column="FCostObjID" property="fcostobjid" jdbcType="INTEGER" />
        <result column="FStockQty" property="fstockqty" jdbcType="DECIMAL" />
        <result column="FAuxStockQty" property="fauxstockqty" jdbcType="DECIMAL" />
        <result column="FSuspend" property="fsuspend" jdbcType="BIT" />
        <result column="FProjectNO" property="fprojectno" jdbcType="INTEGER" />
        <result column="FProductionLineID" property="fproductionlineid" jdbcType="INTEGER" />
        <result column="FReleasedQty" property="freleasedqty" jdbcType="DECIMAL" />
        <result column="FReleasedAuxQty" property="freleasedauxqty" jdbcType="DECIMAL" />
        <result column="FUnScheduledQty" property="funscheduledqty" jdbcType="DECIMAL" />
        <result column="FUnScheduledAuxQty" property="funscheduledauxqty" jdbcType="DECIMAL" />
        <result column="FSubEntryID" property="fsubentryid" jdbcType="INTEGER" />
        <result column="FScheduleID" property="fscheduleid" jdbcType="INTEGER" />
        <result column="FPlanOrderInterID" property="fplanorderinterid" jdbcType="INTEGER" />
        <result column="FProcessPrice" property="fprocessprice" jdbcType="DECIMAL" />
        <result column="FProcessFee" property="fprocessfee" jdbcType="DECIMAL" />
        <result column="FGMPBatchNo" property="fgmpbatchno" jdbcType="VARCHAR" />
        <result column="FGMPCollectRate" property="fgmpcollectrate" jdbcType="DECIMAL" />
        <result column="FGMPItemBalance" property="fgmpitembalance" jdbcType="DECIMAL" />
        <result column="FGMPBulkQty" property="fgmpbulkqty" jdbcType="DECIMAL" />
        <result column="FCustID" property="fcustid" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel1" property="fmultichecklevel1" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel2" property="fmultichecklevel2" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel3" property="fmultichecklevel3" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel4" property="fmultichecklevel4" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel5" property="fmultichecklevel5" jdbcType="INTEGER" />
        <result column="FMultiCheckLevel6" property="fmultichecklevel6" jdbcType="INTEGER" />
        <result column="FMultiCheckDate1" property="fmulticheckdate1" jdbcType="TIMESTAMP" />
        <result column="FMultiCheckDate2" property="fmulticheckdate2" jdbcType="TIMESTAMP" />
        <result column="FMultiCheckDate3" property="fmulticheckdate3" jdbcType="TIMESTAMP" />
        <result column="FMultiCheckDate4" property="fmulticheckdate4" jdbcType="TIMESTAMP" />
        <result column="FMultiCheckDate5" property="fmulticheckdate5" jdbcType="TIMESTAMP" />
        <result column="FMultiCheckDate6" property="fmulticheckdate6" jdbcType="TIMESTAMP" />
        <result column="FCurCheckLevel" property="fcurchecklevel" jdbcType="INTEGER" />
        <result column="FMRPLockFlag" property="fmrplockflag" jdbcType="INTEGER" />
        <result column="FHandworkClose" property="fhandworkclose" jdbcType="INTEGER" />
        <result column="FConfirmerID" property="fconfirmerid" jdbcType="INTEGER" />
        <result column="FConfirmDate" property="fconfirmdate" jdbcType="TIMESTAMP" />
        <result column="FInHighLimit" property="finhighlimit" jdbcType="DECIMAL" />
        <result column="FInHighLimitQty" property="finhighlimitqty" jdbcType="DECIMAL" />
        <result column="FAuxInHighLimitQty" property="fauxinhighlimitqty" jdbcType="DECIMAL" />
        <result column="FInLowLimit" property="finlowlimit" jdbcType="DECIMAL" />
        <result column="FInLowLimitQty" property="finlowlimitqty" jdbcType="DECIMAL" />
        <result column="FAuxInLowLimitQty" property="fauxinlowlimitqty" jdbcType="DECIMAL" />
        <result column="FChangeTimes" property="fchangetimes" jdbcType="INTEGER" />
        <result column="FCheckCommitQty" property="fcheckcommitqty" jdbcType="DECIMAL" />
        <result column="FAuxCheckCommitQty" property="fauxcheckcommitqty" jdbcType="DECIMAL" />
        <result column="FCloseDate" property="fclosedate" jdbcType="TIMESTAMP" />
        <result column="FPlanConfirmed" property="fplanconfirmed" jdbcType="INTEGER" />
        <result column="FPlanMode" property="fplanmode" jdbcType="INTEGER" />
        <result column="FMTONo" property="fmtono" jdbcType="NVARCHAR" />
        <result column="FPrintCount" property="fprintcount" jdbcType="INTEGER" />
        <result column="FFinClosed" property="ffinclosed" jdbcType="INTEGER" />
        <result column="FFinCloseer" property="ffincloseer" jdbcType="INTEGER" />
        <result column="FFinClosedate" property="ffinclosedate" jdbcType="TIMESTAMP" />
        <result column="FStockFlag" property="fstockflag" jdbcType="INTEGER" />
        <result column="FStartFlag" property="fstartflag" jdbcType="INTEGER" />
        <result column="FVchBillNo" property="fvchbillno" jdbcType="VARCHAR" />
        <result column="FVchInterID" property="fvchinterid" jdbcType="INTEGER" />
        <result column="FCardClosed" property="fcardclosed" jdbcType="INTEGER" />
        <result column="FHRReadyTime" property="fhrreadytime" jdbcType="DECIMAL" />
        <result column="FSourceTranType" property="fsourcetrantype" jdbcType="INTEGER" />
        <result column="FSourceInterId" property="fsourceinterid" jdbcType="INTEGER" />
        <result column="FSourceBillNo" property="fsourcebillno" jdbcType="NVARCHAR" />
        <result column="FDiscardStockInQty" property="fdiscardstockinqty" jdbcType="INTEGER" />
        <result column="FSelDiscardStockInQty" property="fseldiscardstockinqty" jdbcType="INTEGER" />
        <result column="FPlanCategory" property="fplancategory" jdbcType="NVARCHAR" />
        <result column="FAuxPropID" property="fauxpropid" jdbcType="INTEGER" />
        <result column="Tflag" property="tflag" jdbcType="INTEGER" />
        <result column="T_flag" property="tFlag" jdbcType="INTEGER" />
        <result column="invCode" property="invCode" jdbcType="VARCHAR" />
        <result column="invName" property="invName" jdbcType="VARCHAR" />
        <result column="invStd" property="invStd" jdbcType="VARCHAR" />
        <result column="depId" property="depId" jdbcType="INTEGER" />
        <result column="depName" property="depName" jdbcType="VARCHAR" />
        <result column="depCode" property="depCode" jdbcType="VARCHAR" />
        <result column="soCode" property="soCode" jdbcType="VARCHAR" />
        <result column="iz_sync_receive" property="izSyncReceive"  />
        <result column="iz_print" property="izPrint" jdbcType="VARCHAR" />
        <result column="iz_sync_receive_return" property="izSyncReceiveReturn"  />
        <result column="iz_print_return" property="izPrintReturn" jdbcType="VARCHAR" />
        <result column="statusId" property="statusId" jdbcType="VARCHAR" />
    </resultMap>
    <update id="updateMaxNum" >
        update ICMaxNum set fmaxnum =#{finterid,jdbcType=INTEGER}
        where  FTableName =#{tableName,jdbcType=VARCHAR}
    </update>
    <select id="getIcmoDTOList" resultType="com.zy.kingdee.entity.IcmoDTO">
        select
        inv.FNumber invCode,inv.FName invName,inv.FModel invStd,dep.FName depName,dep.FNumber depCode,so.FBillNo soCode,t.*
        from  ICMO t
        left join t_IcItem inv on t.FItemID=inv.FItemID
        left join t_Department dep on t.FWorkShop=dep.FItemID
        left join SeOrder so on t.FOrderInterID=so.FInterID
        where 1=1 and case when so.FBillNo is null then '' else so.FBillNo end !=''
        and t.Fstatus=1
        <if test="main.finterid != null  ">
            and t.finterid= #{main.finterid,jdbcType=VARCHAR}
        </if>
        <if test="main.dateStart != null ">
            and t.fplancommitdate >= #{main.dateStart, jdbcType=TIMESTAMP}
        </if>
        <if test="main.dateEnd != null  ">
            and t.fplancommitdate &lt; #{main.dateEnd, jdbcType=TIMESTAMP}
        </if>
        <if test="main.fplancommitdate != null  ">
            and t.fplancommitdate= #{main.fplancommitdate,jdbcType=TIMESTAMP}
        </if>
        <if test="main.depName != null and main.depName!=''">
            and dep.FNumber like '%'+#{main.depName}+'%'
        </if>
        <if test="main.depId != null ">
            and t.FWorkShop= #{main.depId,jdbcType=INTEGER}
        </if>
        <if test="main.soCode != null and main.soCode!=''">
            and so.FBillNo like '%'+#{main.soCode}+'%'
        </if>
        <if test='main.izPrint != null and main.izPrint == "是"'>
            and t.iz_print='是'
        </if>
        <if test='main.izPrint != null and main.izPrint == "否"'>
            and case when t.iz_print is null then '' else t.iz_print end  !='是'
        </if>
    </select>
    <resultMap id="VendorBaseResultMap" type="com.zy.kingdee.entity.Vendor">
        <result column="venId" property="venId" jdbcType="INTEGER" />
        <result column="venName" property="venName" jdbcType="VARCHAR" />
        <result column="venCode" property="venCode" jdbcType="VARCHAR" />
    </resultMap>
    <select id="getVendorList" parameterType="com.zy.kingdee.entity.Vendor" resultMap="VendorBaseResultMap">
        select FItemID venId, FName venName,FNumber venCode
        from t_Supplier
        where 1=1
        <if test="venId != null ">
            and FItemID= #{venId,jdbcType=INTEGER}
        </if>
        <if test="venCode != null and venCode !='' ">
            and FNumber= #{venCode,jdbcType=VARCHAR}
        </if>
        order by FNumber
    </select>
</mapper>
src/main/resources/mapper/POInStockEntryMapper.xml
New file
@@ -0,0 +1,89 @@
<?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.asrs.mapper.POInStockEntryMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.POInStockEntry">
        <id column="FDetailID" property="FDetailID" />
        <result column="FBrNo" property="FBrNo" />
        <result column="FInterID" property="FInterID" />
        <result column="FEntryID" property="FEntryID" />
        <result column="FItemID" property="FItemID" />
        <result column="FQty" property="FQty" />
        <result column="FCommitQty" property="FCommitQty" />
        <result column="FPrice" property="FPrice" />
        <result column="FAmount" property="FAmount" />
        <result column="FNote" property="FNote" />
        <result column="FInvoiceQty" property="FInvoiceQty" />
        <result column="FBCommitQty" property="FBCommitQty" />
        <result column="FQCheckQty" property="FQCheckQty" />
        <result column="FAuxQCheckQty" property="FAuxQCheckQty" />
        <result column="FUnitID" property="FUnitID" />
        <result column="FAuxBCommitQty" property="FAuxBCommitQty" />
        <result column="FAuxCommitQty" property="FAuxCommitQty" />
        <result column="FAuxInvoiceQty" property="FAuxInvoiceQty" />
        <result column="FAuxPrice" property="FAuxPrice" />
        <result column="FAuxQty" property="FAuxQty" />
        <result column="FSourceEntryID" property="FSourceEntryID" />
        <result column="FQtyPass" property="FQtyPass" />
        <result column="FAuxQtyPass" property="FAuxQtyPass" />
        <result column="FMapNumber" property="FMapNumber" />
        <result column="FMapName" property="FMapName" />
        <result column="FBatchNo" property="FBatchNo" />
        <result column="FKFDate" property="FKFDate" />
        <result column="FKFPeriod" property="FKFPeriod" />
        <result column="FDCSPID" property="FDCSPID" />
        <result column="FAuxPropID" property="FAuxPropID" />
        <result column="FDCStockID" property="FDCStockID" />
        <result column="FFetchDate" property="FFetchDate" />
        <result column="FSecCoefficient" property="FSecCoefficient" />
        <result column="FSecQty" property="FSecQty" />
        <result column="FSecCommitQty" property="FSecCommitQty" />
        <result column="FSourceTranType" property="FSourceTranType" />
        <result column="FSourceInterId" property="FSourceInterId" />
        <result column="FSourceBillNo" property="FSourceBillNo" />
        <result column="FContractInterID" property="FContractInterID" />
        <result column="FContractEntryID" property="FContractEntryID" />
        <result column="FContractBillNo" property="FContractBillNo" />
        <result column="FOrderInterID" property="FOrderInterID" />
        <result column="FOrderEntryID" property="FOrderEntryID" />
        <result column="FOrderBillNo" property="FOrderBillNo" />
        <result column="FStockID" property="FStockID" />
        <result column="FPeriodDate" property="FPeriodDate" />
        <result column="FNotPassQty" property="FNotPassQty" />
        <result column="FNPCommitQty" property="FNPCommitQty" />
        <result column="FSampleBreakQty" property="FSampleBreakQty" />
        <result column="FConPassQty" property="FConPassQty" />
        <result column="FConCommitQty" property="FConCommitQty" />
        <result column="FAuxNotPassQty" property="FAuxNotPassQty" />
        <result column="FAuxNPCommitQty" property="FAuxNPCommitQty" />
        <result column="FAuxSampleBreakQty" property="FAuxSampleBreakQty" />
        <result column="FAuxConPassQty" property="FAuxConPassQty" />
        <result column="FAuxConCommitQty" property="FAuxConCommitQty" />
        <result column="FAuxRelateQty" property="FAuxRelateQty" />
        <result column="FRelateQty" property="FRelateQty" />
        <result column="FBackQty" property="FBackQty" />
        <result column="FAuxBackQty" property="FAuxBackQty" />
        <result column="FSecBackQty" property="FSecBackQty" />
        <result column="FSecConCommitQty" property="FSecConCommitQty" />
        <result column="FPlanMode" property="FPlanMode" />
        <result column="FMTONo" property="FMTONo" />
        <result column="FOrderType" property="FOrderType" />
        <result column="FCheckMethod" property="FCheckMethod" />
        <result column="FSecConPassQty" property="FSecConPassQty" />
        <result column="FSecQCheckQty" property="FSecQCheckQty" />
        <result column="FSecRelateQty" property="FSecRelateQty" />
        <result column="FSecQtyPass" property="FSecQtyPass" />
        <result column="FSecNotPassQty" property="FSecNotPassQty" />
        <result column="FComplexQty" property="FComplexQty" />
        <result column="FBarCode" property="FBarCode" />
        <result column="FBTPLCommitQty" property="FBTPLCommitQty" />
        <result column="FTPLCommitQty" property="FTPLCommitQty" />
        <result column="FEntrySelfP0362" property="FEntrySelfP0362" />
        <result column="FEntrySelfP0365" property="FEntrySelfP0365" />
        <result column="FEntrySelfP0440" property="FEntrySelfP0440" />
    </resultMap>
</mapper>
src/main/resources/mapper/POInStockMapper.xml
New file
@@ -0,0 +1,150 @@
<?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.asrs.mapper.POInStockMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.POInStock">
        <result column="FBrNo" property="FBrNo" />
        <result column="FInterID" property="FInterID" />
        <result column="FBillNo" property="FBillNo" />
        <result column="FCurrencyID" property="FCurrencyID" />
        <result column="FTranType" property="FTranType" />
        <result column="FSupplyID" property="FSupplyID" />
        <result column="FDeptID" property="FDeptID" />
        <result column="FEmpID" property="FEmpID" />
        <result column="FDate" property="FDate" />
        <result column="FStockID" property="FStockID" />
        <result column="FPosterID" property="FPosterID" />
        <result column="FCheckerID" property="FCheckerID" />
        <result column="FBillerID" property="FBillerID" />
        <result column="FFManagerID" property="FFManagerID" />
        <result column="FSManagerID" property="FSManagerID" />
        <result column="FCnnBillNo" property="FCnnBillNo" />
        <result column="FClosed" property="FClosed" />
        <result column="FNote" property="FNote" />
        <result column="FInvoiceClosed" property="FInvoiceClosed" />
        <result column="FBClosed" property="FBClosed" />
        <result column="FCreateDate" property="FCreateDate" />
        <result column="FCheckDate" property="FCheckDate" />
        <result column="FExchangeRate" property="FExchangeRate" />
        <result column="FStatus" property="FStatus" />
        <result column="FCancellation" property="FCancellation" />
        <result column="FUpStockWhenSave" property="FUpStockWhenSave" />
        <result column="FPOStyle" property="FPOStyle" />
        <result column="FMultiCheckLevel1" property="FMultiCheckLevel1" />
        <result column="FMultiCheckLevel2" property="FMultiCheckLevel2" />
        <result column="FMultiCheckLevel3" property="FMultiCheckLevel3" />
        <result column="FMultiCheckLevel4" property="FMultiCheckLevel4" />
        <result column="FMultiCheckLevel5" property="FMultiCheckLevel5" />
        <result column="FMultiCheckLevel6" property="FMultiCheckLevel6" />
        <result column="FMultiCheckDate1" property="FMultiCheckDate1" />
        <result column="FMultiCheckDate2" property="FMultiCheckDate2" />
        <result column="FMultiCheckDate3" property="FMultiCheckDate3" />
        <result column="FMultiCheckDate4" property="FMultiCheckDate4" />
        <result column="FMultiCheckDate5" property="FMultiCheckDate5" />
        <result column="FMultiCheckDate6" property="FMultiCheckDate6" />
        <result column="FCurCheckLevel" property="FCurCheckLevel" />
        <result column="FRelateBrID" property="FRelateBrID" />
        <result column="FExplanation" property="FExplanation" />
        <result column="FFetchAdd" property="FFetchAdd" />
        <result column="FSelectBillNo" property="FSelectBillNo" />
        <result column="FSelTranType" property="FSelTranType" />
        <result column="FChildren" property="FChildren" />
        <result column="FBrID" property="FBrID" />
        <result column="FTranStatus" property="FTranStatus" />
        <result column="FAreaPS" property="FAreaPS" />
        <result column="FReStatus" property="FReStatus" />
        <result column="FPOOrdBillNo" property="FPOOrdBillNo" />
        <result column="FManageType" property="FManageType" />
        <result column="FBizType" property="FBizType" />
        <result column="FWWType" property="FWWType" />
        <result column="FPrintCount" property="FPrintCount" />
        <result column="FHeadSelfP0338" property="FHeadSelfP0338" />
        <result column="FHeadSelfP0339" property="FHeadSelfP0339" />
        <result column="same_id" property="sameId" />
    </resultMap>
    <select id="getMaxCode" parameterType="java.lang.String" resultType="java.lang.String">
        select  max(fbillno)
        from POInStock
        where 1=1 and  fbillno is not null
          and fbillno like '' +  #{fbillno}+ '%'
    </select>
    <select id="getMaxId"  resultType="java.lang.Integer">
        select case when max(FInterID) is null then 0 else max(FInterID) end
        from (select FInterID from xtyasrs_dual.dbo.InStockbill union all select FInterID from  POInStock)t
    </select>
    <update id="updatePoQty" parameterType="com.zy.kingdee.entity.PoOrder">
        update POOrderEntry set fentryselfp0263 =(case when fentryselfp0263 is null then 0 else fentryselfp0263 end )+ #{fentryselfp0263, jdbcType=DECIMAL}
        where  FItemID= #{fitemid,jdbcType=INTEGER}  and fentryselfp0262=#{fentryselfp0262,jdbcType=VARCHAR}
    </update>
    <update id="updateWwQty" parameterType="com.zy.kingdee.entity.SubContract">
        update ICSubContractEntry set fdecimal =(case when fdecimal is null then 0 else fdecimal end )+ #{fdecimal, jdbcType=DECIMAL}
        where  FItemID= #{fitemid,jdbcType=INTEGER}  and FOrderNo=#{forderno,jdbcType=VARCHAR}
    </update>
    <delete id="deleteBySameId" parameterType="java.lang.String" >
        delete from POInStock
        where same_id =#{sameId,jdbcType=VARCHAR}
    </delete>
    <delete id="deleteDetailBySameId" parameterType="java.lang.String" >
        delete from POInStockEntry
        where FInterID in (select FInterID from  POInStock where same_id =#{sameId,jdbcType=VARCHAR})
    </delete>
    <delete id="deleteZjBySameId" parameterType="java.lang.String" >
        delete from xtyasrs_dual.dbo.InStockbill    where FBillNo  IN (
            select FBillNo from    POInStock
            where same_id =#{sameId,jdbcType=VARCHAR}
        )
    </delete>
    <delete id="deleteZjDetailBySameId" parameterType="java.lang.String" >
        delete from xtyasrs_dual.dbo.InStockbillEntry  where  finterid in (
            select finterid from  xtyasrs_dual.dbo.InStockbill where FBillNo in(
                select FBillNo from   POInStockEntry
                where FInterID in (select FInterID from  POInStock where same_id =#{sameId,jdbcType=VARCHAR})
            )
        )
    </delete>
    <update id="updateZjMain" parameterType="com.zy.asrs.entity.POInStock">
        update xtyasrs_dual.dbo.InStockbill set   fsupplyid =#{fsupplyid, jdbcType=INTEGER}
        where  finterid= #{finterid,jdbcType=INTEGER}
    </update>
    <update id="updateZjQty" parameterType="com.zy.asrs.entity.POInStockEntry">
        update xtyasrs_dual.dbo.InStockbillEntry set fqtypass =#{fqty, jdbcType=DECIMAL}, fqty =#{fqty, jdbcType=DECIMAL}, fauxqty =#{fqty, jdbcType=DECIMAL}, fauxqtypass =#{fqty, jdbcType=DECIMAL}
        where  FItemID= #{fitemid,jdbcType=INTEGER}  and  finterid in (
            select finterid from  xtyasrs_dual.dbo.InStockbill where FBillNo =#{fbillno,jdbcType=VARCHAR}
        )
    </update>
    <delete id="deleteZjDetail" parameterType="com.zy.asrs.entity.POInStockEntry" >
        delete from xtyasrs_dual.dbo.InStockbillEntry  where  finterid in (
            select finterid from  xtyasrs_dual.dbo.InStockbill where FBillNo =#{fbillno,jdbcType=VARCHAR}
        )
                                                         and FItemID= #{fitemid,jdbcType=INTEGER}
    </delete>
    <delete id="deleteZj" parameterType="com.zy.asrs.entity.POInStockEntry" >
        delete from xtyasrs_dual.dbo.InStockbill  where  finterid in (
            select finterid from  xtyasrs_dual.dbo.InStockbill where FBillNo =#{fbillno,jdbcType=VARCHAR}
        )
    </delete>
</mapper>
src/main/resources/mapper/ReceiveRecordMapper.xml
New file
@@ -0,0 +1,19 @@
<?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.asrs.mapper.ReceiveRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ReceiveRecord">
        <result column="id" property="id" />
        <result column="so_code" property="soCode" />
        <result column="qty" property="qty" />
        <result column="record_id" property="recordId" />
        <result column="inv_id" property="invId" />
        <result column="same_id" property="sameId" />
        <result column="iz_update_qty" property="izUpdateQty" />
        <result column="itype" property="itype" />
        <result column="same_id1" property="sameId1" />
    </resultMap>
</mapper>
src/main/webapp/views/erpReceiving/erpReceiving.html
@@ -16,7 +16,7 @@
        <el-form :inline="true">
            <el-form-item label="开工日期">
                <el-date-picker
                        v-model="tableSearchParam.FPlanCommitDate"
                        v-model="tableSearchParam.fplancommitdate"
                        type="date"
                        placeholder="选择日期"
                        :default-value="defaultTime"
@@ -24,10 +24,10 @@
                />
            </el-form-item>
            <el-form-item label="生产单号">
                <el-input v-model="tableSearchParam.FSourceBillNo" placeholder="请输入生产单号"></el-input>
                <el-input v-model="tableSearchParam.soCode" placeholder="请输入生产单号"></el-input>
            </el-form-item>
            <el-form-item label="车间">
                <el-select v-model="tableSearchParam.FWorkShop" placeholder="选择车间" style="width: 240px" >
                <el-select v-model="tableSearchParam.depName" placeholder="选择车间" style="width: 240px" >
                    <el-option
                            v-for="item in options"
                            :key="item.value"
@@ -44,7 +44,7 @@
        </el-form>
        <el-form :inline="true">
            <el-form-item label="">
               <el-button type="primary">同步</el-button>
               <el-button type="primary" @click="tongbu">同步</el-button>
            </el-form-item>
            <el-form-item label="">
               <el-button type="primary">撤销同步</el-button>
@@ -56,40 +56,40 @@
               <el-button type="primary">撤销退料</el-button>
            </el-form-item>
        </el-form>
        <el-table :data="tableData" border style="width: 100%" row-key="finterID" @selection-change="handleSelectionChange">
        <el-table :data="tableData" border style="width: 100%" row-key="finterid" @selection-change="handleSelectionChange">
            <el-table-column type="selection" >
            </el-table-column>
            <el-table-column type="index" width="50" >
            </el-table-column>
            <el-table-column prop="fsourceBillNo" label="生产单号" >
            <el-table-column prop="soCode" label="生产单号" >
            </el-table-column>
            <el-table-column prop="fbillNo" label="任务单号">
            <el-table-column prop="fbillno" label="任务单号">
            </el-table-column>
            <el-table-column prop="icitemCore.fnumber" label="物料编码">
            <el-table-column prop="invCode" label="物料编码">
            </el-table-column>
            <el-table-column prop="icitemCore.fname" label="物料名称" width="300" show-overflow-tooltip="true">
            <el-table-column prop="invName" label="物料名称" width="300" show-overflow-tooltip="true">
            </el-table-column>
            <el-table-column prop="icitemCore.fmodel" label="规格" width="200" show-overflow-tooltip="true">
            <el-table-column prop="invStd" label="规格" width="200" show-overflow-tooltip="true">
            </el-table-column>
            <el-table-column prop="department.fname" label="车间">
            <el-table-column prop="depName" label="车间">
            </el-table-column>
            <el-table-column prop="fauxQty" label="数量" width="90">
            <el-table-column prop="fauxqty" label="数量" width="90">
            </el-table-column>
            <el-table-column prop="fplanCommitDate$" label="计划开工时间">
            <el-table-column prop="fplancommitdate" label="计划开工时间">
            </el-table-column>
            <el-table-column prop="fplanFinishDate$" label="计划完工时间">
            <el-table-column prop="fplanfinishdate" label="计划完工时间">
            </el-table-column>
            <el-table-column prop="izSyncReceive" label="是否同步" width="90">
            <el-table-column prop="iz_sync_receive" label="是否同步" width="90">
            </el-table-column>
            <el-table-column prop="izSyncReceiveReturn" label="是否退料" width="90">
            <el-table-column prop="iz_sync_receive_return" label="是否退料" width="90">
            </el-table-column>
        </el-table>
            <div style="margin-top: 10px">
                <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                               :current-page="currentPage" :page-sizes="pageSizes" :page-size="pageSize"
                               layout="total, sizes, prev, pager, next, jumper" :total="pageTotal">
                </el-pagination>
            </div>
<!--            <div style="margin-top: 10px">-->
<!--                <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"-->
<!--                               :current-page="currentPage" :page-sizes="pageSizes" :page-size="pageSize"-->
<!--                               layout="total, sizes, prev, pager, next, jumper" :total="pageTotal">-->
<!--                </el-pagination>-->
<!--            </div>-->
            
        </el-card>
@@ -114,24 +114,26 @@
                const pageSize = ref(15)
                const pageTotal = ref(0)
                const tableSearchParam = ref({
                    FSourceBillNo: null,
                    FPlanCommitDate: new Date(),
                    FWorkShop:null
                    soCode: null,
                    fplancommitdate: new Date(),
                    depName:null
                })
                const tableData = ref([])
                const defaultTime = ref(new Date())
                const options = [
                    {
                        value: '16979',
                        value: '南区车间',
                        label: '南区车间'
                    },
                    {
                        value: '16980',
                        value: '北区车间',
                        label: '北区车间'
                    },
                ]
                const selectList = ref([])
                
                function page(){
                    let data = JSON.parse(JSON.stringify(tableSearchParam.value))
@@ -142,7 +144,7 @@
                        data.create_time = tableSearchParam.value.datetime[0] + " - " + tableSearchParam.value.datetime[1]
                    }
                    $.ajax({
                        url: baseUrl + "/iCMO/list/auth",
                        url: baseUrl + "/iCMO/getList/auth",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
@@ -152,8 +154,36 @@
                        method: 'GET',
                        success: function(res) {
                            if (res.code == 200) {
                                tableData.value = res.data.records
                                pageTotal.value = res.data.total
                                tableData.value = res.data
                            } else if (res.code === 403) {
                                top.location.href = baseUrl + "/";
                            } else {
                                ElementPlus.ElMessage({
                                    message: res.msg,
                                    type: 'error'
                                });
                            }
                        }
                    });
                }
                function tongbu(){
                    $.ajax({
                        url: baseUrl + "/other/tongbu/v1",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
                        data: JSON.stringify(selectList.value),
                        dataType: 'json',
                        contentType: 'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function(res) {
                            if (res.code == 200) {
                                ElementPlus.ElMessage({
                                    message: res.msg,
                                    type: 'success'
                                });
                            } else if (res.code === 403) {
                                top.location.href = baseUrl + "/";
                            } else {
@@ -176,8 +206,9 @@
                    currentPage.value = val
                    page()
                }
                function handleSelectionChange(val) {
                function handleSelectionChange(val) {
                    console.log(val)
                    selectList.value = val
                }
                onMounted(() => {
@@ -194,6 +225,7 @@
                    defaultTime,
                    options,
                    page,
                    tongbu,
                    handleSizeChange,
                    handleCurrentChange,
                    handleSelectionChange