浏览代码

寄存代发

yuansh 5 天之前
父节点
当前提交
466ec016d4
共有 31 个文件被更改,包括 2395 次插入17 次删除
  1. 8 1
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInterfaceSyncController.java
  2. 34 16
      srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/xml/SaleInterfaceSyncMapper.xml
  3. 367 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/controller/StoreConsignmentInController.java
  4. 348 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/controller/StoreConsignmentOutController.java
  5. 111 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentIn.java
  6. 124 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentInDetails.java
  7. 87 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentInShip.java
  8. 103 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentOut.java
  9. 120 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentOutDetails.java
  10. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInDetailsMapper.java
  11. 17 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInMapper.java
  12. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInShipMapper.java
  13. 31 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentOutDetailsMapper.java
  14. 17 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentOutMapper.java
  15. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInDetailsMapper.xml
  16. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInMapper.xml
  17. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInShipMapper.xml
  18. 16 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentOutDetailsMapper.xml
  19. 5 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentOutMapper.xml
  20. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInDetailsService.java
  21. 69 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInService.java
  22. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInShipService.java
  23. 22 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentOutDetailsService.java
  24. 65 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentOutService.java
  25. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInDetailsServiceImpl.java
  26. 225 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInServiceImpl.java
  27. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInShipServiceImpl.java
  28. 27 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentOutDetailsServiceImpl.java
  29. 192 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentOutServiceImpl.java
  30. 110 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/vo/StoreConsignmentInPage.java
  31. 100 0
      srm-module-code/src/main/java/org/jeecg/modules/storeCode/vo/StoreConsignmentOutPage.java

+ 8 - 1
srm-module-code/src/main/java/org/jeecg/modules/saleCode/controller/SaleInterfaceSyncController.java

@@ -8,6 +8,7 @@ import java.io.IOException;
 import java.net.URLDecoder;
 import java.util.*;
 import java.util.List;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
@@ -112,16 +113,22 @@ public class SaleInterfaceSyncController {
         List<SaleInterfaceSync> list = saleInterfaceSyncMapper.selectDeptName(null,idList);
         for(SaleInterfaceSync o:pageList.getRecords()){
             String buyerName = o.getBuyerName();
-            SaleInterfaceSync findProduct = list.stream().filter(e -> e.getCusName().equals(buyerName)).findFirst().orElse(null);
+//            SaleInterfaceSync findProduct = list.stream().filter(e -> e.getCusName().equals(buyerName)).findFirst().orElse(null);
+            SaleInterfaceSync findProduct = list.stream().filter(e -> containsItemRegex(e.getCusName(), buyerName)).findFirst().orElse(null);
             if(findProduct!=null){
 
                 o.setDeptNames(findProduct.getDeptNames());
+                o.setDeptCode(findProduct.getDeptCode());
             }
 
         }
         return Result.OK(pageList);
     }
 
+    public static boolean containsItemRegex(String cusName, String target) {
+        String regex = "(^|,)" + Pattern.quote(target) + "(,|$)"; // 匹配独立项
+        return Pattern.compile(regex).matcher(cusName).find();
+    }
     /**
      * 同步接口数据(获取网络数据)
      *

+ 34 - 16
srm-module-code/src/main/java/org/jeecg/modules/saleCode/mapper/xml/SaleInterfaceSyncMapper.xml

@@ -4,28 +4,46 @@
     <select id="selectDeptName" parameterType="java.lang.String" resultType="org.jeecg.modules.saleCode.entity.SaleInterfaceSync">
 
         SELECT
-            sdi.cus_code,
-            sdi.cus_name,
-            sdi.dept_code,
-            (SELECT GROUP_CONCAT(d.depart_name SEPARATOR ',')
-             FROM sys_depart d
-             WHERE FIND_IN_SET(d.org_code, REPLACE(sdi.dept_code, ' ', '')) > 0) AS dept_names
+        sdi.cus_code,
+        sdi.cus_name,
+        d.depart_name dept_names,
+        sdi.dept_code
+
         FROM sale_dept_interface sdi
+        left join sys_depart d on sdi.dept_code = d.org_code and d.del_flag=0
         where 1=1
-        <if test="cusCodeList !=null and cusCodeList.size()>0">
-            and sdi.cus_code IN (
-            <foreach item="cusCode" collection="cusCodeList" separator=",">
-                #{cusCode}
-            </foreach>
-            )
-        </if>
         <if test="cusNameList != null and cusNameList.size()>0">
-            and cus_name IN (
-            <foreach item="cusName" collection="cusNameList" separator=",">
-                #{cusName}
+            and ( 1=2
+            <foreach item="cusName" collection="cusNameList" separator=" ">
+                or FIND_IN_SET(#{cusName}, sdi.cus_name) > 0
             </foreach>
             )
         </if>
+
+
+        <!--     SELECT
+         sdi.cus_code,
+         sdi.cus_name,
+         sdi.dept_code,
+         (SELECT GROUP_CONCAT(d.depart_name SEPARATOR ',')
+          FROM sys_depart d
+          WHERE FIND_IN_SET(d.org_code, REPLACE(sdi.dept_code, ' ', '')) > 0) AS dept_names
+     FROM sale_dept_interface sdi
+     where 1=1
+     <if test="cusCodeList !=null and cusCodeList.size()>0">
+         and sdi.cus_code IN (
+         <foreach item="cusCode" collection="cusCodeList" separator=",">
+             #{cusCode}
+         </foreach>
+         )
+     </if>
+     <if test="cusNameList != null and cusNameList.size()>0">
+         and cus_name IN (
+         <foreach item="cusName" collection="cusNameList" separator=",">
+             #{cusName}
+         </foreach>
+         )
+     </if>-->
     </select>
 
 

+ 367 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/controller/StoreConsignmentInController.java

@@ -0,0 +1,367 @@
+package org.jeecg.modules.storeCode.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.baseCode.service.ISerialPatternService;
+import org.jeecg.modules.storeCode.entity.StorePurchaseIn;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.query.QueryRuleEnum;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentIn;
+import org.jeecg.modules.storeCode.vo.StoreConsignmentInPage;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInService;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInDetailsService;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInShipService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+
+ /**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Api(tags="寄存代发入库主表")
+@RestController
+@RequestMapping("/storeCode/storeConsignmentIn")
+@Slf4j
+public class StoreConsignmentInController {
+	@Autowired
+	private IStoreConsignmentInService storeConsignmentInService;
+	@Autowired
+	private IStoreConsignmentInDetailsService storeConsignmentInDetailsService;
+	@Autowired
+	private IStoreConsignmentInShipService storeConsignmentInShipService;
+	 @Autowired
+	 private ISerialPatternService serialPatternService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param storeConsignmentIn
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发入库主表-分页列表查询")
+	@ApiOperation(value="寄存代发入库主表-分页列表查询", notes="寄存代发入库主表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<StoreConsignmentIn>> queryPageList(StoreConsignmentIn storeConsignmentIn,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        QueryWrapper<StoreConsignmentIn> queryWrapper = QueryGenerator.initQueryWrapper(storeConsignmentIn, req.getParameterMap());
+		Page<StoreConsignmentIn> page = new Page<StoreConsignmentIn>(pageNo, pageSize);
+		IPage<StoreConsignmentIn> pageList = storeConsignmentInService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param storeConsignmentInPage
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发入库主表-添加")
+	@ApiOperation(value="寄存代发入库主表-添加", notes="寄存代发入库主表-添加")
+    @RequiresPermissions("storeCode:store_consignment_in:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody StoreConsignmentInPage storeConsignmentInPage) {
+		StoreConsignmentIn storeConsignmentIn = new StoreConsignmentIn();
+		BeanUtils.copyProperties(storeConsignmentInPage, storeConsignmentIn);
+
+		String code = storeConsignmentIn.getBillCode();
+		if (StringUtils.isNotBlank(code)) {
+
+			QueryWrapper<StoreConsignmentIn> queryWrapper = new QueryWrapper();
+			queryWrapper.eq("bill_code", code);
+			queryWrapper.eq("del_flag", "0");
+
+			List<StoreConsignmentIn> list = storeConsignmentInService.list(queryWrapper);
+			if (list.size() != 0) {
+				return Result.error("寄存代发入库编码重复,请修改!");
+			}
+		} else {
+
+			Result<String> result = serialPatternService.getNextSerial("store_consignment_in", "bill_code");
+			if (!result.isSuccess()) {
+				return result;
+			}
+			storeConsignmentIn.setBillCode(result.getMessage());
+		}
+
+		storeConsignmentInService.saveMain(storeConsignmentIn, storeConsignmentInPage.getStoreConsignmentInDetailsList(),storeConsignmentInPage.getStoreConsignmentInShipList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param storeConsignmentInPage
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发入库主表-编辑")
+	@ApiOperation(value="寄存代发入库主表-编辑", notes="寄存代发入库主表-编辑")
+    @RequiresPermissions("storeCode:store_consignment_in:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody StoreConsignmentInPage storeConsignmentInPage) {
+		StoreConsignmentIn storeConsignmentIn = new StoreConsignmentIn();
+		BeanUtils.copyProperties(storeConsignmentInPage, storeConsignmentIn);
+		StoreConsignmentIn storeConsignmentInEntity = storeConsignmentInService.getById(storeConsignmentIn.getId());
+		if(storeConsignmentInEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		storeConsignmentInService.updateMain(storeConsignmentIn, storeConsignmentInPage.getStoreConsignmentInDetailsList(),storeConsignmentInPage.getStoreConsignmentInShipList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发入库主表-通过id删除")
+	@ApiOperation(value="寄存代发入库主表-通过id删除", notes="寄存代发入库主表-通过id删除")
+    @RequiresPermissions("storeCode:store_consignment_in:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+
+		StoreConsignmentIn storeConsignmentIn = storeConsignmentInService.getById(id);
+		if(storeConsignmentIn==null) {
+			return Result.error("未找到对应数据");
+		}
+
+		String submit = storeConsignmentIn.getSubmit();
+		if (StringUtils.isNotBlank(submit) && submit.equals("1")) {
+			return Result.error("已提交的数据无法删除");
+		}
+
+		storeConsignmentInService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发入库主表-批量删除")
+	@ApiOperation(value="寄存代发入库主表-批量删除", notes="寄存代发入库主表-批量删除")
+    @RequiresPermissions("storeCode:store_consignment_in:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+
+		for (String o : ids.split(",")) {
+
+			StoreConsignmentIn order = storeConsignmentInService.getById(o);
+			if (order == null) {
+				return Result.error("未找到对应数据");
+			}
+
+			String submit = order.getSubmit();
+			if (StringUtils.isNotBlank(submit) && submit.equals("1")) {
+				return Result.error("单号" + order.getBillCode() + "已提交,无法删除");
+			}
+		}
+
+		this.storeConsignmentInService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	 /**
+	  * 批量提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "寄存代发入库-批量提交")
+	 @ApiOperation(value = "寄存代发入库-批量提交", notes = "寄存代发入库-批量提交")
+	 @GetMapping(value = "/submitBatch")
+	 public Result<String> submitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 return storeConsignmentInService.submitBatch(ids);
+	 }
+
+	 /**
+	  * 批量取消提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "寄存代发入库-批量取消提交")
+	 @ApiOperation(value = "寄存代发入库-批量取消提交", notes = "寄存代发入库-批量取消提交")
+	 @GetMapping(value = "/returnSubmitBatch")
+	 public Result<String> returnSubmitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 return storeConsignmentInService.returnSubmitBatch(ids);
+	 }
+
+	 /**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发入库主表-通过id查询")
+	@ApiOperation(value="寄存代发入库主表-通过id查询", notes="寄存代发入库主表-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<StoreConsignmentIn> queryById(@RequestParam(name="id",required=true) String id) {
+		StoreConsignmentIn storeConsignmentIn = storeConsignmentInService.getById(id);
+		if(storeConsignmentIn==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(storeConsignmentIn);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发入库-子表产品明细通过主表ID查询")
+	@ApiOperation(value="寄存代发入库-子表产品明细主表ID查询", notes="寄存代发入库-子表产品明细-通主表ID查询")
+	@GetMapping(value = "/queryStoreConsignmentInDetailsByMainId")
+	public Result<List<StoreConsignmentInDetails>> queryStoreConsignmentInDetailsListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<StoreConsignmentInDetails> storeConsignmentInDetailsList = storeConsignmentInDetailsService.selectByMainId(id);
+		return Result.OK(storeConsignmentInDetailsList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发入库-子表船明细通过主表ID查询")
+	@ApiOperation(value="寄存代发入库-子表船明细主表ID查询", notes="寄存代发入库-子表船明细-通主表ID查询")
+	@GetMapping(value = "/queryStoreConsignmentInShipByMainId")
+	public Result<List<StoreConsignmentInShip>> queryStoreConsignmentInShipListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<StoreConsignmentInShip> storeConsignmentInShipList = storeConsignmentInShipService.selectByMainId(id);
+		return Result.OK(storeConsignmentInShipList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param storeConsignmentIn
+    */
+    @RequiresPermissions("storeCode:store_consignment_in:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, StoreConsignmentIn storeConsignmentIn) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<StoreConsignmentIn> queryWrapper = QueryGenerator.initQueryWrapper(storeConsignmentIn, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 获取导出数据
+      List<StoreConsignmentIn> storeConsignmentInList = storeConsignmentInService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<StoreConsignmentInPage> pageList = new ArrayList<StoreConsignmentInPage>();
+      for (StoreConsignmentIn main : storeConsignmentInList) {
+          StoreConsignmentInPage vo = new StoreConsignmentInPage();
+          BeanUtils.copyProperties(main, vo);
+          List<StoreConsignmentInDetails> storeConsignmentInDetailsList = storeConsignmentInDetailsService.selectByMainId(main.getId());
+          vo.setStoreConsignmentInDetailsList(storeConsignmentInDetailsList);
+          List<StoreConsignmentInShip> storeConsignmentInShipList = storeConsignmentInShipService.selectByMainId(main.getId());
+          vo.setStoreConsignmentInShipList(storeConsignmentInShipList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "寄存代发入库主表列表");
+      mv.addObject(NormalExcelConstants.CLASS, StoreConsignmentInPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("寄存代发入库主表数据", "导出人:"+sysUser.getRealname(), "寄存代发入库主表"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("storeCode:store_consignment_in:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<StoreConsignmentInPage> list = ExcelImportUtil.importExcel(file.getInputStream(), StoreConsignmentInPage.class, params);
+              for (StoreConsignmentInPage page : list) {
+                  StoreConsignmentIn po = new StoreConsignmentIn();
+                  BeanUtils.copyProperties(page, po);
+                  storeConsignmentInService.saveMain(po, page.getStoreConsignmentInDetailsList(),page.getStoreConsignmentInShipList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+}

+ 348 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/controller/StoreConsignmentOutController.java

@@ -0,0 +1,348 @@
+package org.jeecg.modules.storeCode.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.baseCode.service.ISerialPatternService;
+import org.jeecg.modules.storeCode.entity.StoreOtherOut;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.query.QueryRuleEnum;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import org.jeecg.modules.storeCode.vo.StoreConsignmentOutPage;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentOutService;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentOutDetailsService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+
+ /**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Api(tags="寄存代发出库-主表")
+@RestController
+@RequestMapping("/storeCode/storeConsignmentOut")
+@Slf4j
+public class StoreConsignmentOutController {
+	@Autowired
+	private IStoreConsignmentOutService storeConsignmentOutService;
+	@Autowired
+	private IStoreConsignmentOutDetailsService storeConsignmentOutDetailsService;
+	 @Autowired
+	 private ISerialPatternService serialPatternService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param storeConsignmentOut
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发出库-主表-分页列表查询")
+	@ApiOperation(value="寄存代发出库-主表-分页列表查询", notes="寄存代发出库-主表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<StoreConsignmentOut>> queryPageList(StoreConsignmentOut storeConsignmentOut,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+        // 自定义查询规则
+        Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
+        // 自定义多选的查询规则为:LIKE_WITH_OR
+        customeRuleMap.put("submit", QueryRuleEnum.LIKE_WITH_OR);
+        QueryWrapper<StoreConsignmentOut> queryWrapper = QueryGenerator.initQueryWrapper(storeConsignmentOut, req.getParameterMap(),customeRuleMap);
+		Page<StoreConsignmentOut> page = new Page<StoreConsignmentOut>(pageNo, pageSize);
+		IPage<StoreConsignmentOut> pageList = storeConsignmentOutService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param storeConsignmentOutPage
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发出库-主表-添加")
+	@ApiOperation(value="寄存代发出库-主表-添加", notes="寄存代发出库-主表-添加")
+    @RequiresPermissions("storeCode:store_consignment_out:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody StoreConsignmentOutPage storeConsignmentOutPage) {
+		StoreConsignmentOut storeConsignmentOut = new StoreConsignmentOut();
+		BeanUtils.copyProperties(storeConsignmentOutPage, storeConsignmentOut);
+
+		String code = storeConsignmentOut.getBillCode();
+		if (StringUtils.isNotBlank(code)) {
+
+			QueryWrapper<StoreConsignmentOut> queryWrapper = new QueryWrapper();
+			queryWrapper.eq("bill_code", code);
+			queryWrapper.eq("del_flag", "0");
+
+			List<StoreConsignmentOut> list = storeConsignmentOutService.list(queryWrapper);
+			if (list.size() != 0) {
+				return Result.error("寄存代发出库编码重复,请修改!");
+			}
+		} else {
+
+			Result<String> result = serialPatternService.getNextSerial("store_consignment_out", "bill_code");
+			if (!result.isSuccess()) {
+				return result;
+			}
+			storeConsignmentOut.setBillCode(result.getMessage());
+		}
+		storeConsignmentOutService.saveMain(storeConsignmentOut, storeConsignmentOutPage.getStoreConsignmentOutDetailsList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param storeConsignmentOutPage
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发出库-主表-编辑")
+	@ApiOperation(value="寄存代发出库-主表-编辑", notes="寄存代发出库-主表-编辑")
+    @RequiresPermissions("storeCode:store_consignment_out:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody StoreConsignmentOutPage storeConsignmentOutPage) {
+		StoreConsignmentOut storeConsignmentOut = new StoreConsignmentOut();
+		BeanUtils.copyProperties(storeConsignmentOutPage, storeConsignmentOut);
+		StoreConsignmentOut storeConsignmentOutEntity = storeConsignmentOutService.getById(storeConsignmentOut.getId());
+		if(storeConsignmentOutEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		storeConsignmentOutService.updateMain(storeConsignmentOut, storeConsignmentOutPage.getStoreConsignmentOutDetailsList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发出库-主表-通过id删除")
+	@ApiOperation(value="寄存代发出库-主表-通过id删除", notes="寄存代发出库-主表-通过id删除")
+    @RequiresPermissions("storeCode:store_consignment_out:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		StoreConsignmentOut storeConsignmentOut = storeConsignmentOutService.getById(id);
+		if(storeConsignmentOut==null) {
+			return Result.error("未找到对应数据");
+		}
+
+		String submit = storeConsignmentOut.getSubmit();
+		if (StringUtils.isNotBlank(submit) && submit.equals("1")) {
+			return Result.error("已提交的数据无法删除");
+		}
+
+		storeConsignmentOutService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "寄存代发出库-主表-批量删除")
+	@ApiOperation(value="寄存代发出库-主表-批量删除", notes="寄存代发出库-主表-批量删除")
+    @RequiresPermissions("storeCode:store_consignment_out:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		for (String o : ids.split(",")) {
+
+			StoreConsignmentOut storeConsignmentOut = storeConsignmentOutService.getById(o);
+			if(storeConsignmentOut==null) {
+				return Result.error("未找到对应数据");
+			}
+
+			String submit = storeConsignmentOut.getSubmit();
+			if (StringUtils.isNotBlank(submit) && submit.equals("1")) {
+				return Result.error("单号" + storeConsignmentOut.getBillCode() + "已提交,无法删除");
+			}
+		}
+		this.storeConsignmentOutService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	 /**
+	  * 批量提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "寄存代发出库-批量提交")
+	 @ApiOperation(value = "寄存代发出库-批量提交", notes = "寄存代发出库-批量提交")
+	 @GetMapping(value = "/submitBatch")
+	 public Result<String> submitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 return storeConsignmentOutService.submitBatch(ids);
+	 }
+
+	 /**
+	  * 批量取消提交
+	  *
+	  * @param ids
+	  * @return
+	  */
+	 @AutoLog(value = "寄存代发出库-批量取消提交")
+	 @ApiOperation(value = "寄存代发出库-批量取消提交", notes = "寄存代发出库-批量取消提交")
+	 @GetMapping(value = "/returnSubmitBatch")
+	 public Result<String> returnSubmitBatch(@RequestParam(name = "ids", required = true) String ids) {
+
+		 return storeConsignmentOutService.returnSubmitBatch(ids);
+	 }
+
+	 /**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发出库-主表-通过id查询")
+	@ApiOperation(value="寄存代发出库-主表-通过id查询", notes="寄存代发出库-主表-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<StoreConsignmentOut> queryById(@RequestParam(name="id",required=true) String id) {
+		StoreConsignmentOut storeConsignmentOut = storeConsignmentOutService.getById(id);
+		if(storeConsignmentOut==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(storeConsignmentOut);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "寄存代发出库-子表明细通过主表ID查询")
+	@ApiOperation(value="寄存代发出库-子表明细主表ID查询", notes="寄存代发出库-子表明细-通主表ID查询")
+	@GetMapping(value = "/queryStoreConsignmentOutDetailsByMainId")
+	public Result<List<StoreConsignmentOutDetails>> queryStoreConsignmentOutDetailsListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList = storeConsignmentOutDetailsService.selectByMainId(id);
+		return Result.OK(storeConsignmentOutDetailsList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param storeConsignmentOut
+    */
+    @RequiresPermissions("storeCode:store_consignment_out:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, StoreConsignmentOut storeConsignmentOut) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<StoreConsignmentOut> queryWrapper = QueryGenerator.initQueryWrapper(storeConsignmentOut, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 获取导出数据
+      List<StoreConsignmentOut> storeConsignmentOutList = storeConsignmentOutService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<StoreConsignmentOutPage> pageList = new ArrayList<StoreConsignmentOutPage>();
+      for (StoreConsignmentOut main : storeConsignmentOutList) {
+          StoreConsignmentOutPage vo = new StoreConsignmentOutPage();
+          BeanUtils.copyProperties(main, vo);
+          List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList = storeConsignmentOutDetailsService.selectByMainId(main.getId());
+          vo.setStoreConsignmentOutDetailsList(storeConsignmentOutDetailsList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "寄存代发出库-主表列表");
+      mv.addObject(NormalExcelConstants.CLASS, StoreConsignmentOutPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("寄存代发出库-主表数据", "导出人:"+sysUser.getRealname(), "寄存代发出库-主表"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("storeCode:store_consignment_out:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<StoreConsignmentOutPage> list = ExcelImportUtil.importExcel(file.getInputStream(), StoreConsignmentOutPage.class, params);
+              for (StoreConsignmentOutPage page : list) {
+                  StoreConsignmentOut po = new StoreConsignmentOut();
+                  BeanUtils.copyProperties(page, po);
+                  storeConsignmentOutService.saveMain(po, page.getStoreConsignmentOutDetailsList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+}

+ 111 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentIn.java

@@ -0,0 +1,111 @@
+package org.jeecg.modules.storeCode.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="store_consignment_in对象", description="寄存代发入库主表")
+@Data
+@TableName("store_consignment_in")
+public class StoreConsignmentIn implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@Excel(name = "状态(1-启用,0-停用)", width = 15)
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15, dicCode = "yes_or_no")
+    @Dict(dicCode = "yes_or_no")
+    @ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+    @ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+    @ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户*/
+	@Excel(name = "客户", width = 15)
+    @ApiModelProperty(value = "客户")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**仓库(warehouse)*/
+	@Excel(name = "仓库(warehouse)", width = 15)
+    @ApiModelProperty(value = "仓库(warehouse)")
+    private String warehouse;
+	/**货位(goods allocation)*/
+	@Excel(name = "货位(goods allocation)", width = 15)
+    @ApiModelProperty(value = "货位(goods allocation)")
+    private String goodsAllocation;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**附件(attachs)*/
+	@Excel(name = "附件(attachs)", width = 15)
+    @ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+}

+ 124 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentInDetails.java

@@ -0,0 +1,124 @@
+package org.jeecg.modules.storeCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 寄存代发入库-子表产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="store_consignment_in_details对象", description="寄存代发入库-子表产品明细")
+@Data
+@TableName("store_consignment_in_details")
+public class StoreConsignmentInDetails implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(采购入库单)*/
+    @ApiModelProperty(value = "表头主键(采购入库单)")
+    private String headId;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**产品id*/
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+	/**产品分类*/
+	@Excel(name = "产品分类", width = 15)
+    @ApiModelProperty(value = "产品分类")
+    private String productClass;
+	/**产品编码*/
+	@Excel(name = "产品编码", width = 15)
+    @ApiModelProperty(value = "产品编码")
+    private String productCode;
+	/**产品中文名*/
+	@Excel(name = "产品中文名", width = 15)
+    @ApiModelProperty(value = "产品中文名")
+    private String chineseName;
+	/**产品英文名*/
+	@Excel(name = "产品英文名", width = 15)
+    @ApiModelProperty(value = "产品英文名")
+    private String englishName;
+	/**规格(无用)*/
+    @ApiModelProperty(value = "规格(无用)")
+    private String specifications;
+	/**型号*/
+	@Excel(name = "型号", width = 15)
+    @ApiModelProperty(value = "型号")
+    private String model;
+	/**备件号*/
+	@Excel(name = "备件号", width = 15)
+    @ApiModelProperty(value = "备件号")
+    private String partno;
+	/**图号*/
+	@Excel(name = "图号", width = 15)
+    @ApiModelProperty(value = "图号")
+    private String drawingno;
+	/**质量等级*/
+	@Excel(name = "质量等级", width = 15)
+    @ApiModelProperty(value = "质量等级")
+    private String qualityGrade;
+	/**件数*/
+	@Excel(name = "件数", width = 15)
+    @ApiModelProperty(value = "件数")
+    private java.math.BigDecimal quantity;
+	/**重量*/
+	@Excel(name = "重量", width = 15)
+    @ApiModelProperty(value = "重量")
+    private String weight;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**供应商(supplier)*/
+    @ApiModelProperty(value = "供应商(supplier)")
+    private String supplier;
+	/**供应商名称*/
+	@Excel(name = "供应商名称", width = 15)
+    @ApiModelProperty(value = "供应商名称")
+    private String supplierName;
+	/**附件*/
+    @ApiModelProperty(value = "附件")
+    private String attachs;
+}

+ 87 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentInShip.java

@@ -0,0 +1,87 @@
+package org.jeecg.modules.storeCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 寄存代发入库-子表船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="store_consignment_in_ship对象", description="寄存代发入库-子表船明细")
+@Data
+@TableName("store_consignment_in_ship")
+public class StoreConsignmentInShip implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(寄存代发入库)*/
+    @ApiModelProperty(value = "表头主键(寄存代发入库)")
+    private String headId;
+	/**船id*/
+    @ApiModelProperty(value = "船id")
+    private String shipId;
+	/**船名*/
+	@Excel(name = "船名", width = 15)
+    @ApiModelProperty(value = "船名")
+    private String shipName;
+	/**主机号*/
+	@Excel(name = "主机号", width = 15)
+    @ApiModelProperty(value = "主机号")
+    private String hostNumber;
+	/**工程编号*/
+	@Excel(name = "工程编号", width = 15)
+    @ApiModelProperty(value = "工程编号")
+    private String projectNo;
+	/**船厂*/
+	@Excel(name = "船厂", width = 15)
+    @ApiModelProperty(value = "船厂")
+    private String shipFactory;
+	/**船东*/
+	@Excel(name = "船东", width = 15)
+    @ApiModelProperty(value = "船东")
+    private String shipowner;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+}

+ 103 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentOut.java

@@ -0,0 +1,103 @@
+package org.jeecg.modules.storeCode.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="store_consignment_out对象", description="寄存代发出库-主表")
+@Data
+@TableName("store_consignment_out")
+public class StoreConsignmentOut implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)1是0否", width = 15, dicCode = "yes_or_no")
+    @Dict(dicCode = "yes_or_no")
+    @ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+    @ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@Excel(name = "项目(project)", width = 15)
+    @ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户(customer)*/
+	@Excel(name = "客户(customer)", width = 15)
+    @ApiModelProperty(value = "客户(customer)")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+    @ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**仓库(warehouse)*/
+	@Excel(name = "仓库(warehouse)", width = 15)
+    @ApiModelProperty(value = "仓库(warehouse)")
+    private String warehouse;
+	/**货位(goods allocation)*/
+	@Excel(name = "货位(goods allocation)", width = 15)
+    @ApiModelProperty(value = "货位(goods allocation)")
+    private String goodsAllocation;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+}

+ 120 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/entity/StoreConsignmentOutDetails.java

@@ -0,0 +1,120 @@
+package org.jeecg.modules.storeCode.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 寄存代发出库-子表明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="store_consignment_out_details对象", description="寄存代发出库-子表明细")
+@Data
+@TableName("store_consignment_out_details")
+public class StoreConsignmentOutDetails implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+    @ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**删除状态(0-正常,1-已删除)*/
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**表头主键(其他出库单)*/
+    @ApiModelProperty(value = "表头主键(其他出库单)")
+    private String headId;
+	/**产品id*/
+    @ApiModelProperty(value = "产品id")
+    private String productId;
+	/**产品分类*/
+	@Excel(name = "产品分类", width = 15)
+    @ApiModelProperty(value = "产品分类")
+    private String productClass;
+	/**产品编码*/
+	@Excel(name = "产品编码", width = 15)
+    @ApiModelProperty(value = "产品编码")
+    private String productCode;
+	/**产品中文名*/
+	@Excel(name = "产品中文名", width = 15)
+    @ApiModelProperty(value = "产品中文名")
+    private String chineseName;
+	/**产品英文名*/
+	@Excel(name = "产品英文名", width = 15)
+    @ApiModelProperty(value = "产品英文名")
+    private String englishName;
+	/**规格*/
+    @ApiModelProperty(value = "规格")
+    private String specifications;
+	/**型号*/
+	@Excel(name = "型号", width = 15)
+    @ApiModelProperty(value = "型号")
+    private String model;
+	/**备件号*/
+	@Excel(name = "备件号", width = 15)
+    @ApiModelProperty(value = "备件号")
+    private String partno;
+	/**图号*/
+	@Excel(name = "图号", width = 15)
+    @ApiModelProperty(value = "图号")
+    private String drawingno;
+	/**质量等级*/
+	@Excel(name = "质量等级", width = 15)
+    @ApiModelProperty(value = "质量等级")
+    private String qualityGrade;
+	/**出库数量(stock out quantity)*/
+	@Excel(name = "出库数量(stock out quantity)", width = 15)
+    @ApiModelProperty(value = "出库数量(stock out quantity)")
+    private java.math.BigDecimal stockOutQuantity;
+	/**库存选择(Inventory selection)记录库存单号*/
+	@Excel(name = "库存选择(Inventory selection)记录库存单号", width = 15)
+    @ApiModelProperty(value = "库存选择(Inventory selection)记录库存单号")
+    private String inventorySelection;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+    @ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**来源*/
+    @ApiModelProperty(value = "来源")
+    private String sourceId;
+	/**来源批次id*/
+    @ApiModelProperty(value = "来源批次id")
+    private String batchId;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInDetailsMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.storeCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 寄存代发入库-子表产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface StoreConsignmentInDetailsMapper extends BaseMapper<StoreConsignmentInDetails> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<StoreConsignmentInDetails>
+   */
+	public List<StoreConsignmentInDetails> selectByMainId(@Param("mainId") String mainId);
+}

+ 17 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.storeCode.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentIn;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface StoreConsignmentInMapper extends BaseMapper<StoreConsignmentIn> {
+
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentInShipMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.storeCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 寄存代发入库-子表船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface StoreConsignmentInShipMapper extends BaseMapper<StoreConsignmentInShip> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<StoreConsignmentInShip>
+   */
+	public List<StoreConsignmentInShip> selectByMainId(@Param("mainId") String mainId);
+}

+ 31 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentOutDetailsMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.storeCode.mapper;
+
+import java.util.List;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 寄存代发出库-子表明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface StoreConsignmentOutDetailsMapper extends BaseMapper<StoreConsignmentOutDetails> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<StoreConsignmentOutDetails>
+   */
+	public List<StoreConsignmentOutDetails> selectByMainId(@Param("mainId") String mainId);
+}

+ 17 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/StoreConsignmentOutMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.storeCode.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface StoreConsignmentOutMapper extends BaseMapper<StoreConsignmentOut> {
+
+}

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInDetailsMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.storeCode.mapper.StoreConsignmentInDetailsMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  store_consignment_in_details 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails">
+		SELECT * 
+		FROM  store_consignment_in_details
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.storeCode.mapper.StoreConsignmentInMapper">
+
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentInShipMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.storeCode.mapper.StoreConsignmentInShipMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  store_consignment_in_ship 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.storeCode.entity.StoreConsignmentInShip">
+		SELECT * 
+		FROM  store_consignment_in_ship
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentOutDetailsMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.jeecg.modules.storeCode.mapper.StoreConsignmentOutDetailsMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  store_consignment_out_details 
+		WHERE
+			 head_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails">
+		SELECT * 
+		FROM  store_consignment_out_details
+		WHERE
+			 head_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/mapper/xml/StoreConsignmentOutMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.storeCode.mapper.StoreConsignmentOutMapper">
+
+</mapper>

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInDetailsService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.storeCode.service;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 寄存代发入库-子表产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface IStoreConsignmentInDetailsService extends IService<StoreConsignmentInDetails> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<StoreConsignmentInDetails>
+	 */
+	public List<StoreConsignmentInDetails> selectByMainId(String mainId);
+}

+ 69 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInService.java

@@ -0,0 +1,69 @@
+package org.jeecg.modules.storeCode.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentIn;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface IStoreConsignmentInService extends IService<StoreConsignmentIn> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param storeConsignmentIn
+	 * @param storeConsignmentInDetailsList
+	 * @param storeConsignmentInShipList
+	 */
+	public void saveMain(StoreConsignmentIn storeConsignmentIn,List<StoreConsignmentInDetails> storeConsignmentInDetailsList,List<StoreConsignmentInShip> storeConsignmentInShipList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+   * @param storeConsignmentIn
+   * @param storeConsignmentInDetailsList
+   * @param storeConsignmentInShipList
+	 */
+	public void updateMain(StoreConsignmentIn storeConsignmentIn,List<StoreConsignmentInDetails> storeConsignmentInDetailsList,List<StoreConsignmentInShip> storeConsignmentInShipList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+
+	/**
+	 * 批量提交
+	 *
+	 * @param ids
+	 * @return
+	 */
+	public Result<String> submitBatch(String ids);
+
+	/**
+	 * 批量提交
+	 *
+	 * @param ids
+	 * @return
+	 */
+	public Result<String> returnSubmitBatch(String ids);
+
+
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentInShipService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.storeCode.service;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 寄存代发入库-子表船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface IStoreConsignmentInShipService extends IService<StoreConsignmentInShip> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<StoreConsignmentInShip>
+	 */
+	public List<StoreConsignmentInShip> selectByMainId(String mainId);
+}

+ 22 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentOutDetailsService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.storeCode.service;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 寄存代发出库-子表明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface IStoreConsignmentOutDetailsService extends IService<StoreConsignmentOutDetails> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<StoreConsignmentOutDetails>
+	 */
+	public List<StoreConsignmentOutDetails> selectByMainId(String mainId);
+}

+ 65 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/IStoreConsignmentOutService.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.storeCode.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+public interface IStoreConsignmentOutService extends IService<StoreConsignmentOut> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param storeConsignmentOut
+	 * @param storeConsignmentOutDetailsList
+	 */
+	public void saveMain(StoreConsignmentOut storeConsignmentOut,List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+   * @param storeConsignmentOut
+   * @param storeConsignmentOutDetailsList
+	 */
+	public void updateMain(StoreConsignmentOut storeConsignmentOut,List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+
+	/**
+	 * 批量提交
+	 *
+	 * @param ids
+	 * @return
+	 */
+	public Result<String> submitBatch(String ids);
+
+	/**
+	 * 批量提交
+	 *
+	 * @param ids
+	 * @return
+	 */
+	public Result<String> returnSubmitBatch(String ids);
+
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInDetailsServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.storeCode.service.impl;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentInDetailsMapper;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInDetailsService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 寄存代发入库-子表产品明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Service
+public class StoreConsignmentInDetailsServiceImpl extends ServiceImpl<StoreConsignmentInDetailsMapper, StoreConsignmentInDetails> implements IStoreConsignmentInDetailsService {
+	
+	@Autowired
+	private StoreConsignmentInDetailsMapper storeConsignmentInDetailsMapper;
+	
+	@Override
+	public List<StoreConsignmentInDetails> selectByMainId(String mainId) {
+		return storeConsignmentInDetailsMapper.selectByMainId(mainId);
+	}
+}

+ 225 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInServiceImpl.java

@@ -0,0 +1,225 @@
+package org.jeecg.modules.storeCode.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.storeCode.entity.*;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentIn;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentInDetailsMapper;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentInShipMapper;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentInMapper;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Service
+public class StoreConsignmentInServiceImpl extends ServiceImpl<StoreConsignmentInMapper, StoreConsignmentIn> implements IStoreConsignmentInService {
+
+	@Autowired
+	private StoreConsignmentInMapper storeConsignmentInMapper;
+	@Autowired
+	private StoreConsignmentInDetailsMapper storeConsignmentInDetailsMapper;
+	@Autowired
+	private StoreConsignmentInShipMapper storeConsignmentInShipMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(StoreConsignmentIn storeConsignmentIn, List<StoreConsignmentInDetails> storeConsignmentInDetailsList,List<StoreConsignmentInShip> storeConsignmentInShipList) {
+		storeConsignmentInMapper.insert(storeConsignmentIn);
+		if(storeConsignmentInDetailsList!=null && storeConsignmentInDetailsList.size()>0) {
+			for(StoreConsignmentInDetails entity:storeConsignmentInDetailsList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentIn.getId());
+				storeConsignmentInDetailsMapper.insert(entity);
+			}
+		}
+		if(storeConsignmentInShipList!=null && storeConsignmentInShipList.size()>0) {
+			for(StoreConsignmentInShip entity:storeConsignmentInShipList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentIn.getId());
+				storeConsignmentInShipMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(StoreConsignmentIn storeConsignmentIn,List<StoreConsignmentInDetails> storeConsignmentInDetailsList,List<StoreConsignmentInShip> storeConsignmentInShipList) {
+		storeConsignmentInMapper.updateById(storeConsignmentIn);
+		
+		//1.先删除子表数据
+		storeConsignmentInDetailsMapper.deleteByMainId(storeConsignmentIn.getId());
+		storeConsignmentInShipMapper.deleteByMainId(storeConsignmentIn.getId());
+		
+		//2.子表数据重新插入
+		if(storeConsignmentInDetailsList!=null && storeConsignmentInDetailsList.size()>0) {
+			for(StoreConsignmentInDetails entity:storeConsignmentInDetailsList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentIn.getId());
+				storeConsignmentInDetailsMapper.insert(entity);
+			}
+		}
+		if(storeConsignmentInShipList!=null && storeConsignmentInShipList.size()>0) {
+			for(StoreConsignmentInShip entity:storeConsignmentInShipList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentIn.getId());
+				storeConsignmentInShipMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		storeConsignmentInDetailsMapper.deleteByMainId(id);
+		storeConsignmentInShipMapper.deleteByMainId(id);
+		storeConsignmentInMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			storeConsignmentInDetailsMapper.deleteByMainId(id.toString());
+			storeConsignmentInShipMapper.deleteByMainId(id.toString());
+			storeConsignmentInMapper.deleteById(id);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Result<String> submitBatch(String ids) {
+
+		QueryWrapper<StoreConsignmentIn> queryWrapper = new QueryWrapper<>();
+		queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		List<StoreConsignmentIn> list = this.list(queryWrapper);
+		if (list.size() == 0) {
+			return Result.error("数据为空!");
+		}
+
+		StringBuffer sb = new StringBuffer();
+		for (StoreConsignmentIn o : list) {
+			// 1-已提交,0-未提交
+			String submit = o.getSubmit();
+			String code = o.getBillCode();
+			String getWarehouse = o.getWarehouse();
+			String getGoodsAllocation = o.getGoodsAllocation();
+
+			if (StringUtils.isBlank(getWarehouse)) {
+				sb.append("单据编码" + code).append("仓库为空,无法入库;");
+				continue;
+			}
+			if (StringUtils.isBlank(getGoodsAllocation)) {
+				sb.append("单据编码" + code).append("货位为空,无法入库;");
+				continue;
+			}
+
+			if (submit != null && submit != "" && submit.equals("1")) {
+				sb.append("单据编码" + code).append("已提交,请勿再次提交;");
+				continue;
+			}
+		}
+
+		if (StringUtils.isNotBlank(sb.toString())) {
+
+			return Result.error(sb.toString());
+		}
+
+		try {
+
+			//执行入库操作
+			String result = "true";//actionIn(list, true);
+
+			if ("true".equals(result)) {
+
+				StoreConsignmentIn ent = new StoreConsignmentIn();
+				ent.setSubmit("1");
+				this.update(ent, queryWrapper);
+			} else {
+				throw new JeecgBootException(result);
+
+			}
+
+		} catch (Exception e) {
+			throw new JeecgBootException(e.getMessage());
+
+		}
+
+		return Result.OK("提交入库成功!");
+
+	}
+
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Result<String> returnSubmitBatch(String ids) {
+
+		QueryWrapper<StoreConsignmentIn> queryWrapper = new QueryWrapper<>();
+		queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		List<StoreConsignmentIn> list = this.list(queryWrapper);
+		if (list.size() == 0) {
+			return Result.error("数据为空!");
+		}
+
+		StringBuffer sb = new StringBuffer();
+		List<String> idList = new ArrayList<>();
+
+		for (StoreConsignmentIn o : list) {
+
+			//提交(1-是 ,0-否)
+			String submit = o.getSubmit();
+			String code = o.getBillCode();
+			idList.add(code);
+
+			if (submit == null || submit == "" || submit.equals("0")) {
+				sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
+				continue;
+			}
+		}
+
+		if (StringUtils.isNotBlank(sb.toString())) {
+
+			return Result.error(sb.toString());
+		}
+
+		try {
+
+			//执行入库操作
+			String result = "true";//actionIn(list, false);
+
+			if ("true".equals(result)) {
+
+				StoreConsignmentIn ent = new StoreConsignmentIn();
+				ent.setSubmit("0");
+				this.update(ent, queryWrapper);
+			} else {
+				throw new JeecgBootException(result);
+
+			}
+
+		} catch (Exception e) {
+			throw new JeecgBootException(e.getMessage());
+
+		}
+
+
+		return Result.OK("取消提交成功!");
+	}
+
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentInShipServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.storeCode.service.impl;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentInShipMapper;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentInShipService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 寄存代发入库-子表船明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Service
+public class StoreConsignmentInShipServiceImpl extends ServiceImpl<StoreConsignmentInShipMapper, StoreConsignmentInShip> implements IStoreConsignmentInShipService {
+	
+	@Autowired
+	private StoreConsignmentInShipMapper storeConsignmentInShipMapper;
+	
+	@Override
+	public List<StoreConsignmentInShip> selectByMainId(String mainId) {
+		return storeConsignmentInShipMapper.selectByMainId(mainId);
+	}
+}

+ 27 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentOutDetailsServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.storeCode.service.impl;
+
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentOutDetailsMapper;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentOutDetailsService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 寄存代发出库-子表明细
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Service
+public class StoreConsignmentOutDetailsServiceImpl extends ServiceImpl<StoreConsignmentOutDetailsMapper, StoreConsignmentOutDetails> implements IStoreConsignmentOutDetailsService {
+	
+	@Autowired
+	private StoreConsignmentOutDetailsMapper storeConsignmentOutDetailsMapper;
+	
+	@Override
+	public List<StoreConsignmentOutDetails> selectByMainId(String mainId) {
+		return storeConsignmentOutDetailsMapper.selectByMainId(mainId);
+	}
+}

+ 192 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/service/impl/StoreConsignmentOutServiceImpl.java

@@ -0,0 +1,192 @@
+package org.jeecg.modules.storeCode.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentOutDetailsMapper;
+import org.jeecg.modules.storeCode.mapper.StoreConsignmentOutMapper;
+import org.jeecg.modules.storeCode.service.IStoreConsignmentOutService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Service
+public class StoreConsignmentOutServiceImpl extends ServiceImpl<StoreConsignmentOutMapper, StoreConsignmentOut> implements IStoreConsignmentOutService {
+
+	@Autowired
+	private StoreConsignmentOutMapper storeConsignmentOutMapper;
+	@Autowired
+	private StoreConsignmentOutDetailsMapper storeConsignmentOutDetailsMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(StoreConsignmentOut storeConsignmentOut, List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList) {
+		storeConsignmentOutMapper.insert(storeConsignmentOut);
+		if(storeConsignmentOutDetailsList!=null && storeConsignmentOutDetailsList.size()>0) {
+			for(StoreConsignmentOutDetails entity:storeConsignmentOutDetailsList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentOut.getId());
+				storeConsignmentOutDetailsMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(StoreConsignmentOut storeConsignmentOut,List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList) {
+		storeConsignmentOutMapper.updateById(storeConsignmentOut);
+		
+		//1.先删除子表数据
+		storeConsignmentOutDetailsMapper.deleteByMainId(storeConsignmentOut.getId());
+		
+		//2.子表数据重新插入
+		if(storeConsignmentOutDetailsList!=null && storeConsignmentOutDetailsList.size()>0) {
+			for(StoreConsignmentOutDetails entity:storeConsignmentOutDetailsList) {
+				//外键设置
+				entity.setHeadId(storeConsignmentOut.getId());
+				storeConsignmentOutDetailsMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		storeConsignmentOutDetailsMapper.deleteByMainId(id);
+		storeConsignmentOutMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			storeConsignmentOutDetailsMapper.deleteByMainId(id.toString());
+			storeConsignmentOutMapper.deleteById(id);
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Result<String> submitBatch(String ids) {
+
+		QueryWrapper<StoreConsignmentOut> queryWrapper = new QueryWrapper<>();
+		queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		List<StoreConsignmentOut> list = this.list(queryWrapper);
+		if (list.size() == 0) {
+			return Result.error("数据为空!");
+		}
+
+		StringBuffer sb = new StringBuffer();
+		for (StoreConsignmentOut o : list) {
+			// 1-已提交,0-未提交
+			String submit = o.getSubmit();
+			String code = o.getBillCode();
+
+			if (submit != null && submit != "" && submit.equals("1")) {
+				sb.append("单据编码" + code).append("已提交,请勿再次提交;");
+				continue;
+			}
+		}
+
+		if (StringUtils.isNotBlank(sb.toString())) {
+
+			return Result.error(sb.toString());
+		}
+
+		try {
+
+			//执行出库操作
+			String result = "true";//actionIn(list,false);
+
+			if ("true".equals(result)) {
+
+				StoreConsignmentOut ent = new StoreConsignmentOut();
+				ent.setSubmit("1");
+				this.update(ent, queryWrapper);
+			} else {
+				throw new JeecgBootException(result);
+
+			}
+		}catch (JeecgBootException e){
+			throw new JeecgBootException(e.getMessage());
+
+		}
+
+		return Result.OK("提交成功!");
+
+	}
+
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Result<String> returnSubmitBatch(String ids) {
+
+		QueryWrapper<StoreConsignmentOut> queryWrapper = new QueryWrapper<>();
+		queryWrapper.in("id", Arrays.asList(ids.split(",")));
+
+		List<StoreConsignmentOut> list = this.list(queryWrapper);
+		if (list.size() == 0) {
+			return Result.error("数据为空!");
+		}
+
+		StringBuffer sb = new StringBuffer();
+		List<String> idList = new ArrayList<>();
+
+		for (StoreConsignmentOut o : list) {
+
+			//提交(1-是 ,0-否)
+			String submit = o.getSubmit();
+			String code = o.getBillCode();
+			idList.add(code);
+
+			if (submit == null || submit == "" || submit.equals("0")) {
+				sb.append("单号" + code).append("已取消提交,请勿再次取消提交;");
+				continue;
+			}
+		}
+
+		if (StringUtils.isNotBlank(sb.toString())) {
+
+			return Result.error(sb.toString());
+		}
+
+		try {
+
+			//执行出库操作
+			String result = "true";//actionIn(list,true);
+
+			if ("true".equals(result)) {
+
+				StoreConsignmentOut ent = new StoreConsignmentOut();
+				ent.setSubmit("0");
+				this.update(ent, queryWrapper);
+			} else {
+				throw new JeecgBootException(result);
+
+			}
+		}catch (JeecgBootException e){
+			throw new JeecgBootException(e.getMessage());
+		}
+
+		return Result.OK("取消提交成功!");
+	}
+
+
+}

+ 110 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/vo/StoreConsignmentInPage.java

@@ -0,0 +1,110 @@
+package org.jeecg.modules.storeCode.vo;
+
+import java.util.List;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentIn;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInDetails;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentInShip;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 寄存代发入库主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="store_consignment_inPage对象", description="寄存代发入库主表")
+public class StoreConsignmentInPage {
+
+	/**主键id*/
+	@ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**状态(1-启用,0-停用)*/
+	@ApiModelProperty(value = "状态(1-启用,0-停用)")
+    private Integer status;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)", width = 15, dicCode = "yes_or_no")
+    @Dict(dicCode = "yes_or_no")
+	@ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**删除状态(0-正常,1-已删除)*/
+	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    private Integer delFlag;
+	/**所属部门*/
+	@ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+	@ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+	@ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户*/
+	@ApiModelProperty(value = "客户")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+	@ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**仓库(warehouse)*/
+	@Excel(name = "仓库(warehouse)", width = 15)
+	@ApiModelProperty(value = "仓库(warehouse)")
+    private String warehouse;
+	/**货位(goods allocation)*/
+	@Excel(name = "货位(goods allocation)", width = 15)
+	@ApiModelProperty(value = "货位(goods allocation)")
+    private String goodsAllocation;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+	@ApiModelProperty(value = "备注(notes)")
+    private String notes;
+	/**附件(attachs)*/
+	@ApiModelProperty(value = "附件(attachs)")
+    private String attachs;
+
+	@ExcelCollection(name="寄存代发入库-子表产品明细")
+	@ApiModelProperty(value = "寄存代发入库-子表产品明细")
+	private List<StoreConsignmentInDetails> storeConsignmentInDetailsList;
+	@ExcelCollection(name="寄存代发入库-子表船明细")
+	@ApiModelProperty(value = "寄存代发入库-子表船明细")
+	private List<StoreConsignmentInShip> storeConsignmentInShipList;
+
+}

+ 100 - 0
srm-module-code/src/main/java/org/jeecg/modules/storeCode/vo/StoreConsignmentOutPage.java

@@ -0,0 +1,100 @@
+package org.jeecg.modules.storeCode.vo;
+
+import java.util.List;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOut;
+import org.jeecg.modules.storeCode.entity.StoreConsignmentOutDetails;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.constant.ProvinceCityArea;
+import org.jeecg.common.util.SpringContextUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 寄存代发出库-主表
+ * @Author: jeecg-boot
+ * @Date:   2025-05-14
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="store_consignment_outPage对象", description="寄存代发出库-主表")
+public class StoreConsignmentOutPage {
+
+	/**主键id*/
+	@ApiModelProperty(value = "主键id")
+    private String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+	/**提交(submit)1是0否*/
+	@Excel(name = "提交(submit)", width = 15, dicCode = "yes_or_no")
+    @Dict(dicCode = "yes_or_no")
+	@ApiModelProperty(value = "提交(submit)1是0否")
+    private String submit;
+	/**删除状态(0-正常,1-已删除)*/
+	@ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    private Integer delFlag;
+	/**所属部门*/
+	@ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**单据日期*/
+	@Excel(name = "单据日期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+	@ApiModelProperty(value = "单据日期")
+    private Date billDate;
+	/**单据编码*/
+	@Excel(name = "单据编码", width = 15)
+	@ApiModelProperty(value = "单据编码")
+    private String billCode;
+	/**项目(project)*/
+	@ApiModelProperty(value = "项目(project)")
+    private String project;
+	/**项目名称*/
+	@Excel(name = "项目名称", width = 15)
+	@ApiModelProperty(value = "项目名称")
+    private String projectName;
+	/**客户(customer)*/
+	@ApiModelProperty(value = "客户(customer)")
+    private String customer;
+	/**客户名称*/
+	@Excel(name = "客户名称", width = 15)
+	@ApiModelProperty(value = "客户名称")
+    private String customerName;
+	/**仓库(warehouse)*/
+	@Excel(name = "仓库(warehouse)", width = 15)
+	@ApiModelProperty(value = "仓库(warehouse)")
+    private String warehouse;
+	/**货位(goods allocation)*/
+	@Excel(name = "货位(goods allocation)", width = 15)
+	@ApiModelProperty(value = "货位(goods allocation)")
+    private String goodsAllocation;
+	/**备注(notes)*/
+	@Excel(name = "备注(notes)", width = 15)
+	@ApiModelProperty(value = "备注(notes)")
+    private String notes;
+
+	@ExcelCollection(name="寄存代发出库-子表明细")
+	@ApiModelProperty(value = "寄存代发出库-子表明细")
+	private List<StoreConsignmentOutDetails> storeConsignmentOutDetailsList;
+
+}