소스 검색

Merge branch 'master' of http://62.234.61.92:3000/wjm/mec-cloud_IntelligentManufacturing_CLIENT

lph 1 년 전
부모
커밋
bb95c13967
43개의 변경된 파일6954개의 추가작업 그리고 0개의 파일을 삭제
  1. 119 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeController.java
  2. 152 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java
  3. 113 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListInfoController.java
  4. 135 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java
  5. 132 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java
  6. 122 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductWarehousingRecordController.java
  7. 113 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/WarehouseController.java
  8. 123 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCode.java
  9. 384 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeList.java
  10. 222 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeListInfo.java
  11. 448 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInventory.java
  12. 435 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecord.java
  13. 432 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductWarehousingRecord.java
  14. 191 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/Warehouse.java
  15. 507 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java
  16. 68 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListInfoMapper.java
  17. 75 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListMapper.java
  18. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeMapper.java
  19. 69 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductInventoryMapper.java
  20. 77 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java
  21. 80 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductWarehousingRecordMapper.java
  22. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/WarehouseMapper.java
  23. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListInfoService.java
  24. 74 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListService.java
  25. 69 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeService.java
  26. 73 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java
  27. 70 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java
  28. 79 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductWarehousingRecordService.java
  29. 61 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IWarehouseService.java
  30. 96 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListInfoServiceImpl.java
  31. 225 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java
  32. 117 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeServiceImpl.java
  33. 240 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  34. 103 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java
  35. 108 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductWarehousingRecordServiceImpl.java
  36. 96 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/WarehouseServiceImpl.java
  37. 116 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListInfoMapper.xml
  38. 250 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml
  39. 97 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductCodeMapper.xml
  40. 218 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml
  41. 285 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml
  42. 277 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml
  43. 120 0
      zkqy-custom-business/src/main/resources/mapper/business/WarehouseMapper.xml

+ 119 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeController.java

@@ -0,0 +1,119 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductCode;
+import com.zkqy.business.service.IProductCodeService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 产品编码Controller
+ *
+ * @author zkqy
+ * @date 2024-04-02
+ */
+@RestController
+@RequestMapping("/system/productCode")
+@Api(value = "/system/productCode", description = "产品编码-接口")
+public class ProductCodeController extends BaseController
+{
+    @Autowired
+    private IProductCodeService productCodeService;
+
+/**
+ * 查询产品编码列表
+ */
+@PreAuthorize("@ss.hasPermi('system:productCode:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询产品编码列表")
+    public TableDataInfo list(ProductCode productCode)
+    {
+        startPage();
+        List<ProductCode> list = productCodeService.selectProductCodeList(productCode);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产品编码列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCode:export')")
+    @Log(title = "产品编码", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出产品编码列表")
+    public void export(HttpServletResponse response, ProductCode productCode)
+    {
+        List<ProductCode> list = productCodeService.selectProductCodeList(productCode);
+        ExcelUtil<ProductCode> util = new ExcelUtil<ProductCode>(ProductCode.class);
+        util.exportExcel(response, list, "产品编码数据");
+    }
+
+    /**
+     * 获取产品编码详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCode:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取产品编码详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productCodeService.selectProductCodeById(id));
+    }
+
+    /**
+     * 新增产品编码
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCode:add')")
+    @Log(title = "产品编码", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增产品编码")
+    public AjaxResult add(@RequestBody ProductCode productCode)
+    {
+        return toAjax(productCodeService.insertProductCode(productCode));
+    }
+
+    /**
+     * 修改产品编码
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCode:edit')")
+    @Log(title = "产品编码", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改产品编码")
+    public AjaxResult edit(@RequestBody ProductCode productCode)
+    {
+        return toAjax(productCodeService.updateProductCode(productCode));
+    }
+
+    /**
+     * 删除产品编码
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCode:remove')")
+    @Log(title = "产品编码", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除产品编码")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productCodeService.deleteProductCodeByIds(ids));
+    }
+
+    @GetMapping("/dropDownData")
+    public AjaxResult dropDownData(){
+        return AjaxResult.success(productCodeService.dropDownData());
+    }
+
+}

+ 152 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java

@@ -0,0 +1,152 @@
+package com.zkqy.business.controller;
+
+import java.io.ByteArrayOutputStream;
+import java.util.List;
+import javax.print.*;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.service.IProductWarehousingRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductCodeList;
+import com.zkqy.business.service.IProductCodeListService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 产品码单Controller
+ *
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@RestController
+@RequestMapping("/system/productCodeList")
+@Api(value = "/system/productCodeList", description = "产品码单-接口")
+public class ProductCodeListController extends BaseController
+{
+    @Autowired
+    private IProductCodeListService productCodeListService;
+
+    @Autowired
+    private IProductWarehousingRecordService productWarehousingRecordService;
+
+    /**
+     * 查询产品码单列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCodeList:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询产品码单列表")
+    public TableDataInfo list(ProductCodeListVO vo)
+    {
+        startPage();
+        List<ProductCodeListVO> list = productCodeListService.selectProductCodeListList(vo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产品码单列表
+     */
+//    @PreAuthorize("@ss.hasPermi('system:productCodeList:export')")
+//    @Log(title = "产品码单", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    @ApiOperation(value = "导出产品码单列表")
+//    public void export(HttpServletResponse response, ProductCodeList productCodeList)
+//    {
+//        ProductCodeListVO vo = new ProductCodeListVO();
+//        BeanUtils.copyProperties(productCodeList,vo);
+//        List<ProductCodeList> list = productCodeListService.selectProductCodeListList(vo);
+//        ExcelUtil<ProductCodeList> util = new ExcelUtil<ProductCodeList>(ProductCodeList.class);
+//        util.exportExcel(response, list, "产品码单数据");
+//    }
+
+    /**
+     * 获取产品码单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCodeList:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取产品码单详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productCodeListService.selectProductCodeListById(id));
+    }
+
+    /**
+     * 新增产品码单
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCodeList:add')")
+    @Log(title = "产品码单", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增产品码单")
+    public AjaxResult add(@RequestBody ProductCodeListVO vo)
+    {
+        return AjaxResult.success(productCodeListService.insertProductCodeList(vo));
+    }
+
+    /**
+     * 修改产品码单
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCodeList:edit')")
+    @Log(title = "产品码单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改产品码单")
+    public AjaxResult edit(@RequestBody ProductCodeListVO vo)
+    {
+        //查询成品库存表,查看当前码单是否已经入库,入库则不能修改
+        ProductWarehousingRecord productWarehousingRecord = new ProductWarehousingRecord();
+        productWarehousingRecord.setQrCode(vo.getQrCode());
+        List<ProductWarehousingRecord> productWarehousingRecordList = productWarehousingRecordService.selectProductWarehousingRecordList(productWarehousingRecord);
+        if(productWarehousingRecordList.size() > 0){
+            return AjaxResult.error("该码单已入库,不能修改!");
+        }
+
+        return toAjax(productCodeListService.updateProductCodeList(vo));
+    }
+
+    /**
+     * 删除产品码单
+     */
+    @PreAuthorize("@ss.hasPermi('system:productCodeList:remove')")
+    @Log(title = "产品码单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除产品码单")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productCodeListService.deleteProductCodeListByIds(ids));
+    }
+
+    /**
+     * 生产完成产品列表
+     */
+    @GetMapping("/finishedProductList")
+    public AjaxResult finishedProductList(){
+        return AjaxResult.success(productCodeListService.selectFinishedProduct());
+    }
+
+    /**
+     * 获取码单号
+     */
+    @GetMapping("/getQrCode")
+    public AjaxResult getQrCode(){
+        return AjaxResult.success(productCodeListService.selectMaxCodeList());
+    }
+
+}

+ 113 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListInfoController.java

@@ -0,0 +1,113 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductCodeListInfo;
+import com.zkqy.business.service.IProductCodeListInfoService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 产品码单详情Controller
+ *
+ * @author zkqy
+ * @date 2024-04-07
+ */
+@RestController
+@RequestMapping("/system/ProductCodeListInfo")
+@Api(value = "/system/ProductCodeListInfo", description = "产品码单详情-接口")
+public class ProductCodeListInfoController extends BaseController
+{
+    @Autowired
+    private IProductCodeListInfoService productCodeListInfoService;
+
+/**
+ * 查询产品码单详情列表
+ */
+@PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:list')")
+@GetMapping("/list")
+@ApiOperation(value = "查询产品码单详情列表")
+    public TableDataInfo list(ProductCodeListInfo productCodeListInfo)
+    {
+        startPage();
+        List<ProductCodeListInfo> list = productCodeListInfoService.selectProductCodeListInfoList(productCodeListInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产品码单详情列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:export')")
+    @Log(title = "产品码单详情", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出产品码单详情列表")
+    public void export(HttpServletResponse response, ProductCodeListInfo productCodeListInfo)
+    {
+        List<ProductCodeListInfo> list = productCodeListInfoService.selectProductCodeListInfoList(productCodeListInfo);
+        ExcelUtil<ProductCodeListInfo> util = new ExcelUtil<ProductCodeListInfo>(ProductCodeListInfo.class);
+        util.exportExcel(response, list, "产品码单详情数据");
+    }
+
+    /**
+     * 获取产品码单详情详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取产品码单详情详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productCodeListInfoService.selectProductCodeListInfoById(id));
+    }
+
+    /**
+     * 新增产品码单详情
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:add')")
+    @Log(title = "产品码单详情", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增产品码单详情")
+    public AjaxResult add(@RequestBody List<ProductCodeListInfo> productCodeListInfoList)
+    {
+        return toAjax(productCodeListInfoService.insertProductCodeListInfo(productCodeListInfoList));
+    }
+
+    /**
+     * 修改产品码单详情
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:edit')")
+    @Log(title = "产品码单详情", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改产品码单详情")
+    public AjaxResult edit(@RequestBody ProductCodeListInfo productCodeListInfo)
+    {
+        return toAjax(productCodeListInfoService.updateProductCodeListInfo(productCodeListInfo));
+    }
+
+    /**
+     * 删除产品码单详情
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:remove')")
+    @Log(title = "产品码单详情", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除产品码单详情")
+    public AjaxResult remove(@PathVariable List<Long> ids)
+    {
+        return toAjax(productCodeListInfoService.deleteProductCodeListInfoByIds(ids));
+    }
+}

+ 135 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java

@@ -0,0 +1,135 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductInventory;
+import com.zkqy.business.service.IProductInventoryService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 产品库存Controller
+ *
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@RestController
+@RequestMapping("/system/ProductInventory")
+@Api(value = "/system/ProductInventory", description = "产品库存-接口")
+public class ProductInventoryController extends BaseController
+{
+    @Autowired
+    private IProductInventoryService productInventoryService;
+
+    /**
+     * 查询产品库存列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询产品库存列表")
+    public TableDataInfo list(ProductInventory productInventory)
+    {
+        startPage();
+        List<ProductInventory> list = productInventoryService.selectProductInventoryList(productInventory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出产品库存列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:export')")
+    @Log(title = "产品库存", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出产品库存列表")
+    public void export(HttpServletResponse response, ProductInventory productInventory)
+    {
+        List<ProductInventory> list = productInventoryService.selectProductInventoryList(productInventory);
+        ExcelUtil<ProductInventory> util = new ExcelUtil<ProductInventory>(ProductInventory.class);
+        util.exportExcel(response, list, "产品库存数据");
+    }
+
+    /**
+     * 获取产品库存详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取产品库存详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productInventoryService.selectProductInventoryById(id));
+    }
+
+    /**
+     * 新增产品库存
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:add')")
+    @Log(title = "产品库存", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增产品库存")
+    public AjaxResult add(@RequestBody ProductInventory productInventory)
+    {
+        return toAjax(productInventoryService.insertProductInventory(productInventory));
+    }
+
+    /**
+     * 修改产品库存
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:edit')")
+    @Log(title = "产品库存", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改产品库存")
+    public AjaxResult edit(@RequestBody ProductInventory productInventory)
+    {
+        return toAjax(productInventoryService.updateProductInventory(productInventory));
+    }
+
+    /**
+     * 删除产品库存
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductInventory:remove')")
+    @Log(title = "产品库存", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除产品库存")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productInventoryService.deleteProductInventoryByIds(ids));
+    }
+
+    /**
+     * 产品入库
+     */
+    @PostMapping("/productStorage")
+    public AjaxResult productStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList){
+        productInventoryService.productStorage(productCodeListVOList);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 产品出库
+     */
+    @PostMapping("/productOutStorage")
+    public AjaxResult productOutStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList){
+        productInventoryService.productOutStorage(productCodeListVOList);
+        return AjaxResult.success();
+    }
+
+
+}

+ 132 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java

@@ -0,0 +1,132 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.service.IProductWarehousingRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductOutboundRecord;
+import com.zkqy.business.service.IProductOutboundRecordService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 成品出库记录Controller
+ *
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@RestController
+@RequestMapping("/system/ProductOutboundRecord")
+@Api(value = "/system/ProductOutboundRecord", description = "成品出库记录-接口")
+public class ProductOutboundRecordController extends BaseController
+{
+    @Autowired
+    private IProductOutboundRecordService productOutboundRecordService;
+
+    @Autowired
+    private IProductWarehousingRecordService productWarehousingRecordService;
+
+    /**
+     * 查询成品出库记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询成品出库记录列表")
+    public TableDataInfo list(ProductCodeListVO vo)
+    {
+        startPage();
+        List<ProductCodeListVO> list = productOutboundRecordService.selectProductOutboundRecordList(vo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出成品出库记录列表
+     */
+//    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:export')")
+//    @Log(title = "成品出库记录", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    @ApiOperation(value = "导出成品出库记录列表")
+//    public void export(HttpServletResponse response, ProductOutboundRecord productOutboundRecord)
+//    {
+//        List<ProductOutboundRecord> list = productOutboundRecordService.selectProductOutboundRecordList(productOutboundRecord);
+//        ExcelUtil<ProductOutboundRecord> util = new ExcelUtil<ProductOutboundRecord>(ProductOutboundRecord.class);
+//        util.exportExcel(response, list, "成品出库记录数据");
+//    }
+
+    /**
+     * 获取成品出库记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取成品出库记录详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productOutboundRecordService.selectProductOutboundRecordById(id));
+    }
+
+    /**
+     * 新增成品出库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:add')")
+    @Log(title = "成品出库记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增成品出库记录")
+    public AjaxResult add(@RequestBody ProductOutboundRecord productOutboundRecord)
+    {
+        return toAjax(productOutboundRecordService.insertProductOutboundRecord(productOutboundRecord));
+    }
+
+    /**
+     * 修改成品出库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:edit')")
+    @Log(title = "成品出库记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改成品出库记录")
+    public AjaxResult edit(@RequestBody ProductOutboundRecord productOutboundRecord)
+    {
+        return toAjax(productOutboundRecordService.updateProductOutboundRecord(productOutboundRecord));
+    }
+
+    /**
+     * 删除成品出库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:remove')")
+    @Log(title = "成品出库记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除成品出库记录")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productOutboundRecordService.deleteProductOutboundRecordByIds(ids));
+    }
+
+    /**
+     * 是否已出库
+     */
+    @GetMapping("/whetherStorage")
+    public AjaxResult whetherStorage(@RequestParam("qrCode") String qrCode, @RequestParam("qrCodeId") String qrCodeId){
+        //查看当前码单是否已入库
+        ProductWarehousingRecord productWarehousingRecord = productWarehousingRecordService.selectProductWarehousingRecordWhetherExist(qrCode, qrCodeId);
+        if(productWarehousingRecord == null){
+            return AjaxResult.success("当前货品未入库,请先入库!",false);
+        }
+        //查看当前码单是否已出库
+        ProductOutboundRecord productOutboundRecord = productOutboundRecordService.whetherStorage(qrCode, qrCodeId);
+        if(productOutboundRecord != null){
+            return AjaxResult.success("当前货品已出库,不能重复出库!",false);
+        }
+        return success(true);
+    }
+
+}

+ 122 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductWarehousingRecordController.java

@@ -0,0 +1,122 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.service.IProductWarehousingRecordService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 成品入库记录Controller
+ *
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@RestController
+@RequestMapping("/system/ProductWarehousingRecord")
+@Api(value = "/system/ProductWarehousingRecord", description = "成品入库记录-接口")
+public class ProductWarehousingRecordController extends BaseController
+{
+    @Autowired
+    private IProductWarehousingRecordService productWarehousingRecordService;
+
+    /**
+     * 查询成品入库记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询成品入库记录列表")
+    public TableDataInfo list(ProductCodeListVO vo)
+    {
+        startPage();
+        List<ProductCodeListVO> list = productWarehousingRecordService.selectList(vo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出成品入库记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:export')")
+    @Log(title = "成品入库记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出成品入库记录列表")
+    public void export(HttpServletResponse response, ProductWarehousingRecord productWarehousingRecord)
+    {
+        List<ProductWarehousingRecord> list = productWarehousingRecordService.selectProductWarehousingRecordList(productWarehousingRecord);
+        ExcelUtil<ProductWarehousingRecord> util = new ExcelUtil<ProductWarehousingRecord>(ProductWarehousingRecord.class);
+        util.exportExcel(response, list, "成品入库记录数据");
+    }
+
+    /**
+     * 获取成品入库记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取成品入库记录详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(productWarehousingRecordService.selectProductWarehousingRecordById(id));
+    }
+
+    /**
+     * 新增成品入库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:add')")
+    @Log(title = "成品入库记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增成品入库记录")
+    public AjaxResult add(@RequestBody ProductWarehousingRecord productWarehousingRecord)
+    {
+        return toAjax(productWarehousingRecordService.insertProductWarehousingRecord(productWarehousingRecord));
+    }
+
+    /**
+     * 修改成品入库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:edit')")
+    @Log(title = "成品入库记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改成品入库记录")
+    public AjaxResult edit(@RequestBody ProductWarehousingRecord productWarehousingRecord)
+    {
+        return toAjax(productWarehousingRecordService.updateProductWarehousingRecord(productWarehousingRecord));
+    }
+
+    /**
+     * 删除成品入库记录
+     */
+    @PreAuthorize("@ss.hasPermi('system:ProductWarehousingRecord:remove')")
+    @Log(title = "成品入库记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除成品入库记录")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(productWarehousingRecordService.deleteProductWarehousingRecordByIds(ids));
+    }
+
+    /**
+     * 是否已入库
+     */
+    @GetMapping("/whetherExist")
+    public AjaxResult whetherExist(@RequestParam("qrCode") String qrCode, @RequestParam("qrCodeId") String qrCodeId)
+    {
+        ProductWarehousingRecord productWarehousingRecord = productWarehousingRecordService.selectProductWarehousingRecordWhetherExist(qrCode, qrCodeId);
+        if(productWarehousingRecord != null){
+            return success(false);
+        }
+        return success(true);
+    }
+
+}

+ 113 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/WarehouseController.java

@@ -0,0 +1,113 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.Warehouse;
+import com.zkqy.business.service.IWarehouseService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 仓库Controller
+ *
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@RestController
+@RequestMapping("/system/Warehouse")
+@Api(value = "/system/Warehouse", description = "仓库-接口")
+public class WarehouseController extends BaseController
+{
+    @Autowired
+    private IWarehouseService warehouseService;
+
+    /**
+     * 查询仓库列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询仓库列表")
+    public TableDataInfo list(Warehouse warehouse)
+    {
+        startPage();
+        List<Warehouse> list = warehouseService.selectWarehouseList(warehouse);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出仓库列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:export')")
+    @Log(title = "仓库", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出仓库列表")
+    public void export(HttpServletResponse response, Warehouse warehouse)
+    {
+        List<Warehouse> list = warehouseService.selectWarehouseList(warehouse);
+        ExcelUtil<Warehouse> util = new ExcelUtil<Warehouse>(Warehouse.class);
+        util.exportExcel(response, list, "仓库数据");
+    }
+
+    /**
+     * 获取仓库详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取仓库详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(warehouseService.selectWarehouseById(id));
+    }
+
+    /**
+     * 新增仓库
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:add')")
+    @Log(title = "仓库", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增仓库")
+    public AjaxResult add(@RequestBody Warehouse warehouse)
+    {
+        return toAjax(warehouseService.insertWarehouse(warehouse));
+    }
+
+    /**
+     * 修改仓库
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:edit')")
+    @Log(title = "仓库", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改仓库")
+    public AjaxResult edit(@RequestBody Warehouse warehouse)
+    {
+        return toAjax(warehouseService.updateWarehouse(warehouse));
+    }
+
+    /**
+     * 删除仓库
+     */
+    @PreAuthorize("@ss.hasPermi('system:Warehouse:remove')")
+    @Log(title = "仓库", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除仓库")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(warehouseService.deleteWarehouseByIds(ids));
+    }
+}

+ 123 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCode.java

@@ -0,0 +1,123 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 产品编码对象 product_code
+ * 
+ * @author zkqy
+ * @date 2024-04-02
+ */
+public class ProductCode extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编码 */
+    private Long id;
+
+    /** 编码 */
+    @Excel(name = "编码")
+    private String num;
+
+    /** 编码名称 */
+    @Excel(name = "编码名称")
+    private String codeName;
+
+    /** 编码类型 */
+    @Excel(name = "编码类型")
+    private String codeType;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者ID */
+    private Long createById;
+
+    /** 更新者ID */
+    private Long updateById;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setNum(String num) 
+    {
+        this.num = num;
+    }
+
+    public String getNum() 
+    {
+        return num;
+    }
+    public void setCodeName(String codeName) 
+    {
+        this.codeName = codeName;
+    }
+
+    public String getCodeName() 
+    {
+        return codeName;
+    }
+    public void setCodeType(String codeType) 
+    {
+        this.codeType = codeType;
+    }
+
+    public String getCodeType() 
+    {
+        return codeType;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("num", getNum())
+            .append("codeName", getCodeName())
+            .append("codeType", getCodeType())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createById", getCreateById())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 384 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeList.java

@@ -0,0 +1,384 @@
+package com.zkqy.business.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 产品码单对象 product_code_list
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public class ProductCodeList extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 码单号 */
+    @Excel(name = "码单号")
+    private String qrCode;
+
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNum;
+
+    /** 货品编号 */
+    @Excel(name = "货品编号")
+    private Long productId;
+
+    /** 等级 */
+    @Excel(name = "等级")
+    private String levels;
+
+    /** 筒数 */
+    @Excel(name = "筒数")
+    private Integer canisterNum;
+
+    /** 箱数 */
+    @Excel(name = "箱数")
+    private Integer boxNum;
+
+    /** 净重 */
+    @Excel(name = "净重")
+    private Double suttle;
+
+    /** 生产日期 */
+    private Date productionDate;
+
+    /** 机台 */
+    private String machineTool;
+
+    /** 毛重 */
+    private Double grossWeight;
+
+    /** 包装 */
+    private String packaging;
+
+    /** 班次 */
+    private String workShifts;
+
+    /** 外贸号 */
+    private String foreignTradeNumber;
+
+    /** 筒重 */
+    private Double canisterWeight;
+
+    /** 箱重/车重 */
+    private Double boxWeight;
+
+    /** 管色 */
+    private String tubeColor;
+
+    /** 端口(usb端口号) */
+    private String comPort;
+
+    /** 打印格式(打印二维码格式) */
+    private String printFormat;
+
+    /** 包装类型(暂未使用) */
+    private String packagingType;
+
+    /** 库位(暂未使用) */
+    private String storageLocation;
+
+    /** 区域编号(暂未使用) */
+    private Long warehouseregionId;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者编号 */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 合计筒数 */
+    private Integer totalCanisterNum;
+
+    /** 合计箱数 */
+    private Integer totalBoxNum;
+
+    /** 合计净重 */
+    private Double totalSuttle;
+
+    /** 合计毛重 */
+    private Double totalGrossWeight;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getQrCode() {
+        return qrCode;
+    }
+
+    public void setQrCode(String qrCode) {
+        this.qrCode = qrCode;
+    }
+
+    public String getLotNum() {
+        return lotNum;
+    }
+
+    public void setLotNum(String lotNum) {
+        this.lotNum = lotNum;
+    }
+
+    public Long getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Long productId) {
+        this.productId = productId;
+    }
+
+    public String getLevels() {
+        return levels;
+    }
+
+    public void setLevels(String levels) {
+        this.levels = levels;
+    }
+
+    public Integer getCanisterNum() {
+        return canisterNum;
+    }
+
+    public void setCanisterNum(Integer canisterNum) {
+        this.canisterNum = canisterNum;
+    }
+
+    public Integer getBoxNum() {
+        return boxNum;
+    }
+
+    public void setBoxNum(Integer boxNum) {
+        this.boxNum = boxNum;
+    }
+
+    public Double getSuttle() {
+        return suttle;
+    }
+
+    public void setSuttle(Double suttle) {
+        this.suttle = suttle;
+    }
+
+    public Date getProductionDate() {
+        return productionDate;
+    }
+
+    public void setProductionDate(Date productionDate) {
+        this.productionDate = productionDate;
+    }
+
+    public String getMachineTool() {
+        return machineTool;
+    }
+
+    public void setMachineTool(String machineTool) {
+        this.machineTool = machineTool;
+    }
+
+    public Double getGrossWeight() {
+        return grossWeight;
+    }
+
+    public void setGrossWeight(Double grossWeight) {
+        this.grossWeight = grossWeight;
+    }
+
+    public String getPackaging() {
+        return packaging;
+    }
+
+    public void setPackaging(String packaging) {
+        this.packaging = packaging;
+    }
+
+    public String getWorkShifts() {
+        return workShifts;
+    }
+
+    public void setWorkShifts(String workShifts) {
+        this.workShifts = workShifts;
+    }
+
+    public String getForeignTradeNumber() {
+        return foreignTradeNumber;
+    }
+
+    public void setForeignTradeNumber(String foreignTradeNumber) {
+        this.foreignTradeNumber = foreignTradeNumber;
+    }
+
+    public Double getCanisterWeight() {
+        return canisterWeight;
+    }
+
+    public void setCanisterWeight(Double canisterWeight) {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Double getBoxWeight() {
+        return boxWeight;
+    }
+
+    public void setBoxWeight(Double boxWeight) {
+        this.boxWeight = boxWeight;
+    }
+
+    public String getTubeColor() {
+        return tubeColor;
+    }
+
+    public void setTubeColor(String tubeColor) {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getComPort() {
+        return comPort;
+    }
+
+    public void setComPort(String comPort) {
+        this.comPort = comPort;
+    }
+
+    public String getPrintFormat() {
+        return printFormat;
+    }
+
+    public void setPrintFormat(String printFormat) {
+        this.printFormat = printFormat;
+    }
+
+    public String getPackagingType() {
+        return packagingType;
+    }
+
+    public void setPackagingType(String packagingType) {
+        this.packagingType = packagingType;
+    }
+
+    public String getStorageLocation() {
+        return storageLocation;
+    }
+
+    public void setStorageLocation(String storageLocation) {
+        this.storageLocation = storageLocation;
+    }
+
+    public Long getWarehouseregionId() {
+        return warehouseregionId;
+    }
+
+    public void setWarehouseregionId(Long warehouseregionId) {
+        this.warehouseregionId = warehouseregionId;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public Long getCreateById() {
+        return createById;
+    }
+
+    @Override
+    public void setCreateById(Long createById) {
+        this.createById = createById;
+    }
+
+    @Override
+    public Long getUpdateById() {
+        return updateById;
+    }
+
+    @Override
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
+    }
+
+    public Integer getTotalCanisterNum() {
+        return totalCanisterNum;
+    }
+
+    public void setTotalCanisterNum(Integer totalCanisterNum) {
+        this.totalCanisterNum = totalCanisterNum;
+    }
+
+    public Integer getTotalBoxNum() {
+        return totalBoxNum;
+    }
+
+    public void setTotalBoxNum(Integer totalBoxNum) {
+        this.totalBoxNum = totalBoxNum;
+    }
+
+    public Double getTotalSuttle() {
+        return totalSuttle;
+    }
+
+    public void setTotalSuttle(Double totalSuttle) {
+        this.totalSuttle = totalSuttle;
+    }
+
+    public Double getTotalGrossWeight() {
+        return totalGrossWeight;
+    }
+
+    public void setTotalGrossWeight(Double totalGrossWeight) {
+        this.totalGrossWeight = totalGrossWeight;
+    }
+
+    @Override
+    public String toString() {
+        return "ProductCodeList{" +
+                "id=" + id +
+                ", qrCode='" + qrCode + '\'' +
+                ", lotNum='" + lotNum + '\'' +
+                ", productId=" + productId +
+                ", levels='" + levels + '\'' +
+                ", canisterNum=" + canisterNum +
+                ", boxNum=" + boxNum +
+                ", suttle=" + suttle +
+                ", productionDate=" + productionDate +
+                ", machineTool='" + machineTool + '\'' +
+                ", grossWeight=" + grossWeight +
+                ", packaging='" + packaging + '\'' +
+                ", workShifts='" + workShifts + '\'' +
+                ", foreignTradeNumber='" + foreignTradeNumber + '\'' +
+                ", canisterWeight=" + canisterWeight +
+                ", boxWeight=" + boxWeight +
+                ", tubeColor='" + tubeColor + '\'' +
+                ", comPort='" + comPort + '\'' +
+                ", printFormat='" + printFormat + '\'' +
+                ", packagingType='" + packagingType + '\'' +
+                ", storageLocation='" + storageLocation + '\'' +
+                ", warehouseregionId=" + warehouseregionId +
+                ", delFlag='" + delFlag + '\'' +
+                ", createById=" + createById +
+                ", updateById=" + updateById +
+                ", totalCanisterNum=" + totalCanisterNum +
+                ", totalBoxNum=" + totalBoxNum +
+                ", totalSuttle=" + totalSuttle +
+                ", totalGrossWeight=" + totalGrossWeight +
+                '}';
+    }
+}

+ 222 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeListInfo.java

@@ -0,0 +1,222 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 产品码单详情对象 product_code_list_info
+ * 
+ * @author zkqy
+ * @date 2024-04-07
+ */
+public class ProductCodeListInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 产品码单编号 */
+    @Excel(name = "产品码单编号")
+    private Long codeListId;
+
+    /** 机台 */
+    @Excel(name = "机台")
+    private String machineTool;
+
+    /** 箱号 */
+    @Excel(name = "箱号")
+    private String boxNumber;
+
+    /** 箱重 */
+    @Excel(name = "箱重")
+    private Double boxWeight;
+
+    /** 筒重 */
+    @Excel(name = "筒重")
+    private Double canisterWeight;
+
+    /** 筒数 */
+    @Excel(name = "筒数")
+    private Long canisterNum;
+
+    /** 毛重 */
+    @Excel(name = "毛重")
+    private Double grossWeight;
+
+    /** 净重 */
+    @Excel(name = "净重")
+    private Double suttle;
+
+    /** 班次 */
+    @Excel(name = "班次")
+    private String workShifts;
+
+    /** 管色 */
+    @Excel(name = "管色")
+    private String tubeColor;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者ID */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 打印格式 */
+    private String printFormat;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCodeListId() {
+        return codeListId;
+    }
+
+    public void setCodeListId(Long codeListId) {
+        this.codeListId = codeListId;
+    }
+
+    public String getMachineTool() {
+        return machineTool;
+    }
+
+    public void setMachineTool(String machineTool) {
+        this.machineTool = machineTool;
+    }
+
+    public String getBoxNumber() {
+        return boxNumber;
+    }
+
+    public void setBoxNumber(String boxNumber) {
+        this.boxNumber = boxNumber;
+    }
+
+    public Double getBoxWeight() {
+        return boxWeight;
+    }
+
+    public void setBoxWeight(Double boxWeight) {
+        this.boxWeight = boxWeight;
+    }
+
+    public Double getCanisterWeight() {
+        return canisterWeight;
+    }
+
+    public void setCanisterWeight(Double canisterWeight) {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Long getCanisterNum() {
+        return canisterNum;
+    }
+
+    public void setCanisterNum(Long canisterNum) {
+        this.canisterNum = canisterNum;
+    }
+
+    public Double getGrossWeight() {
+        return grossWeight;
+    }
+
+    public void setGrossWeight(Double grossWeight) {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getSuttle() {
+        return suttle;
+    }
+
+    public void setSuttle(Double suttle) {
+        this.suttle = suttle;
+    }
+
+    public String getWorkShifts() {
+        return workShifts;
+    }
+
+    public void setWorkShifts(String workShifts) {
+        this.workShifts = workShifts;
+    }
+
+    public String getTubeColor() {
+        return tubeColor;
+    }
+
+    public void setTubeColor(String tubeColor) {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public Long getCreateById() {
+        return createById;
+    }
+
+    @Override
+    public void setCreateById(Long createById) {
+        this.createById = createById;
+    }
+
+    @Override
+    public Long getUpdateById() {
+        return updateById;
+    }
+
+    @Override
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
+    }
+
+    public String getPrintFormat() {
+        return printFormat;
+    }
+
+    public void setPrintFormat(String printFormat) {
+        this.printFormat = printFormat;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("codeListId", getCodeListId())
+            .append("machineTool", getMachineTool())
+            .append("boxNumber", getBoxNumber())
+            .append("boxWeight", getBoxWeight())
+            .append("canisterWeight", getCanisterWeight())
+            .append("canisterNum", getCanisterNum())
+            .append("grossWeight", getGrossWeight())
+            .append("suttle", getSuttle())
+            .append("workShifts", getWorkShifts())
+            .append("tubeColor", getTubeColor())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createById", getCreateById())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .append("printFormat",getPrintFormat())
+            .toString();
+    }
+}

+ 448 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInventory.java

@@ -0,0 +1,448 @@
+package com.zkqy.business.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 产品库存对象 product_inventory
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public class ProductInventory extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 码单号 */
+    @Excel(name = "码单号")
+    private String qrCode;
+
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNum;
+
+    /** 货品编号 */
+    @Excel(name = "货品编号")
+    private Long productId;
+
+    /** 等级 */
+    @Excel(name = "等级")
+    private String levels;
+
+    /** 筒数 */
+    @Excel(name = "筒数")
+    private Integer canisterNum;
+
+    /** 箱数 */
+    @Excel(name = "箱数")
+    private Integer boxNum;
+
+    /** 净重 */
+    @Excel(name = "净重")
+    private Long suttle;
+
+    /** 生产日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date productionDate;
+
+    /** 仓库编号 */
+    @Excel(name = "仓库编号")
+    private Long warehouseId;
+
+    /** 机台 */
+    @Excel(name = "机台")
+    private String machineTool;
+
+    /** 毛重 */
+    @Excel(name = "毛重")
+    private Double grossWeight;
+
+    /** 包装 */
+    @Excel(name = "包装")
+    private String packaging;
+
+    /** 班次 */
+    @Excel(name = "班次")
+    private String workShifts;
+
+    /** 外贸号 */
+    @Excel(name = "外贸号")
+    private String foreignTradeNumber;
+
+    /** 筒重 */
+    @Excel(name = "筒重")
+    private Double canisterWeight;
+
+    /** 箱重 */
+    @Excel(name = "箱重")
+    private Double boxWeight;
+
+    /** 管色 */
+    @Excel(name = "管色")
+    private String tubeColor;
+
+    /** 端口(usb端口号) */
+    @Excel(name = "端口", readConverterExp = "u=sb端口号")
+    private String comPort;
+
+    /** 打印格式(打印二维码格式) */
+    @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
+    private String printFormat;
+
+    /** 包装类型(暂未使用) */
+    @Excel(name = "包装类型", readConverterExp = "暂=未使用")
+    private String packagingType;
+
+    /** 库位(暂未使用) */
+    @Excel(name = "库位", readConverterExp = "暂=未使用")
+    private String storageLocation;
+
+    /** 区域编号(暂未使用) */
+    @Excel(name = "区域编号", readConverterExp = "暂=未使用")
+    private Long warehouseregionId;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者编号 */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 合计筒数 */
+    @Excel(name = "合计筒数")
+    private Integer totalCanisterNum;
+
+    /** 合计箱数 */
+    @Excel(name = "合计箱数")
+    private Integer totalBoxNum;
+
+    /** 合计净重 */
+    @Excel(name = "合计净重")
+    private Double totalSuttle;
+
+    /** 合计毛重 */
+    @Excel(name = "合计毛重")
+    private Double totalGrossWeight;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setQrCode(String qrCode) 
+    {
+        this.qrCode = qrCode;
+    }
+
+    public String getQrCode() 
+    {
+        return qrCode;
+    }
+    public void setLotNum(String lotNum) 
+    {
+        this.lotNum = lotNum;
+    }
+
+    public String getLotNum() 
+    {
+        return lotNum;
+    }
+    public void setProductId(Long productId) 
+    {
+        this.productId = productId;
+    }
+
+    public Long getProductId() 
+    {
+        return productId;
+    }
+    public void setLevels(String levels) 
+    {
+        this.levels = levels;
+    }
+
+    public String getLevels() 
+    {
+        return levels;
+    }
+    public void setCanisterNum(Integer canisterNum)
+    {
+        this.canisterNum = canisterNum;
+    }
+
+    public Integer getCanisterNum()
+    {
+        return canisterNum;
+    }
+    public void setBoxNum(Integer boxNum)
+    {
+        this.boxNum = boxNum;
+    }
+
+    public Integer getBoxNum()
+    {
+        return boxNum;
+    }
+    public void setSuttle(Long suttle) 
+    {
+        this.suttle = suttle;
+    }
+
+    public Long getSuttle() 
+    {
+        return suttle;
+    }
+    public void setProductionDate(Date productionDate) 
+    {
+        this.productionDate = productionDate;
+    }
+
+    public Date getProductionDate() 
+    {
+        return productionDate;
+    }
+    public void setWarehouseId(Long warehouseId) 
+    {
+        this.warehouseId = warehouseId;
+    }
+
+    public Long getWarehouseId() 
+    {
+        return warehouseId;
+    }
+    public void setMachineTool(String machineTool) 
+    {
+        this.machineTool = machineTool;
+    }
+
+    public String getMachineTool() 
+    {
+        return machineTool;
+    }
+    public void setGrossWeight(Double grossWeight)
+    {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getGrossWeight()
+    {
+        return grossWeight;
+    }
+    public void setPackaging(String packaging) 
+    {
+        this.packaging = packaging;
+    }
+
+    public String getPackaging() 
+    {
+        return packaging;
+    }
+    public void setWorkShifts(String workShifts) 
+    {
+        this.workShifts = workShifts;
+    }
+
+    public String getWorkShifts() 
+    {
+        return workShifts;
+    }
+    public void setForeignTradeNumber(String foreignTradeNumber) 
+    {
+        this.foreignTradeNumber = foreignTradeNumber;
+    }
+
+    public String getForeignTradeNumber() 
+    {
+        return foreignTradeNumber;
+    }
+    public void setCanisterWeight(Double canisterWeight)
+    {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Double getCanisterWeight()
+    {
+        return canisterWeight;
+    }
+    public void setBoxWeight(Double boxWeight)
+    {
+        this.boxWeight = boxWeight;
+    }
+
+    public Double getBoxWeight()
+    {
+        return boxWeight;
+    }
+    public void setTubeColor(String tubeColor) 
+    {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getTubeColor() 
+    {
+        return tubeColor;
+    }
+    public void setComPort(String comPort) 
+    {
+        this.comPort = comPort;
+    }
+
+    public String getComPort() 
+    {
+        return comPort;
+    }
+    public void setPrintFormat(String printFormat) 
+    {
+        this.printFormat = printFormat;
+    }
+
+    public String getPrintFormat() 
+    {
+        return printFormat;
+    }
+    public void setPackagingType(String packagingType) 
+    {
+        this.packagingType = packagingType;
+    }
+
+    public String getPackagingType() 
+    {
+        return packagingType;
+    }
+    public void setStorageLocation(String storageLocation) 
+    {
+        this.storageLocation = storageLocation;
+    }
+
+    public String getStorageLocation() 
+    {
+        return storageLocation;
+    }
+    public void setWarehouseregionId(Long warehouseregionId) 
+    {
+        this.warehouseregionId = warehouseregionId;
+    }
+
+    public Long getWarehouseregionId() 
+    {
+        return warehouseregionId;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setTotalCanisterNum(Integer totalCanisterNum)
+    {
+        this.totalCanisterNum = totalCanisterNum;
+    }
+
+    public Integer getTotalCanisterNum()
+    {
+        return totalCanisterNum;
+    }
+    public void setTotalBoxNum(Integer totalBoxNum)
+    {
+        this.totalBoxNum = totalBoxNum;
+    }
+
+    public Integer getTotalBoxNum()
+    {
+        return totalBoxNum;
+    }
+    public void setTotalSuttle(Double totalSuttle)
+    {
+        this.totalSuttle = totalSuttle;
+    }
+
+    public Double getTotalSuttle()
+    {
+        return totalSuttle;
+    }
+    public void setTotalGrossWeight(Double totalGrossWeight)
+    {
+        this.totalGrossWeight = totalGrossWeight;
+    }
+
+    public Double getTotalGrossWeight()
+    {
+        return totalGrossWeight;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("qrCode", getQrCode())
+            .append("lotNum", getLotNum())
+            .append("productId", getProductId())
+            .append("levels", getLevels())
+            .append("canisterNum", getCanisterNum())
+            .append("boxNum", getBoxNum())
+            .append("suttle", getSuttle())
+            .append("productionDate", getProductionDate())
+            .append("warehouseId", getWarehouseId())
+            .append("machineTool", getMachineTool())
+            .append("grossWeight", getGrossWeight())
+            .append("packaging", getPackaging())
+            .append("workShifts", getWorkShifts())
+            .append("foreignTradeNumber", getForeignTradeNumber())
+            .append("canisterWeight", getCanisterWeight())
+            .append("boxWeight", getBoxWeight())
+            .append("tubeColor", getTubeColor())
+            .append("comPort", getComPort())
+            .append("printFormat", getPrintFormat())
+            .append("packagingType", getPackagingType())
+            .append("storageLocation", getStorageLocation())
+            .append("warehouseregionId", getWarehouseregionId())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createById", getCreateById())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .append("totalCanisterNum", getTotalCanisterNum())
+            .append("totalBoxNum", getTotalBoxNum())
+            .append("totalSuttle", getTotalSuttle())
+            .append("totalGrossWeight", getTotalGrossWeight())
+            .toString();
+    }
+}

+ 435 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecord.java

@@ -0,0 +1,435 @@
+package com.zkqy.business.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 成品出库记录对象 product_outbound_record
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public class ProductOutboundRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 码单号 */
+    @Excel(name = "码单号")
+    private String qrCode;
+
+    /** 码单唯一标识 */
+    @Excel(name = "码单唯一标识")
+    private String qrCodeId;
+
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNum;
+
+    /** 货品编号 */
+    @Excel(name = "货品编号")
+    private Long productId;
+
+    /** 等级 */
+    @Excel(name = "等级")
+    private String levels;
+
+    /** 筒数 */
+    @Excel(name = "筒数")
+    private Integer canisterNum;
+
+    /** 箱数 */
+    @Excel(name = "箱数")
+    private Integer boxNum;
+
+    /** 净重 */
+    @Excel(name = "净重")
+    private Double suttle;
+
+    /** 生产日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date productionDate;
+
+    /** 机台 */
+    @Excel(name = "机台")
+    private String machineTool;
+
+    /** 毛重 */
+    @Excel(name = "毛重")
+    private Double grossWeight;
+
+    /** 包装 */
+    @Excel(name = "包装")
+    private String packaging;
+
+    /** 班次 */
+    @Excel(name = "班次")
+    private String workShifts;
+
+    /** 外贸号 */
+    @Excel(name = "外贸号")
+    private String foreignTradeNumber;
+
+    /** 筒重 */
+    @Excel(name = "筒重")
+    private Double canisterWeight;
+
+    /** 箱重/车重 */
+    @Excel(name = "箱重/车重")
+    private Double boxWeight;
+
+    /** 管色 */
+    @Excel(name = "管色")
+    private String tubeColor;
+
+    /** 端口(usb端口号) */
+    @Excel(name = "端口", readConverterExp = "u=sb端口号")
+    private String comPort;
+
+    /** 打印格式(打印二维码格式) */
+    @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
+    private String printFormat;
+
+    /** 包装类型(暂未使用) */
+    @Excel(name = "包装类型", readConverterExp = "暂=未使用")
+    private String packagingType;
+
+    /** 库位(暂未使用) */
+    @Excel(name = "库位", readConverterExp = "暂=未使用")
+    private String storageLocation;
+
+    /** 区域编号(暂未使用) */
+    @Excel(name = "区域编号", readConverterExp = "暂=未使用")
+    private Long warehouseregionId;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者编号 */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 出库时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warehousingTime;
+
+    /** 出库人 */
+    @Excel(name = "出库人")
+    private String depositor;
+
+    /** 仓库编号 */
+    @Excel(name = "仓库编号")
+    private Long warehouseId;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setQrCode(String qrCode) 
+    {
+        this.qrCode = qrCode;
+    }
+
+    public String getQrCode() 
+    {
+        return qrCode;
+    }
+    public void setQrCodeId(String qrCodeId) 
+    {
+        this.qrCodeId = qrCodeId;
+    }
+
+    public String getQrCodeId() 
+    {
+        return qrCodeId;
+    }
+    public void setLotNum(String lotNum) 
+    {
+        this.lotNum = lotNum;
+    }
+
+    public String getLotNum() 
+    {
+        return lotNum;
+    }
+    public void setProductId(Long productId) 
+    {
+        this.productId = productId;
+    }
+
+    public Long getProductId() 
+    {
+        return productId;
+    }
+    public void setLevels(String levels) 
+    {
+        this.levels = levels;
+    }
+
+    public String getLevels() 
+    {
+        return levels;
+    }
+    public void setCanisterNum(Integer canisterNum) 
+    {
+        this.canisterNum = canisterNum;
+    }
+
+    public Integer getCanisterNum() 
+    {
+        return canisterNum;
+    }
+    public void setBoxNum(Integer boxNum) 
+    {
+        this.boxNum = boxNum;
+    }
+
+    public Integer getBoxNum() 
+    {
+        return boxNum;
+    }
+    public void setSuttle(Double suttle) 
+    {
+        this.suttle = suttle;
+    }
+
+    public Double getSuttle() 
+    {
+        return suttle;
+    }
+    public void setProductionDate(Date productionDate) 
+    {
+        this.productionDate = productionDate;
+    }
+
+    public Date getProductionDate() 
+    {
+        return productionDate;
+    }
+    public void setMachineTool(String machineTool) 
+    {
+        this.machineTool = machineTool;
+    }
+
+    public String getMachineTool() 
+    {
+        return machineTool;
+    }
+    public void setGrossWeight(Double grossWeight) 
+    {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getGrossWeight() 
+    {
+        return grossWeight;
+    }
+    public void setPackaging(String packaging) 
+    {
+        this.packaging = packaging;
+    }
+
+    public String getPackaging() 
+    {
+        return packaging;
+    }
+    public void setWorkShifts(String workShifts) 
+    {
+        this.workShifts = workShifts;
+    }
+
+    public String getWorkShifts() 
+    {
+        return workShifts;
+    }
+    public void setForeignTradeNumber(String foreignTradeNumber) 
+    {
+        this.foreignTradeNumber = foreignTradeNumber;
+    }
+
+    public String getForeignTradeNumber() 
+    {
+        return foreignTradeNumber;
+    }
+    public void setCanisterWeight(Double canisterWeight) 
+    {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Double getCanisterWeight() 
+    {
+        return canisterWeight;
+    }
+    public void setBoxWeight(Double boxWeight) 
+    {
+        this.boxWeight = boxWeight;
+    }
+
+    public Double getBoxWeight() 
+    {
+        return boxWeight;
+    }
+    public void setTubeColor(String tubeColor) 
+    {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getTubeColor() 
+    {
+        return tubeColor;
+    }
+    public void setComPort(String comPort) 
+    {
+        this.comPort = comPort;
+    }
+
+    public String getComPort() 
+    {
+        return comPort;
+    }
+    public void setPrintFormat(String printFormat) 
+    {
+        this.printFormat = printFormat;
+    }
+
+    public String getPrintFormat() 
+    {
+        return printFormat;
+    }
+    public void setPackagingType(String packagingType) 
+    {
+        this.packagingType = packagingType;
+    }
+
+    public String getPackagingType() 
+    {
+        return packagingType;
+    }
+    public void setStorageLocation(String storageLocation) 
+    {
+        this.storageLocation = storageLocation;
+    }
+
+    public String getStorageLocation() 
+    {
+        return storageLocation;
+    }
+    public void setWarehouseregionId(Long warehouseregionId) 
+    {
+        this.warehouseregionId = warehouseregionId;
+    }
+
+    public Long getWarehouseregionId() 
+    {
+        return warehouseregionId;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setWarehousingTime(Date warehousingTime) 
+    {
+        this.warehousingTime = warehousingTime;
+    }
+
+    public Date getWarehousingTime() 
+    {
+        return warehousingTime;
+    }
+    public void setDepositor(String depositor) 
+    {
+        this.depositor = depositor;
+    }
+
+    public String getDepositor() 
+    {
+        return depositor;
+    }
+    public void setWarehouseId(Long warehouseId) 
+    {
+        this.warehouseId = warehouseId;
+    }
+
+    public Long getWarehouseId() 
+    {
+        return warehouseId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("qrCode", getQrCode())
+            .append("qrCodeId", getQrCodeId())
+            .append("lotNum", getLotNum())
+            .append("productId", getProductId())
+            .append("levels", getLevels())
+            .append("canisterNum", getCanisterNum())
+            .append("boxNum", getBoxNum())
+            .append("suttle", getSuttle())
+            .append("productionDate", getProductionDate())
+            .append("machineTool", getMachineTool())
+            .append("grossWeight", getGrossWeight())
+            .append("packaging", getPackaging())
+            .append("workShifts", getWorkShifts())
+            .append("foreignTradeNumber", getForeignTradeNumber())
+            .append("canisterWeight", getCanisterWeight())
+            .append("boxWeight", getBoxWeight())
+            .append("tubeColor", getTubeColor())
+            .append("comPort", getComPort())
+            .append("printFormat", getPrintFormat())
+            .append("packagingType", getPackagingType())
+            .append("storageLocation", getStorageLocation())
+            .append("warehouseregionId", getWarehouseregionId())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createById", getCreateById())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .append("warehousingTime", getWarehousingTime())
+            .append("depositor", getDepositor())
+            .append("warehouseId", getWarehouseId())
+            .toString();
+    }
+}

+ 432 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductWarehousingRecord.java

@@ -0,0 +1,432 @@
+package com.zkqy.business.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 成品入库记录对象 product_warehousing_record
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public class ProductWarehousingRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 码单号 */
+    @Excel(name = "码单号")
+    private String qrCode;
+
+    /** 码单唯一标识 */
+    @Excel(name = "码单唯一标识")
+    private String qrCodeId;
+
+    /** 批号 */
+    @Excel(name = "批号")
+    private String lotNum;
+
+    /** 货品编号 */
+    @Excel(name = "货品编号")
+    private Long productId;
+
+    /** 等级 */
+    @Excel(name = "等级")
+    private String levels;
+
+    /** 筒数 */
+    @Excel(name = "筒数")
+    private Integer canisterNum;
+
+    /** 箱数 */
+    @Excel(name = "箱数")
+    private Integer boxNum;
+
+    /** 净重 */
+    @Excel(name = "净重")
+    private Double suttle;
+
+    /** 生产日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date productionDate;
+
+    /** 机台 */
+    @Excel(name = "机台")
+    private String machineTool;
+
+    /** 毛重 */
+    @Excel(name = "毛重")
+    private Double grossWeight;
+
+    /** 包装 */
+    @Excel(name = "包装")
+    private String packaging;
+
+    /** 班次 */
+    @Excel(name = "班次")
+    private String workShifts;
+
+    /** 外贸号 */
+    @Excel(name = "外贸号")
+    private String foreignTradeNumber;
+
+    /** 筒重 */
+    @Excel(name = "筒重")
+    private Double canisterWeight;
+
+    /** 箱重/车重 */
+    @Excel(name = "箱重/车重")
+    private Double boxWeight;
+
+    /** 管色 */
+    @Excel(name = "管色")
+    private String tubeColor;
+
+    /** 端口(usb端口号) */
+    @Excel(name = "端口", readConverterExp = "u=sb端口号")
+    private String comPort;
+
+    /** 打印格式(打印二维码格式) */
+    @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
+    private String printFormat;
+
+    /** 包装类型(暂未使用) */
+    @Excel(name = "包装类型", readConverterExp = "暂=未使用")
+    private String packagingType;
+
+    /** 库位(暂未使用) */
+    @Excel(name = "库位", readConverterExp = "暂=未使用")
+    private String storageLocation;
+
+    /** 区域编号(暂未使用) */
+    @Excel(name = "区域编号", readConverterExp = "暂=未使用")
+    private Long warehouseregionId;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者编号 */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 入库时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date warehousingTime;
+
+    /** 入库人 */
+    @Excel(name = "入库人")
+    private String depositor;
+
+    /** 仓库编号 */
+    private Long warehouseId;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setQrCode(String qrCode) 
+    {
+        this.qrCode = qrCode;
+    }
+
+    public String getQrCode() 
+    {
+        return qrCode;
+    }
+    public void setQrCodeId(String qrCodeId) 
+    {
+        this.qrCodeId = qrCodeId;
+    }
+
+    public String getQrCodeId() 
+    {
+        return qrCodeId;
+    }
+    public void setLotNum(String lotNum) 
+    {
+        this.lotNum = lotNum;
+    }
+
+    public String getLotNum() 
+    {
+        return lotNum;
+    }
+    public void setProductId(Long productId) 
+    {
+        this.productId = productId;
+    }
+
+    public Long getProductId() 
+    {
+        return productId;
+    }
+    public void setLevels(String levels) 
+    {
+        this.levels = levels;
+    }
+
+    public String getLevels() 
+    {
+        return levels;
+    }
+    public void setCanisterNum(Integer canisterNum)
+    {
+        this.canisterNum = canisterNum;
+    }
+
+    public Integer getCanisterNum()
+    {
+        return canisterNum;
+    }
+    public void setBoxNum(Integer boxNum)
+    {
+        this.boxNum = boxNum;
+    }
+
+    public Integer getBoxNum()
+    {
+        return boxNum;
+    }
+    public void setSuttle(Double suttle)
+    {
+        this.suttle = suttle;
+    }
+
+    public Double getSuttle()
+    {
+        return suttle;
+    }
+    public void setProductionDate(Date productionDate) 
+    {
+        this.productionDate = productionDate;
+    }
+
+    public Date getProductionDate() 
+    {
+        return productionDate;
+    }
+    public void setMachineTool(String machineTool) 
+    {
+        this.machineTool = machineTool;
+    }
+
+    public String getMachineTool() 
+    {
+        return machineTool;
+    }
+    public void setGrossWeight(Double grossWeight)
+    {
+        this.grossWeight = grossWeight;
+    }
+
+    public Double getGrossWeight()
+    {
+        return grossWeight;
+    }
+    public void setPackaging(String packaging) 
+    {
+        this.packaging = packaging;
+    }
+
+    public String getPackaging() 
+    {
+        return packaging;
+    }
+    public void setWorkShifts(String workShifts) 
+    {
+        this.workShifts = workShifts;
+    }
+
+    public String getWorkShifts() 
+    {
+        return workShifts;
+    }
+    public void setForeignTradeNumber(String foreignTradeNumber) 
+    {
+        this.foreignTradeNumber = foreignTradeNumber;
+    }
+
+    public String getForeignTradeNumber() 
+    {
+        return foreignTradeNumber;
+    }
+    public void setCanisterWeight(Double canisterWeight)
+    {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Double getCanisterWeight()
+    {
+        return canisterWeight;
+    }
+    public void setBoxWeight(Double boxWeight)
+    {
+        this.boxWeight = boxWeight;
+    }
+
+    public Double getBoxWeight()
+    {
+        return boxWeight;
+    }
+    public void setTubeColor(String tubeColor) 
+    {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getTubeColor() 
+    {
+        return tubeColor;
+    }
+    public void setComPort(String comPort) 
+    {
+        this.comPort = comPort;
+    }
+
+    public String getComPort() 
+    {
+        return comPort;
+    }
+    public void setPrintFormat(String printFormat) 
+    {
+        this.printFormat = printFormat;
+    }
+
+    public String getPrintFormat() 
+    {
+        return printFormat;
+    }
+    public void setPackagingType(String packagingType) 
+    {
+        this.packagingType = packagingType;
+    }
+
+    public String getPackagingType() 
+    {
+        return packagingType;
+    }
+    public void setStorageLocation(String storageLocation) 
+    {
+        this.storageLocation = storageLocation;
+    }
+
+    public String getStorageLocation() 
+    {
+        return storageLocation;
+    }
+    public void setWarehouseregionId(Long warehouseregionId) 
+    {
+        this.warehouseregionId = warehouseregionId;
+    }
+
+    public Long getWarehouseregionId() 
+    {
+        return warehouseregionId;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setWarehousingTime(Date warehousingTime) 
+    {
+        this.warehousingTime = warehousingTime;
+    }
+
+    public Date getWarehousingTime() 
+    {
+        return warehousingTime;
+    }
+    public void setDepositor(String depositor) 
+    {
+        this.depositor = depositor;
+    }
+
+    public String getDepositor() 
+    {
+        return depositor;
+    }
+
+    public Long getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Long warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("qrCode", getQrCode())
+            .append("qrCodeId", getQrCodeId())
+            .append("lotNum", getLotNum())
+            .append("productId", getProductId())
+            .append("levels", getLevels())
+            .append("canisterNum", getCanisterNum())
+            .append("boxNum", getBoxNum())
+            .append("suttle", getSuttle())
+            .append("productionDate", getProductionDate())
+            .append("machineTool", getMachineTool())
+            .append("grossWeight", getGrossWeight())
+            .append("packaging", getPackaging())
+            .append("workShifts", getWorkShifts())
+            .append("foreignTradeNumber", getForeignTradeNumber())
+            .append("canisterWeight", getCanisterWeight())
+            .append("boxWeight", getBoxWeight())
+            .append("tubeColor", getTubeColor())
+            .append("comPort", getComPort())
+            .append("printFormat", getPrintFormat())
+            .append("packagingType", getPackagingType())
+            .append("storageLocation", getStorageLocation())
+            .append("warehouseregionId", getWarehouseregionId())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createById", getCreateById())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateById", getUpdateById())
+            .append("updateTime", getUpdateTime())
+            .append("warehousingTime", getWarehousingTime())
+            .append("depositor", getDepositor())
+            .toString();
+    }
+}

+ 191 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/Warehouse.java

@@ -0,0 +1,191 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 仓库对象 warehouse
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public class Warehouse extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 自增主键 */
+    private Long id;
+
+    /** 仓库编号*/
+    @Excel(name = "仓库编号 ")
+    private String warehouseNo;
+
+    /** 仓库名称 */
+    @Excel(name = "仓库名称")
+    private String warehouseName;
+
+    /** 仓库位置 */
+    @Excel(name = "仓库位置")
+    private String warehouseAddress;
+
+    /** 仓库类型(1.成品,2.原料) */
+    @Excel(name = "仓库类型", readConverterExp = "1=.成品,2.原料")
+    private String warehouseType;
+
+    /** 仓库类型名称 */
+    @Excel(name = "仓库类型名称")
+    private String warehouseTypeName;
+
+    /** 状态*/
+    @Excel(name = "状态")
+    private String state;
+
+    /** 创建者id */
+    private Long createById;
+
+    /** 更新者id */
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 任务编码 */
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setWarehouseNo(String warehouseNo) 
+    {
+        this.warehouseNo = warehouseNo;
+    }
+
+    public String getWarehouseNo() 
+    {
+        return warehouseNo;
+    }
+    public void setWarehouseName(String warehouseName) 
+    {
+        this.warehouseName = warehouseName;
+    }
+
+    public String getWarehouseName() 
+    {
+        return warehouseName;
+    }
+    public void setWarehouseAddress(String warehouseAddress) 
+    {
+        this.warehouseAddress = warehouseAddress;
+    }
+
+    public String getWarehouseAddress() 
+    {
+        return warehouseAddress;
+    }
+    public void setWarehouseType(String warehouseType) 
+    {
+        this.warehouseType = warehouseType;
+    }
+
+    public String getWarehouseType() 
+    {
+        return warehouseType;
+    }
+    public void setWarehouseTypeName(String warehouseTypeName) 
+    {
+        this.warehouseTypeName = warehouseTypeName;
+    }
+
+    public String getWarehouseTypeName() 
+    {
+        return warehouseTypeName;
+    }
+    public void setState(String state) 
+    {
+        this.state = state;
+    }
+
+    public String getState() 
+    {
+        return state;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("warehouseNo", getWarehouseNo())
+            .append("warehouseName", getWarehouseName())
+            .append("warehouseAddress", getWarehouseAddress())
+            .append("warehouseType", getWarehouseType())
+            .append("warehouseTypeName", getWarehouseTypeName())
+            .append("state", getState())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 507 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java

@@ -0,0 +1,507 @@
+package com.zkqy.business.domain.vo;
+
+import com.zkqy.business.domain.ProductCodeListInfo;
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 产品码单对象 product_code_list
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public class ProductCodeListVO extends BaseEntity
+{
+    /** 编号 */
+    private Long id;
+
+    /** 码单号 */
+    private String qrCode;
+
+    /** 码单唯一标识 */
+    private String qrCodeId;
+
+    /** 批号 */
+    private String lotNum;
+
+    /** 货品编号 */
+    private Long productId;
+
+    /** 等级 */
+    private String levels;
+
+    /** 筒数 */
+    private Integer canisterNum;
+
+    /** 箱数 */
+    private Integer boxNum;
+
+    /** 净重 */
+    private Double suttle;
+
+    /** 生产日期 */
+    private Date productionDate;
+
+    /** 机台 */
+    private String machineTool;
+
+    /** 毛重 */
+    private Double grossWeight;
+
+    /** 包装 */
+    private String packaging;
+
+    /** 班次 */
+    private String workShifts;
+
+    /** 外贸号 */
+    private String foreignTradeNumber;
+
+    /** 筒重 */
+    private Double canisterWeight;
+
+    /** 箱重/车重 */
+    private Double boxWeight;
+
+    /** 管色 */
+    private String tubeColor;
+
+    /** 端口(usb端口号) */
+    private String comPort;
+
+    /** 打印格式(打印二维码格式) */
+    private String printFormat;
+
+    /** 包装类型(暂未使用) */
+    private String packagingType;
+
+    /** 库位(暂未使用) */
+    private String storageLocation;
+
+    /** 区域编号(暂未使用) */
+    private Long warehouseregionId;
+
+    /** 删除标志(0:否;2:是) */
+    private String delFlag;
+
+    /** 创建者编号 */
+    private Long createById;
+
+    /** 更新者编号 */
+    private Long updateById;
+
+    /** 品名 */
+    private String productName;
+
+    /** 规格 */
+    private String productSpecifications;
+
+    /** 色泽 */
+    private String productColor;
+
+    /** 捻向 */
+    private String directionOfTwist;
+
+    /** 箱数 */
+//    private Integer cartonNumber;
+
+    /** 码单详情 */
+    private List<ProductCodeListInfo> productCodeListInfoList;
+
+    /** 备注 */
+    private String remark;
+
+    /** 合计筒数 */
+    private Integer totalCanisterNum;
+
+    /** 合计箱数 */
+    private Integer totalBoxNum;
+
+    /** 合计净重 */
+    private Double totalSuttle;
+
+    /** 合计毛重 */
+    private Double totalGrossWeight;
+
+    /** 仓库编号 */
+    private Long warehouseId;
+
+    /** 入库人 */
+    private String depositor;
+
+    /** 入库时间 */
+    private Date warehousingTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getQrCode() {
+        return qrCode;
+    }
+
+    public void setQrCode(String qrCode) {
+        this.qrCode = qrCode;
+    }
+
+    public String getQrCodeId() {
+        return qrCodeId;
+    }
+
+    public void setQrCodeId(String qrCodeId) {
+        this.qrCodeId = qrCodeId;
+    }
+
+    public String getLotNum() {
+        return lotNum;
+    }
+
+    public void setLotNum(String lotNum) {
+        this.lotNum = lotNum;
+    }
+
+    public Long getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Long productId) {
+        this.productId = productId;
+    }
+
+    public String getLevels() {
+        return levels;
+    }
+
+    public void setLevels(String levels) {
+        this.levels = levels;
+    }
+
+    public Integer getCanisterNum() {
+        return canisterNum;
+    }
+
+    public void setCanisterNum(Integer canisterNum) {
+        this.canisterNum = canisterNum;
+    }
+
+    public Integer getBoxNum() {
+        return boxNum;
+    }
+
+    public void setBoxNum(Integer boxNum) {
+        this.boxNum = boxNum;
+    }
+
+    public Double getSuttle() {
+        return suttle;
+    }
+
+    public void setSuttle(Double suttle) {
+        this.suttle = suttle;
+    }
+
+    public Date getProductionDate() {
+        return productionDate;
+    }
+
+    public void setProductionDate(Date productionDate) {
+        this.productionDate = productionDate;
+    }
+
+    public String getMachineTool() {
+        return machineTool;
+    }
+
+    public void setMachineTool(String machineTool) {
+        this.machineTool = machineTool;
+    }
+
+    public Double getGrossWeight() {
+        return grossWeight;
+    }
+
+    public void setGrossWeight(Double grossWeight) {
+        this.grossWeight = grossWeight;
+    }
+
+    public String getPackaging() {
+        return packaging;
+    }
+
+    public void setPackaging(String packaging) {
+        this.packaging = packaging;
+    }
+
+    public String getWorkShifts() {
+        return workShifts;
+    }
+
+    public void setWorkShifts(String workShifts) {
+        this.workShifts = workShifts;
+    }
+
+    public String getForeignTradeNumber() {
+        return foreignTradeNumber;
+    }
+
+    public void setForeignTradeNumber(String foreignTradeNumber) {
+        this.foreignTradeNumber = foreignTradeNumber;
+    }
+
+    public Double getCanisterWeight() {
+        return canisterWeight;
+    }
+
+    public void setCanisterWeight(Double canisterWeight) {
+        this.canisterWeight = canisterWeight;
+    }
+
+    public Double getBoxWeight() {
+        return boxWeight;
+    }
+
+    public void setBoxWeight(Double boxWeight) {
+        this.boxWeight = boxWeight;
+    }
+
+    public String getTubeColor() {
+        return tubeColor;
+    }
+
+    public void setTubeColor(String tubeColor) {
+        this.tubeColor = tubeColor;
+    }
+
+    public String getComPort() {
+        return comPort;
+    }
+
+    public void setComPort(String comPort) {
+        this.comPort = comPort;
+    }
+
+    public String getPrintFormat() {
+        return printFormat;
+    }
+
+    public void setPrintFormat(String printFormat) {
+        this.printFormat = printFormat;
+    }
+
+    public String getPackagingType() {
+        return packagingType;
+    }
+
+    public void setPackagingType(String packagingType) {
+        this.packagingType = packagingType;
+    }
+
+    public String getStorageLocation() {
+        return storageLocation;
+    }
+
+    public void setStorageLocation(String storageLocation) {
+        this.storageLocation = storageLocation;
+    }
+
+    public Long getWarehouseregionId() {
+        return warehouseregionId;
+    }
+
+    public void setWarehouseregionId(Long warehouseregionId) {
+        this.warehouseregionId = warehouseregionId;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public Long getCreateById() {
+        return createById;
+    }
+
+    @Override
+    public void setCreateById(Long createById) {
+        this.createById = createById;
+    }
+
+    @Override
+    public Long getUpdateById() {
+        return updateById;
+    }
+
+    @Override
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getProductSpecifications() {
+        return productSpecifications;
+    }
+
+    public void setProductSpecifications(String productSpecifications) {
+        this.productSpecifications = productSpecifications;
+    }
+
+    public String getProductColor() {
+        return productColor;
+    }
+
+    public void setProductColor(String productColor) {
+        this.productColor = productColor;
+    }
+
+    public String getDirectionOfTwist() {
+        return directionOfTwist;
+    }
+
+    public void setDirectionOfTwist(String directionOfTwist) {
+        this.directionOfTwist = directionOfTwist;
+    }
+
+//    public Integer getCartonNumber() {
+//        return cartonNumber;
+//    }
+//
+//    public void setCartonNumber(Integer cartonNumber) {
+//        this.cartonNumber = cartonNumber;
+//    }
+
+    public List<ProductCodeListInfo> getProductCodeListInfoList() {
+        return productCodeListInfoList;
+    }
+
+    public void setProductCodeListInfoList(List<ProductCodeListInfo> productCodeListInfoList) {
+        this.productCodeListInfoList = productCodeListInfoList;
+    }
+
+    @Override
+    public String getRemark() {
+        return remark;
+    }
+
+    @Override
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Integer getTotalCanisterNum() {
+        return totalCanisterNum;
+    }
+
+    public void setTotalCanisterNum(Integer totalCanisterNum) {
+        this.totalCanisterNum = totalCanisterNum;
+    }
+
+    public Integer getTotalBoxNum() {
+        return totalBoxNum;
+    }
+
+    public void setTotalBoxNum(Integer totalBoxNum) {
+        this.totalBoxNum = totalBoxNum;
+    }
+
+    public Double getTotalSuttle() {
+        return totalSuttle;
+    }
+
+    public void setTotalSuttle(Double totalSuttle) {
+        this.totalSuttle = totalSuttle;
+    }
+
+    public Double getTotalGrossWeight() {
+        return totalGrossWeight;
+    }
+
+    public void setTotalGrossWeight(Double totalGrossWeight) {
+        this.totalGrossWeight = totalGrossWeight;
+    }
+
+    public Long getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Long warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getDepositor() {
+        return depositor;
+    }
+
+    public void setDepositor(String depositor) {
+        this.depositor = depositor;
+    }
+
+    public Date getWarehousingTime() {
+        return warehousingTime;
+    }
+
+    public void setWarehousingTime(Date warehousingTime) {
+        this.warehousingTime = warehousingTime;
+    }
+
+    @Override
+    public String toString() {
+        return "ProductCodeListVO{" +
+                "id=" + id +
+                ", qrCode='" + qrCode + '\'' +
+                ", qrCodeId='" + qrCodeId + '\'' +
+                ", lotNum='" + lotNum + '\'' +
+                ", productId=" + productId +
+                ", levels='" + levels + '\'' +
+                ", canisterNum=" + canisterNum +
+                ", boxNum=" + boxNum +
+                ", suttle=" + suttle +
+                ", productionDate=" + productionDate +
+                ", machineTool='" + machineTool + '\'' +
+                ", grossWeight=" + grossWeight +
+                ", packaging='" + packaging + '\'' +
+                ", workShifts='" + workShifts + '\'' +
+                ", foreignTradeNumber='" + foreignTradeNumber + '\'' +
+                ", canisterWeight=" + canisterWeight +
+                ", boxWeight=" + boxWeight +
+                ", tubeColor='" + tubeColor + '\'' +
+                ", comPort='" + comPort + '\'' +
+                ", printFormat='" + printFormat + '\'' +
+                ", packagingType='" + packagingType + '\'' +
+                ", storageLocation='" + storageLocation + '\'' +
+                ", warehouseregionId=" + warehouseregionId +
+                ", delFlag='" + delFlag + '\'' +
+                ", createById=" + createById +
+                ", updateById=" + updateById +
+                ", productName='" + productName + '\'' +
+                ", productSpecifications='" + productSpecifications + '\'' +
+                ", productColor='" + productColor + '\'' +
+                ", directionOfTwist='" + directionOfTwist + '\'' +
+                ", productCodeListInfoList=" + productCodeListInfoList +
+                ", remark='" + remark + '\'' +
+                ", totalCanisterNum=" + totalCanisterNum +
+                ", totalBoxNum=" + totalBoxNum +
+                ", totalSuttle=" + totalSuttle +
+                ", totalGrossWeight=" + totalGrossWeight +
+                '}';
+    }
+}

+ 68 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListInfoMapper.java

@@ -0,0 +1,68 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductCodeListInfo;
+
+/**
+ * 产品码单详情Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-07
+ */
+public interface ProductCodeListInfoMapper 
+{
+    /**
+     * 查询产品码单详情
+     * 
+     * @param id 产品码单详情主键
+     * @return 产品码单详情
+     */
+    public ProductCodeListInfo selectProductCodeListInfoById(Long id);
+
+    /**
+     * 查询产品码单详情列表
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 产品码单详情集合
+     */
+    public List<ProductCodeListInfo> selectProductCodeListInfoList(ProductCodeListInfo productCodeListInfo);
+
+    /**
+     * 新增产品码单详情
+     * 
+     * @param productCodeListInfoList 产品码单详情
+     * @return 结果
+     */
+    int insertProductCodeListInfo(List<ProductCodeListInfo> productCodeListInfoList);
+
+    /**
+     * 修改产品码单详情
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 结果
+     */
+    public int updateProductCodeListInfo(ProductCodeListInfo productCodeListInfo);
+
+    /**
+     * 删除产品码单详情
+     * 
+     * @param id 产品码单详情主键
+     * @return 结果
+     */
+    public int deleteProductCodeListInfoById(Long id);
+
+    /**
+     * 批量删除产品码单详情
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeListInfoByIds(List<Long> ids);
+
+    /**
+     * 查询产品码单详情编号
+     * @param codeListId
+     * @return
+     */
+    List<Long> selectProductCodeListInfoIdByCodeListId(Long codeListId);
+}

+ 75 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListMapper.java

@@ -0,0 +1,75 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductCodeList;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+
+/**
+ * 产品码单Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public interface ProductCodeListMapper 
+{
+    /**
+     * 查询产品码单
+     * 
+     * @param id 产品码单主键
+     * @return 产品码单
+     */
+    public ProductCodeList selectProductCodeListById(Long id);
+
+    /**
+     * 查询产品码单列表
+     * 
+     * @param vo 产品码单
+     * @return 产品码单集合
+     */
+    public List<ProductCodeListVO> selectProductCodeListList(ProductCodeListVO vo);
+
+    /**
+     * 新增产品码单
+     * 
+     * @param productCodeList 产品码单
+     * @return 结果
+     */
+    public int insertProductCodeList(ProductCodeList productCodeList);
+
+    /**
+     * 修改产品码单
+     * 
+     * @param productCodeList 产品码单
+     * @return 结果
+     */
+    public int updateProductCodeList(ProductCodeList productCodeList);
+
+    /**
+     * 删除产品码单
+     * 
+     * @param id 产品码单主键
+     * @return 结果
+     */
+    public int deleteProductCodeListById(Long id);
+
+    /**
+     * 批量删除产品码单
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeListByIds(Long[] ids);
+
+    /**
+     * 查询生产完成的产品
+     */
+    List<ProductCodeListVO> selectFinishedProduct();
+
+    /**
+     * 查询最大码单号
+     */
+    String selectMaxCodeList();
+
+
+
+}

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductCode;
+
+/**
+ * 产品编码Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-02
+ */
+public interface ProductCodeMapper 
+{
+    /**
+     * 查询产品编码
+     * 
+     * @param id 产品编码主键
+     * @return 产品编码
+     */
+    public ProductCode selectProductCodeById(Long id);
+
+    /**
+     * 查询产品编码列表
+     * 
+     * @param productCode 产品编码
+     * @return 产品编码集合
+     */
+    public List<ProductCode> selectProductCodeList(ProductCode productCode);
+
+    /**
+     * 新增产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    public int insertProductCode(ProductCode productCode);
+
+    /**
+     * 修改产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    public int updateProductCode(ProductCode productCode);
+
+    /**
+     * 删除产品编码
+     * 
+     * @param id 产品编码主键
+     * @return 结果
+     */
+    public int deleteProductCodeById(Long id);
+
+    /**
+     * 批量删除产品编码
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeByIds(Long[] ids);
+}

+ 69 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductInventoryMapper.java

@@ -0,0 +1,69 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductInventory;
+
+/**
+ * 产品库存Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface ProductInventoryMapper 
+{
+    /**
+     * 查询产品库存
+     * 
+     * @param id 产品库存主键
+     * @return 产品库存
+     */
+    public ProductInventory selectProductInventoryById(Long id);
+
+    /**
+     * 查询产品库存列表
+     * 
+     * @param productInventory 产品库存
+     * @return 产品库存集合
+     */
+    public List<ProductInventory> selectProductInventoryList(ProductInventory productInventory);
+
+    /**
+     * 新增产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    public int insertProductInventory(ProductInventory productInventory);
+
+    /**
+     * 修改产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    public int updateProductInventory(ProductInventory productInventory);
+
+    /**
+     * 删除产品库存
+     * 
+     * @param id 产品库存主键
+     * @return 结果
+     */
+    public int deleteProductInventoryById(Long id);
+
+    /**
+     * 批量删除产品库存
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductInventoryByIds(Long[] ids);
+
+    /**
+     * 根据码单号查询库存
+     * @param qrCode
+     * @return
+     */
+    ProductInventory selectProductInventoryByQrCode(String qrCode);
+
+}

+ 77 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java

@@ -0,0 +1,77 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductOutboundRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 成品出库记录Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface ProductOutboundRecordMapper 
+{
+    /**
+     * 查询成品出库记录
+     * 
+     * @param id 成品出库记录主键
+     * @return 成品出库记录
+     */
+    public ProductOutboundRecord selectProductOutboundRecordById(Long id);
+
+    /**
+     * 查询成品出库记录列表
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 成品出库记录集合
+     */
+    public List<ProductOutboundRecord> selectProductOutboundRecordList(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 新增成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    public int insertProductOutboundRecord(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 修改成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    public int updateProductOutboundRecord(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 删除成品出库记录
+     * 
+     * @param id 成品出库记录主键
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordById(Long id);
+
+    /**
+     * 批量删除成品出库记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordByIds(Long[] ids);
+
+    /**
+     * 查询出库记录日志列表
+     * @param vo
+     * @return
+     */
+    List<ProductCodeListVO> selectList(ProductCodeListVO vo);
+
+    /**
+     * 查询是否已出库
+     * @param
+     * @return
+     */
+    ProductOutboundRecord selectProductOutboundRecordWhetherExist(@Param("qrCode") String qrCode, @Param("qrCodeId") String qrCodeId);
+}

+ 80 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductWarehousingRecordMapper.java

@@ -0,0 +1,80 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 成品入库记录Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface ProductWarehousingRecordMapper 
+{
+    /**
+     * 查询成品入库记录
+     * 
+     * @param id 成品入库记录主键
+     * @return 成品入库记录
+     */
+    public ProductWarehousingRecord selectProductWarehousingRecordById(Long id);
+
+    /**
+     * 查询成品入库记录列表
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 成品入库记录集合
+     */
+    public List<ProductWarehousingRecord> selectProductWarehousingRecordList(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 新增成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    public int insertProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 修改成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    public int updateProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 删除成品入库记录
+     * 
+     * @param id 成品入库记录主键
+     * @return 结果
+     */
+    public int deleteProductWarehousingRecordById(Long id);
+
+    /**
+     * 批量删除成品入库记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProductWarehousingRecordByIds(Long[] ids);
+
+    /**
+     * 查询入库记录日志列表
+     * @param vo
+     * @return
+     */
+    List<ProductCodeListVO> selectList(ProductCodeListVO vo);
+
+    /**
+     * 查询码单是否入库
+     * @param qrCode
+     * @param qrCodeId
+     * @return
+     */
+    ProductWarehousingRecord selectProductWarehousingRecordWhetherExist(@Param("qrCode") String qrCode, @Param("qrCodeId") String qrCodeId);
+
+
+}

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/WarehouseMapper.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.Warehouse;
+
+/**
+ * 仓库Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface WarehouseMapper 
+{
+    /**
+     * 查询仓库
+     * 
+     * @param id 仓库主键
+     * @return 仓库
+     */
+    public Warehouse selectWarehouseById(Long id);
+
+    /**
+     * 查询仓库列表
+     * 
+     * @param warehouse 仓库
+     * @return 仓库集合
+     */
+    public List<Warehouse> selectWarehouseList(Warehouse warehouse);
+
+    /**
+     * 新增仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    public int insertWarehouse(Warehouse warehouse);
+
+    /**
+     * 修改仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    public int updateWarehouse(Warehouse warehouse);
+
+    /**
+     * 删除仓库
+     * 
+     * @param id 仓库主键
+     * @return 结果
+     */
+    public int deleteWarehouseById(Long id);
+
+    /**
+     * 批量删除仓库
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteWarehouseByIds(Long[] ids);
+}

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListInfoService.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductCodeListInfo;
+
+/**
+ * 产品码单详情Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-07
+ */
+public interface IProductCodeListInfoService 
+{
+    /**
+     * 查询产品码单详情
+     * 
+     * @param id 产品码单详情主键
+     * @return 产品码单详情
+     */
+    public ProductCodeListInfo selectProductCodeListInfoById(Long id);
+
+    /**
+     * 查询产品码单详情列表
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 产品码单详情集合
+     */
+    public List<ProductCodeListInfo> selectProductCodeListInfoList(ProductCodeListInfo productCodeListInfo);
+
+    /**
+     * 新增产品码单详情
+     * 
+     * @param productCodeListInfoList 产品码单详情
+     * @return 结果
+     */
+    public int insertProductCodeListInfo(List<ProductCodeListInfo> productCodeListInfoList);
+
+    /**
+     * 修改产品码单详情
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 结果
+     */
+    public int updateProductCodeListInfo(ProductCodeListInfo productCodeListInfo);
+
+    /**
+     * 批量删除产品码单详情
+     * 
+     * @param ids 需要删除的产品码单详情主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeListInfoByIds(List<Long> ids);
+
+    /**
+     * 删除产品码单详情信息
+     * 
+     * @param id 产品码单详情主键
+     * @return 结果
+     */
+    public int deleteProductCodeListInfoById(Long id);
+}

+ 74 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListService.java

@@ -0,0 +1,74 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductCodeList;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+
+/**
+ * 产品码单Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+public interface IProductCodeListService 
+{
+    /**
+     * 查询产品码单
+     * 
+     * @param id 产品码单主键
+     * @return 产品码单
+     */
+    public ProductCodeListVO selectProductCodeListById(Long id);
+
+    /**
+     * 查询产品码单列表
+     * 
+     * @param vo 产品码单
+     * @return 产品码单集合
+     */
+    public List<ProductCodeListVO> selectProductCodeListList(ProductCodeListVO vo);
+
+    /**
+     * 新增产品码单
+     * 
+     * @param vo 产品码单
+     * @return 结果
+     */
+    public Long insertProductCodeList(ProductCodeListVO vo);
+
+    /**
+     * 修改产品码单
+     * 
+     * @param vo 产品码单
+     * @return 结果
+     */
+    public int updateProductCodeList(ProductCodeListVO vo);
+
+    /**
+     * 批量删除产品码单
+     * 
+     * @param ids 需要删除的产品码单主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeListByIds(Long[] ids);
+
+    /**
+     * 删除产品码单信息
+     * 
+     * @param id 产品码单主键
+     * @return 结果
+     */
+    public int deleteProductCodeListById(Long id);
+
+    /**
+     * 查询生产完成的产品
+     */
+    List<ProductCodeListVO> selectFinishedProduct();
+
+    /**
+     * 码单号生成
+     */
+    String selectMaxCodeList();
+
+
+}

+ 69 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeService.java

@@ -0,0 +1,69 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.zkqy.business.domain.ProductCode;
+
+/**
+ * 产品编码Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-02
+ */
+public interface IProductCodeService 
+{
+    /**
+     * 查询产品编码
+     * 
+     * @param id 产品编码主键
+     * @return 产品编码
+     */
+    public ProductCode selectProductCodeById(Long id);
+
+    /**
+     * 查询产品编码列表
+     * 
+     * @param productCode 产品编码
+     * @return 产品编码集合
+     */
+    public List<ProductCode> selectProductCodeList(ProductCode productCode);
+
+    /**
+     * 新增产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    public int insertProductCode(ProductCode productCode);
+
+    /**
+     * 修改产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    public int updateProductCode(ProductCode productCode);
+
+    /**
+     * 批量删除产品编码
+     * 
+     * @param ids 需要删除的产品编码主键集合
+     * @return 结果
+     */
+    public int deleteProductCodeByIds(Long[] ids);
+
+    /**
+     * 删除产品编码信息
+     * 
+     * @param id 产品编码主键
+     * @return 结果
+     */
+    public int deleteProductCodeById(Long id);
+
+    /**
+     * 码单管理下拉框所需数据
+     */
+    Map<String,List<ProductCode>> dropDownData();
+
+}

+ 73 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java

@@ -0,0 +1,73 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductInventory;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 产品库存Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface IProductInventoryService 
+{
+    /**
+     * 查询产品库存
+     * 
+     * @param id 产品库存主键
+     * @return 产品库存
+     */
+    public ProductInventory selectProductInventoryById(Long id);
+
+    /**
+     * 查询产品库存列表
+     * 
+     * @param productInventory 产品库存
+     * @return 产品库存集合
+     */
+    public List<ProductInventory> selectProductInventoryList(ProductInventory productInventory);
+
+    /**
+     * 新增产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    public int insertProductInventory(ProductInventory productInventory);
+
+    /**
+     * 修改产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    public int updateProductInventory(ProductInventory productInventory);
+
+    /**
+     * 批量删除产品库存
+     * 
+     * @param ids 需要删除的产品库存主键集合
+     * @return 结果
+     */
+    public int deleteProductInventoryByIds(Long[] ids);
+
+    /**
+     * 删除产品库存信息
+     * 
+     * @param id 产品库存主键
+     * @return 结果
+     */
+    public int deleteProductInventoryById(Long id);
+
+    /**
+     * 成品入库
+     */
+    void productStorage(List<ProductCodeListVO> productCodeListVOList);
+
+    /**
+     * 成品出库
+     */
+    AjaxResult productOutStorage(List<ProductCodeListVO> productCodeListVOList);
+}

+ 70 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java

@@ -0,0 +1,70 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductOutboundRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+
+/**
+ * 成品出库记录Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface IProductOutboundRecordService 
+{
+    /**
+     * 查询成品出库记录
+     * 
+     * @param id 成品出库记录主键
+     * @return 成品出库记录
+     */
+    public ProductOutboundRecord selectProductOutboundRecordById(Long id);
+
+    /**
+     * 查询成品出库记录列表
+     * 
+     * @param vo 成品出库记录
+     * @return 成品出库记录集合
+     */
+    public List<ProductCodeListVO> selectProductOutboundRecordList(ProductCodeListVO vo);
+
+    /**
+     * 新增成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    public int insertProductOutboundRecord(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 修改成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    public int updateProductOutboundRecord(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 批量删除成品出库记录
+     * 
+     * @param ids 需要删除的成品出库记录主键集合
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordByIds(Long[] ids);
+
+    /**
+     * 删除成品出库记录信息
+     * 
+     * @param id 成品出库记录主键
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordById(Long id);
+
+    /**
+     * 查询是否已入库
+     * @param qrCode
+     * @param qrCodeId
+     * @return
+     */
+    ProductOutboundRecord whetherStorage(String qrCode, String qrCodeId);
+}

+ 79 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductWarehousingRecordService.java

@@ -0,0 +1,79 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 成品入库记录Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface IProductWarehousingRecordService 
+{
+    /**
+     * 查询成品入库记录
+     * 
+     * @param id 成品入库记录主键
+     * @return 成品入库记录
+     */
+    public ProductWarehousingRecord selectProductWarehousingRecordById(Long id);
+
+    /**
+     * 查询成品入库记录列表
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 成品入库记录集合
+     */
+    public List<ProductWarehousingRecord> selectProductWarehousingRecordList(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 新增成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    public int insertProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 修改成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    public int updateProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord);
+
+    /**
+     * 批量删除成品入库记录
+     * 
+     * @param ids 需要删除的成品入库记录主键集合
+     * @return 结果
+     */
+    public int deleteProductWarehousingRecordByIds(Long[] ids);
+
+    /**
+     * 删除成品入库记录信息
+     * 
+     * @param id 成品入库记录主键
+     * @return 结果
+     */
+    public int deleteProductWarehousingRecordById(Long id);
+
+    /**
+     * 查询入库记录日志列表
+     * @param vo
+     * @return
+     */
+    List<ProductCodeListVO> selectList(ProductCodeListVO vo);
+
+    /**
+     * 查询码单是否入库
+     * @param qrCode
+     * @param qrCodeId
+     * @return
+     */
+    ProductWarehousingRecord selectProductWarehousingRecordWhetherExist(String qrCode,String qrCodeId);
+
+}

+ 61 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IWarehouseService.java

@@ -0,0 +1,61 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.Warehouse;
+
+/**
+ * 仓库Service接口
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+public interface IWarehouseService 
+{
+    /**
+     * 查询仓库
+     * 
+     * @param id 仓库主键
+     * @return 仓库
+     */
+    public Warehouse selectWarehouseById(Long id);
+
+    /**
+     * 查询仓库列表
+     * 
+     * @param warehouse 仓库
+     * @return 仓库集合
+     */
+    public List<Warehouse> selectWarehouseList(Warehouse warehouse);
+
+    /**
+     * 新增仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    public int insertWarehouse(Warehouse warehouse);
+
+    /**
+     * 修改仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    public int updateWarehouse(Warehouse warehouse);
+
+    /**
+     * 批量删除仓库
+     * 
+     * @param ids 需要删除的仓库主键集合
+     * @return 结果
+     */
+    public int deleteWarehouseByIds(Long[] ids);
+
+    /**
+     * 删除仓库信息
+     * 
+     * @param id 仓库主键
+     * @return 结果
+     */
+    public int deleteWarehouseById(Long id);
+}

+ 96 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListInfoServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductCodeListInfoMapper;
+import com.zkqy.business.domain.ProductCodeListInfo;
+import com.zkqy.business.service.IProductCodeListInfoService;
+
+/**
+ * 产品码单详情Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-07
+ */
+@Service
+public class ProductCodeListInfoServiceImpl implements IProductCodeListInfoService 
+{
+    @Autowired
+    private ProductCodeListInfoMapper productCodeListInfoMapper;
+
+    /**
+     * 查询产品码单详情
+     * 
+     * @param id 产品码单详情主键
+     * @return 产品码单详情
+     */
+    @Override
+    public ProductCodeListInfo selectProductCodeListInfoById(Long id)
+    {
+        return productCodeListInfoMapper.selectProductCodeListInfoById(id);
+    }
+
+    /**
+     * 查询产品码单详情列表
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 产品码单详情
+     */
+    @Override
+    public List<ProductCodeListInfo> selectProductCodeListInfoList(ProductCodeListInfo productCodeListInfo)
+    {
+        return productCodeListInfoMapper.selectProductCodeListInfoList(productCodeListInfo);
+    }
+
+    /**
+     * 新增产品码单详情
+     * 
+     * @param productCodeListInfoList 产品码单详情
+     * @return 结果
+     */
+    @Override
+    public int insertProductCodeListInfo(List<ProductCodeListInfo> productCodeListInfoList)
+    {
+//        productCodeListInfo.setCreateTime(DateUtils.getNowDate());
+        return productCodeListInfoMapper.insertProductCodeListInfo(productCodeListInfoList);
+    }
+
+    /**
+     * 修改产品码单详情
+     * 
+     * @param productCodeListInfo 产品码单详情
+     * @return 结果
+     */
+    @Override
+    public int updateProductCodeListInfo(ProductCodeListInfo productCodeListInfo)
+    {
+        productCodeListInfo.setUpdateTime(DateUtils.getNowDate());
+        return productCodeListInfoMapper.updateProductCodeListInfo(productCodeListInfo);
+    }
+
+    /**
+     * 批量删除产品码单详情
+     * 
+     * @param ids 需要删除的产品码单详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeListInfoByIds(List<Long> ids)
+    {
+        return productCodeListInfoMapper.deleteProductCodeListInfoByIds(ids);
+    }
+
+    /**
+     * 删除产品码单详情信息
+     * 
+     * @param id 产品码单详情主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeListInfoById(Long id)
+    {
+        return productCodeListInfoMapper.deleteProductCodeListInfoById(id);
+    }
+}

+ 225 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java

@@ -0,0 +1,225 @@
+package com.zkqy.business.service.impl;
+
+import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.mapper.ProductCodeListInfoMapper;
+import com.zkqy.business.mapper.ProductWarehousingRecordMapper;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductCodeListMapper;
+import com.zkqy.business.domain.ProductCodeList;
+import com.zkqy.business.service.IProductCodeListService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 产品码单Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-01
+ */
+@Service
+public class ProductCodeListServiceImpl implements IProductCodeListService 
+{
+    @Autowired
+    private ProductCodeListMapper productCodeListMapper;
+
+    @Autowired
+    private ProductCodeListInfoMapper productCodeListInfoMapper;
+
+    @Autowired
+    private ProductWarehousingRecordMapper productWarehousingRecordMapper;
+
+
+    /**
+     * 查询产品码单
+     * 
+     * @param id 产品码单主键
+     * @return 产品码单
+     */
+    @Override
+    public ProductCodeListVO selectProductCodeListById(Long id)
+    {
+        ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(id);
+        ProductCodeListVO productCodeListVO = new ProductCodeListVO();
+        BeanUtils.copyProperties(productCodeList,productCodeListVO);
+//        ProductCodeListInfo productCodeListInfo = new ProductCodeListInfo();
+//        productCodeListInfo.setCodeListId(id);
+//        List<ProductCodeListInfo> productCodeListInfoList = productCodeListInfoMapper.selectProductCodeListInfoList(productCodeListInfo);
+//        productCodeListVO.setProductCodeListInfoList(productCodeListInfoList);
+        return productCodeListVO;
+    }
+
+    /**
+     * 查询产品码单列表
+     * 
+     * @param vo 产品码单
+     * @return 产品码单
+     */
+    @Override
+    public List<ProductCodeListVO> selectProductCodeListList(ProductCodeListVO vo)
+    {
+        return productCodeListMapper.selectProductCodeListList(vo);
+    }
+
+    /**
+     * 新增产品码单
+     * 
+     * @param vo 产品码单
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public Long insertProductCodeList(ProductCodeListVO vo)
+    {
+        System.err.println(vo.getId());
+        if(vo.getId() == null){
+            //新增产品码单数据
+            ProductCodeList productCodeList = new ProductCodeList();
+            BeanUtils.copyProperties(vo,productCodeList);
+            productCodeList.setCreateTime(DateUtils.getNowDate());
+            productCodeList.setCreateBy(SecurityUtils.getUsername());
+            productCodeList.setCreateById(SecurityUtils.getUserId());
+            productCodeList.setTotalBoxNum(1);
+            productCodeList.setTotalCanisterNum(vo.getCanisterNum());
+            productCodeList.setTotalSuttle(vo.getSuttle());
+            productCodeList.setTotalGrossWeight(vo.getGrossWeight());
+            productCodeListMapper.insertProductCodeList(productCodeList);
+            //新增产品码单详情
+//        vo.getProductCodeListInfoList().forEach(productCodeListInfo -> {
+//            productCodeListInfo.setCodeListId(productCodeList.getId());
+//            productCodeListInfo.setCreateTime(DateUtils.getNowDate());
+//            productCodeListInfo.setCreateBy(SecurityUtils.getUsername());
+//            productCodeListInfo.setCreateById(SecurityUtils.getUserId());
+//        });
+//        productCodeListInfoMapper.insertProductCodeListInfo(vo.getProductCodeListInfoList());
+            return productCodeList.getId();
+        }else {
+            //计算合计箱数、筒数、净重、毛重
+            ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
+            ProductCodeList editProductCodeList = new ProductCodeList();
+            editProductCodeList.setId(productCodeList.getId());
+
+            editProductCodeList.setTotalBoxNum(productCodeList.getTotalBoxNum() == null ? 1 : productCodeList.getTotalBoxNum() + 1);//箱数
+            editProductCodeList.setTotalCanisterNum(productCodeList.getTotalCanisterNum() == null ? vo.getCanisterNum() : productCodeList.getTotalCanisterNum() + vo.getCanisterNum());//筒数
+            Double suttle = productCodeList.getTotalSuttle() == null ? vo.getSuttle() : productCodeList.getTotalSuttle() + vo.getSuttle();
+            DecimalFormat df = new DecimalFormat("0.00");
+            String suttle1 = df.format(suttle);
+            editProductCodeList.setTotalSuttle(Double.parseDouble(suttle1));//净重
+            Double grossWeight = productCodeList.getTotalGrossWeight() == null ? vo.getGrossWeight() : productCodeList.getTotalGrossWeight() + vo.getGrossWeight();
+            String grossWeight1 = df.format(grossWeight);
+            editProductCodeList.setTotalGrossWeight(Double.parseDouble(grossWeight1));//毛重
+            productCodeListMapper.updateProductCodeList(editProductCodeList);
+
+            return vo.getId();
+        }
+    }
+
+    /**
+     * 修改产品码单
+     * 
+     * @param vo 产品码单
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int updateProductCodeList(ProductCodeListVO vo)
+    {
+
+        // 修改产品码单数据
+        ProductCodeList productCodeList = new ProductCodeList();
+        productCodeList.setUpdateTime(DateUtils.getNowDate());
+        productCodeList.setUpdateById(SecurityUtils.getUserId());
+        productCodeList.setUpdateBy(SecurityUtils.getUsername());
+        BeanUtils.copyProperties(vo,productCodeList);
+        // 修改产品码单详情
+//        LinkedList<ProductCodeListInfo> addProductCodeListInfoList = new LinkedList<>();
+//        LinkedList<ProductCodeListInfo> editProductCodeListInfoList = new LinkedList<>();
+//        Set<Long> ids = new LinkedHashSet<>();
+//
+//        vo.getProductCodeListInfoList().forEach(productCodeListInfo -> {
+//            if(productCodeListInfo.getId() == null){
+//                productCodeListInfo.setCodeListId(productCodeList.getId());
+//                productCodeListInfo.setCreateTime(DateUtils.getNowDate());
+//                productCodeListInfo.setCreateBy(SecurityUtils.getUsername());
+//                productCodeListInfo.setCreateById(SecurityUtils.getUserId());
+//                addProductCodeListInfoList.add(productCodeListInfo);
+//            }else{
+//                ids.add(productCodeListInfo.getId());
+//                productCodeListInfo.setUpdateTime(DateUtils.getNowDate());
+//                productCodeListInfo.setUpdateBy(SecurityUtils.getUsername());
+//                productCodeListInfo.setUpdateById(SecurityUtils.getUserId());
+//            }
+//
+//        });
+//        // 查询所有产品码单详情编号
+//        List<Long> productCodeListInfoIds = productCodeListInfoMapper.selectProductCodeListInfoIdByCodeListId(productCodeList.getId());
+//        productCodeListInfoIds.removeAll(ids);
+//        //删除产品码单详情
+//        if(productCodeListInfoIds.size() > 0){
+//            productCodeListInfoMapper.deleteProductCodeListInfoByIds(productCodeListInfoIds);
+//        }
+//        //新增产品码单详情
+//        if(addProductCodeListInfoList.size() > 0){
+//            productCodeListInfoMapper.insertProductCodeListInfo(addProductCodeListInfoList);
+//        }
+//        //修改产品码单详情
+//        if(editProductCodeListInfoList.size() > 0){
+//            editProductCodeListInfoList.forEach(productCodeListInfo -> {
+//                productCodeListInfoMapper.updateProductCodeListInfo(productCodeListInfo);
+//            });
+//        }
+        return productCodeListMapper.updateProductCodeList(productCodeList);
+    }
+
+    /**
+     * 批量删除产品码单
+     * 
+     * @param ids 需要删除的产品码单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeListByIds(Long[] ids)
+    {
+        return productCodeListMapper.deleteProductCodeListByIds(ids);
+    }
+
+    /**
+     * 删除产品码单信息
+     * 
+     * @param id 产品码单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeListById(Long id)
+    {
+        return productCodeListMapper.deleteProductCodeListById(id);
+    }
+
+    @Override
+    public List<ProductCodeListVO> selectFinishedProduct() {
+        return productCodeListMapper.selectFinishedProduct();
+    }
+
+    @Override
+    public String selectMaxCodeList() {
+        String maxCodeList = productCodeListMapper.selectMaxCodeList();
+        LocalDate now = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMdd");
+        String nowCodeList = now.format(formatter) + "00001";
+        if(StringUtils.isNotEmpty(maxCodeList) && Long.parseLong(maxCodeList) >= Long.parseLong(nowCodeList)){
+            return Long.parseLong(maxCodeList) + 1L + "";
+        }
+        return nowCodeList;
+    }
+
+}

+ 117 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeServiceImpl.java

@@ -0,0 +1,117 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductCodeMapper;
+import com.zkqy.business.domain.ProductCode;
+import com.zkqy.business.service.IProductCodeService;
+
+/**
+ * 产品编码Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-02
+ */
+@Service
+public class ProductCodeServiceImpl implements IProductCodeService 
+{
+    @Autowired
+    private ProductCodeMapper productCodeMapper;
+
+    /**
+     * 查询产品编码
+     * 
+     * @param id 产品编码主键
+     * @return 产品编码
+     */
+    @Override
+    public ProductCode selectProductCodeById(Long id)
+    {
+        return productCodeMapper.selectProductCodeById(id);
+    }
+
+    /**
+     * 查询产品编码列表
+     * 
+     * @param productCode 产品编码
+     * @return 产品编码
+     */
+    @Override
+    public List<ProductCode> selectProductCodeList(ProductCode productCode)
+    {
+        return productCodeMapper.selectProductCodeList(productCode);
+    }
+
+
+
+
+
+    /**
+     * 新增产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    @Override
+    public int insertProductCode(ProductCode productCode)
+    {
+        productCode.setCreateTime(DateUtils.getNowDate());
+        return productCodeMapper.insertProductCode(productCode);
+    }
+
+    /**
+     * 修改产品编码
+     * 
+     * @param productCode 产品编码
+     * @return 结果
+     */
+    @Override
+    public int updateProductCode(ProductCode productCode)
+    {
+        productCode.setUpdateTime(DateUtils.getNowDate());
+        return productCodeMapper.updateProductCode(productCode);
+    }
+
+    /**
+     * 批量删除产品编码
+     * 
+     * @param ids 需要删除的产品编码主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeByIds(Long[] ids)
+    {
+        return productCodeMapper.deleteProductCodeByIds(ids);
+    }
+
+    /**
+     * 删除产品编码信息
+     * 
+     * @param id 产品编码主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductCodeById(Long id)
+    {
+        return productCodeMapper.deleteProductCodeById(id);
+    }
+
+    @Override
+    public Map<String, List<ProductCode>> dropDownData() {
+        List<ProductCode> productCodes = productCodeMapper.selectProductCodeList(new ProductCode());
+        return productCodes.stream()
+                .filter(p -> "drum_weight".equals(p.getCodeType())
+                        || "level".equals(p.getCodeType())
+                        || "machine tool".equals(p.getCodeType())
+                || "work_shifts".equals(p.getCodeType())
+                || "box_weight".equals(p.getCodeType())
+                || "tube_color".equals(p.getCodeType()))
+                .collect(Collectors.groupingBy(ProductCode::getCodeType));
+
+    }
+}

+ 240 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -0,0 +1,240 @@
+package com.zkqy.business.service.impl;
+
+import java.text.DecimalFormat;
+import java.util.List;
+
+import com.zkqy.business.domain.ProductCodeList;
+import com.zkqy.business.domain.ProductOutboundRecord;
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.mapper.ProductCodeListMapper;
+import com.zkqy.business.mapper.ProductOutboundRecordMapper;
+import com.zkqy.business.mapper.ProductWarehousingRecordMapper;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductInventoryMapper;
+import com.zkqy.business.domain.ProductInventory;
+import com.zkqy.business.service.IProductInventoryService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 产品库存Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@Service
+public class ProductInventoryServiceImpl implements IProductInventoryService 
+{
+    @Autowired
+    private ProductInventoryMapper productInventoryMapper;
+
+    @Autowired
+    private ProductCodeListMapper productCodeListMapper;
+
+    @Autowired
+    private ProductWarehousingRecordMapper productWarehousingRecordMapper;
+
+    @Autowired
+    private ProductOutboundRecordMapper productOutboundRecordMapper;
+
+
+    /**
+     * 查询产品库存
+     * 
+     * @param id 产品库存主键
+     * @return 产品库存
+     */
+    @Override
+    public ProductInventory selectProductInventoryById(Long id)
+    {
+        return productInventoryMapper.selectProductInventoryById(id);
+    }
+
+    /**
+     * 查询产品库存列表
+     * 
+     * @param productInventory 产品库存
+     * @return 产品库存
+     */
+    @Override
+    public List<ProductInventory> selectProductInventoryList(ProductInventory productInventory)
+    {
+        return productInventoryMapper.selectProductInventoryList(productInventory);
+    }
+
+    /**
+     * 新增产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    @Override
+    public int insertProductInventory(ProductInventory productInventory)
+    {
+        productInventory.setCreateTime(DateUtils.getNowDate());
+        return productInventoryMapper.insertProductInventory(productInventory);
+    }
+
+    /**
+     * 修改产品库存
+     * 
+     * @param productInventory 产品库存
+     * @return 结果
+     */
+    @Override
+    public int updateProductInventory(ProductInventory productInventory)
+    {
+        productInventory.setUpdateTime(DateUtils.getNowDate());
+        return productInventoryMapper.updateProductInventory(productInventory);
+    }
+
+    /**
+     * 批量删除产品库存
+     * 
+     * @param ids 需要删除的产品库存主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductInventoryByIds(Long[] ids)
+    {
+        return productInventoryMapper.deleteProductInventoryByIds(ids);
+    }
+
+    /**
+     * 删除产品库存信息
+     * 
+     * @param id 产品库存主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductInventoryById(Long id)
+    {
+        return productInventoryMapper.deleteProductInventoryById(id);
+    }
+
+    @Override
+    @Transactional
+    public void productStorage(List<ProductCodeListVO> productCodeListVOList) {
+        for (ProductCodeListVO vo : productCodeListVOList){
+            // 日志
+            ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
+
+            ProductWarehousingRecord productWarehousingRecord = new ProductWarehousingRecord();
+            BeanUtils.copyProperties(productCodeList,productWarehousingRecord);
+
+            productWarehousingRecord.setQrCodeId(vo.getQrCodeId());
+            productWarehousingRecord.setCanisterNum(vo.getCanisterNum());//筒数
+            productWarehousingRecord.setSuttle(vo.getSuttle());//净重
+            productWarehousingRecord.setGrossWeight(vo.getGrossWeight());//毛重
+            productWarehousingRecord.setCreateBy(SecurityUtils.getUsername());
+            productWarehousingRecord.setCreateTime(DateUtils.getNowDate());
+            productWarehousingRecord.setCreateById(SecurityUtils.getUserId());
+            productWarehousingRecord.setDepositor(vo.getDepositor());
+            productWarehousingRecord.setWarehousingTime(vo.getWarehousingTime());
+            productWarehousingRecord.setWarehouseId(vo.getWarehouseId());
+            productWarehousingRecord.setRemark(productCodeList.getRemark());
+            productWarehousingRecordMapper.insertProductWarehousingRecord(productWarehousingRecord);
+
+            // 库存
+            //查询当前库存是否存在,如果存在则更新,如果不存在则新增
+            ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(vo.getQrCode());
+            if(productInventory != null){
+                //计算合计箱数、筒数、净重、毛重
+                ProductInventory editProductInventory = new ProductInventory();
+                editProductInventory.setId(productInventory.getId());
+                editProductInventory.setTotalCanisterNum( productInventory.getTotalCanisterNum() == null ? vo.getCanisterNum() : productInventory.getTotalCanisterNum() + vo.getCanisterNum());//合计筒数数
+                editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() + 1);//合计箱数
+                Double suttle = productInventory.getTotalSuttle() == null ? vo.getSuttle() : productInventory.getTotalSuttle() + vo.getSuttle();
+                DecimalFormat df = new DecimalFormat("0.00");
+                String suttle1 = df.format(suttle);
+                editProductInventory.setTotalSuttle(Double.parseDouble(suttle1));//合计净重
+
+                Double grossWeight = productInventory.getTotalGrossWeight() == null ? vo.getGrossWeight() : productInventory.getTotalGrossWeight() + vo.getGrossWeight();
+                String grossWeight1 = df.format(grossWeight);
+                editProductInventory.setTotalGrossWeight(Double.parseDouble(grossWeight1));//合计毛重
+                productInventoryMapper.updateProductInventory(editProductInventory);
+            }else {
+                ProductInventory addProductInventory = new ProductInventory();
+                BeanUtils.copyProperties(productCodeList,addProductInventory);
+                addProductInventory.setWarehouseId(vo.getWarehouseId());
+                addProductInventory.setTotalCanisterNum(vo.getCanisterNum());//合计筒数
+                addProductInventory.setTotalBoxNum(1);//合计箱数
+                addProductInventory.setTotalSuttle(vo.getSuttle());//合计净重
+                addProductInventory.setTotalGrossWeight(vo.getGrossWeight());//合计毛重
+
+                productInventoryMapper.insertProductInventory(addProductInventory);
+            }
+
+        }
+
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult productOutStorage(List<ProductCodeListVO> productCodeListVOList) {
+
+        for (ProductCodeListVO vo : productCodeListVOList){
+            //查看当前码单是否已经入库
+            // 出库日志
+            ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
+            ProductOutboundRecord productOutboundRecord = new ProductOutboundRecord();
+            BeanUtils.copyProperties(productCodeList,productOutboundRecord);
+            //二维码唯一标识
+            productOutboundRecord.setQrCodeId(vo.getQrCodeId());
+            productOutboundRecord.setCanisterNum(vo.getCanisterNum());//筒数
+            productOutboundRecord.setSuttle(vo.getSuttle());//净重
+            productOutboundRecord.setGrossWeight(vo.getGrossWeight());//毛重
+            productOutboundRecord.setDepositor(vo.getDepositor());//出库人
+            productOutboundRecord.setWarehouseId(vo.getWarehouseId());//仓库编号
+            productOutboundRecord.setWarehousingTime(vo.getWarehousingTime());//出库时间
+            productOutboundRecord.setCreateBy(SecurityUtils.getUsername());
+            productOutboundRecord.setCreateTime(DateUtils.getNowDate());
+            productOutboundRecord.setCreateById(SecurityUtils.getUserId());
+            productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+            //出库   减 箱数、筒数、净重、毛重,
+            //得到当前库存
+            ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(vo.getQrCode());
+            ProductInventory editProductInventory = new ProductInventory();
+            editProductInventory.setId(productInventory.getId());
+            //筒数
+            if(productInventory.getTotalCanisterNum() - vo.getCanisterNum() < 0){
+                return AjaxResult.error("当前库存筒数不足");
+            }else {
+                editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - vo.getCanisterNum());
+            }
+            //箱数
+            if(productInventory.getTotalBoxNum() - 1 < 0){
+                return AjaxResult.error("当前库存箱数不足");
+            }else {
+                editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
+            }
+            //净重
+            if(productInventory.getTotalSuttle() - vo.getSuttle() < 0){
+                return AjaxResult.error("当前库存净重不足");
+            }else {
+                editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - vo.getSuttle()));
+            }
+            //毛重
+            if (productInventory.getTotalGrossWeight() - vo.getGrossWeight() < 0){
+                return AjaxResult.error("当前库存毛重不足");
+            }else {
+                editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - vo.getGrossWeight()));
+            }
+            productInventoryMapper.updateProductInventory(editProductInventory);
+
+        }
+        return AjaxResult.success();
+    }
+
+    //保留两位小数
+    public Double handlingWeight(Double weight){
+        DecimalFormat df = new DecimalFormat("0.00");
+        return Double.parseDouble(df.format(weight));
+    }
+
+}

+ 103 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java

@@ -0,0 +1,103 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductOutboundRecordMapper;
+import com.zkqy.business.domain.ProductOutboundRecord;
+import com.zkqy.business.service.IProductOutboundRecordService;
+
+/**
+ * 成品出库记录Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@Service
+public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordService 
+{
+    @Autowired
+    private ProductOutboundRecordMapper productOutboundRecordMapper;
+
+    /**
+     * 查询成品出库记录
+     * 
+     * @param id 成品出库记录主键
+     * @return 成品出库记录
+     */
+    @Override
+    public ProductOutboundRecord selectProductOutboundRecordById(Long id)
+    {
+        return productOutboundRecordMapper.selectProductOutboundRecordById(id);
+    }
+
+    /**
+     * 查询成品出库记录列表
+     * 
+     * @param vo 成品出库记录
+     * @return 成品出库记录
+     */
+    @Override
+    public List<ProductCodeListVO> selectProductOutboundRecordList(ProductCodeListVO vo)
+    {
+        return productOutboundRecordMapper.selectList(vo);
+    }
+
+    /**
+     * 新增成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    @Override
+    public int insertProductOutboundRecord(ProductOutboundRecord productOutboundRecord)
+    {
+        productOutboundRecord.setCreateTime(DateUtils.getNowDate());
+        return productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+    }
+
+    /**
+     * 修改成品出库记录
+     * 
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    @Override
+    public int updateProductOutboundRecord(ProductOutboundRecord productOutboundRecord)
+    {
+        productOutboundRecord.setUpdateTime(DateUtils.getNowDate());
+        return productOutboundRecordMapper.updateProductOutboundRecord(productOutboundRecord);
+    }
+
+    /**
+     * 批量删除成品出库记录
+     * 
+     * @param ids 需要删除的成品出库记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductOutboundRecordByIds(Long[] ids)
+    {
+        return productOutboundRecordMapper.deleteProductOutboundRecordByIds(ids);
+    }
+
+    /**
+     * 删除成品出库记录信息
+     * 
+     * @param id 成品出库记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductOutboundRecordById(Long id)
+    {
+        return productOutboundRecordMapper.deleteProductOutboundRecordById(id);
+    }
+
+    @Override
+    public ProductOutboundRecord whetherStorage(String qrCode, String qrCodeId) {
+        return productOutboundRecordMapper.selectProductOutboundRecordWhetherExist(qrCode,qrCodeId);
+    }
+}

+ 108 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductWarehousingRecordServiceImpl.java

@@ -0,0 +1,108 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+
+import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.ProductWarehousingRecordMapper;
+import com.zkqy.business.domain.ProductWarehousingRecord;
+import com.zkqy.business.service.IProductWarehousingRecordService;
+
+/**
+ * 成品入库记录Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@Service
+public class ProductWarehousingRecordServiceImpl implements IProductWarehousingRecordService 
+{
+    @Autowired
+    private ProductWarehousingRecordMapper productWarehousingRecordMapper;
+
+    /**
+     * 查询成品入库记录
+     * 
+     * @param id 成品入库记录主键
+     * @return 成品入库记录
+     */
+    @Override
+    public ProductWarehousingRecord selectProductWarehousingRecordById(Long id)
+    {
+        return productWarehousingRecordMapper.selectProductWarehousingRecordById(id);
+    }
+
+    /**
+     * 查询成品入库记录列表
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 成品入库记录
+     */
+    @Override
+    public List<ProductWarehousingRecord> selectProductWarehousingRecordList(ProductWarehousingRecord productWarehousingRecord)
+    {
+        return productWarehousingRecordMapper.selectProductWarehousingRecordList(productWarehousingRecord);
+    }
+
+    /**
+     * 新增成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    @Override
+    public int insertProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord)
+    {
+        productWarehousingRecord.setCreateTime(DateUtils.getNowDate());
+        return productWarehousingRecordMapper.insertProductWarehousingRecord(productWarehousingRecord);
+    }
+
+    /**
+     * 修改成品入库记录
+     * 
+     * @param productWarehousingRecord 成品入库记录
+     * @return 结果
+     */
+    @Override
+    public int updateProductWarehousingRecord(ProductWarehousingRecord productWarehousingRecord)
+    {
+        productWarehousingRecord.setUpdateTime(DateUtils.getNowDate());
+        return productWarehousingRecordMapper.updateProductWarehousingRecord(productWarehousingRecord);
+    }
+
+    /**
+     * 批量删除成品入库记录
+     * 
+     * @param ids 需要删除的成品入库记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductWarehousingRecordByIds(Long[] ids)
+    {
+        return productWarehousingRecordMapper.deleteProductWarehousingRecordByIds(ids);
+    }
+
+    /**
+     * 删除成品入库记录信息
+     * 
+     * @param id 成品入库记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProductWarehousingRecordById(Long id)
+    {
+        return productWarehousingRecordMapper.deleteProductWarehousingRecordById(id);
+    }
+
+    @Override
+    public List<ProductCodeListVO> selectList(ProductCodeListVO vo) {
+        return productWarehousingRecordMapper.selectList(vo);
+    }
+
+    @Override
+    public ProductWarehousingRecord selectProductWarehousingRecordWhetherExist(String qrCode, String qrCodeId) {
+        return productWarehousingRecordMapper.selectProductWarehousingRecordWhetherExist(qrCode,qrCodeId);
+    }
+}

+ 96 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/WarehouseServiceImpl.java

@@ -0,0 +1,96 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.WarehouseMapper;
+import com.zkqy.business.domain.Warehouse;
+import com.zkqy.business.service.IWarehouseService;
+
+/**
+ * 仓库Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-04-09
+ */
+@Service
+public class WarehouseServiceImpl implements IWarehouseService 
+{
+    @Autowired
+    private WarehouseMapper warehouseMapper;
+
+    /**
+     * 查询仓库
+     * 
+     * @param id 仓库主键
+     * @return 仓库
+     */
+    @Override
+    public Warehouse selectWarehouseById(Long id)
+    {
+        return warehouseMapper.selectWarehouseById(id);
+    }
+
+    /**
+     * 查询仓库列表
+     * 
+     * @param warehouse 仓库
+     * @return 仓库
+     */
+    @Override
+    public List<Warehouse> selectWarehouseList(Warehouse warehouse)
+    {
+        return warehouseMapper.selectWarehouseList(warehouse);
+    }
+
+    /**
+     * 新增仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    @Override
+    public int insertWarehouse(Warehouse warehouse)
+    {
+        warehouse.setCreateTime(DateUtils.getNowDate());
+        return warehouseMapper.insertWarehouse(warehouse);
+    }
+
+    /**
+     * 修改仓库
+     * 
+     * @param warehouse 仓库
+     * @return 结果
+     */
+    @Override
+    public int updateWarehouse(Warehouse warehouse)
+    {
+        warehouse.setUpdateTime(DateUtils.getNowDate());
+        return warehouseMapper.updateWarehouse(warehouse);
+    }
+
+    /**
+     * 批量删除仓库
+     * 
+     * @param ids 需要删除的仓库主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWarehouseByIds(Long[] ids)
+    {
+        return warehouseMapper.deleteWarehouseByIds(ids);
+    }
+
+    /**
+     * 删除仓库信息
+     * 
+     * @param id 仓库主键
+     * @return 结果
+     */
+    @Override
+    public int deleteWarehouseById(Long id)
+    {
+        return warehouseMapper.deleteWarehouseById(id);
+    }
+}

+ 116 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListInfoMapper.xml

@@ -0,0 +1,116 @@
+<?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.zkqy.business.mapper.ProductCodeListInfoMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductCodeListInfo" id="ProductCodeListInfoResult">
+        <result property="id"    column="id"    />
+        <result property="codeListId"    column="code_list_id"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="boxNumber"    column="box_number"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="printFormat" column="print_format"/>
+    </resultMap>
+
+    <sql id="selectProductCodeListInfoVo">
+        select id, code_list_id, machine_tool, box_number, box_weight, canister_weight, canister_num, gross_weight, suttle, work_shifts, tube_color, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time,print_format from {DBNAME}.product_code_list_info
+    </sql>
+
+    <select id="selectProductCodeListInfoList" parameterType="com.zkqy.business.domain.ProductCodeListInfo" resultMap="ProductCodeListInfoResult">
+        <include refid="selectProductCodeListInfoVo"/>
+        where del_flag = '0'
+            <if test="codeListId != null "> and code_list_id = #{codeListId}</if>
+            <if test="machineTool != null  and machineTool != ''"> and machine_tool = #{machineTool}</if>
+            <if test="boxNumber != null  and boxNumber != ''"> and box_number = #{boxNumber}</if>
+            <if test="boxWeight != null "> and box_weight = #{boxWeight}</if>
+            <if test="canisterWeight != null "> and canister_weight = #{canisterWeight}</if>
+            <if test="canisterNum != null "> and canister_num = #{canisterNum}</if>
+            <if test="grossWeight != null "> and gross_weight = #{grossWeight}</if>
+            <if test="suttle != null "> and suttle = #{suttle}</if>
+            <if test="workShifts != null  and workShifts != ''"> and work_shifts = #{workShifts}</if>
+            <if test="tubeColor != null  and tubeColor != ''"> and tube_color = #{tubeColor}</if>
+    </select>
+    
+    <select id="selectProductCodeListInfoById" parameterType="Long" resultMap="ProductCodeListInfoResult">
+        <include refid="selectProductCodeListInfoVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductCodeListInfo" parameterType="java.util.List">
+        insert into {DBNAME}.product_code_list_info
+            (code_list_id,machine_tool,box_number,box_weight,canister_weight,canister_num,gross_weight,suttle,work_shifts,tube_color,remark,create_by,create_by_id,create_time,del_flag,print_format)
+        values
+            <foreach collection="list" item="item" separator=",">
+                (
+                    #{item.codeListId},
+                    #{item.machineTool},
+                    #{item.boxNumber},
+                    #{item.boxWeight},
+                    #{item.canisterWeight},
+                    #{item.canisterNum},
+                    #{item.grossWeight},
+                    #{item.suttle},
+                    #{item.workShifts},
+                    #{item.tubeColor},
+                    #{item.remark},
+                    #{item.createBy},
+                    #{item.createById},
+                    #{item.createTime},
+                    '0',
+                    #{item.printFormat}
+                )
+            </foreach>
+    </insert>
+
+    <update id="updateProductCodeListInfo" parameterType="com.zkqy.business.domain.ProductCodeListInfo">
+        update {DBNAME}.product_code_list_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="codeListId != null">code_list_id = #{codeListId},</if>
+            <if test="machineTool != null">machine_tool = #{machineTool},</if>
+            <if test="boxNumber != null">box_number = #{boxNumber},</if>
+            <if test="boxWeight != null">box_weight = #{boxWeight},</if>
+            <if test="canisterWeight != null">canister_weight = #{canisterWeight},</if>
+            <if test="canisterNum != null">canister_num = #{canisterNum},</if>
+            <if test="grossWeight != null">gross_weight = #{grossWeight},</if>
+            <if test="suttle != null">suttle = #{suttle},</if>
+            <if test="workShifts != null">work_shifts = #{workShifts},</if>
+            <if test="tubeColor != null">tube_color = #{tubeColor},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="printFormat">print_format = #{printFormat}</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductCodeListInfoById" parameterType="Long">
+        delete from product_code_list_info where id = #{id}
+    </delete>
+
+    <update id="deleteProductCodeListInfoByIds">
+        update {DBNAME}.product_code_list_info set del_flag = '2' where id in
+        <foreach item="id" collection="list" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <select id="selectProductCodeListInfoIdByCodeListId" resultType="long">
+        select id from {DBNAME}.product_code_list_info where code_list_id = #{codeListId}
+    </select>
+</mapper>

+ 250 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml

@@ -0,0 +1,250 @@
+<?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.zkqy.business.mapper.ProductCodeListMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductCodeList" id="ProductCodeListResult">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="totalCanisterNum" column="total_canister_num"/>
+        <result property="totalBoxNum" column="total_box_num"/>
+        <result property="totalSuttle" column="total_suttle"/>
+        <result property="totalGrossWeight" column="total_gross_weight"/>
+    </resultMap>
+
+    <resultMap type="com.zkqy.business.domain.vo.ProductCodeListVO" id="ProductCodeListResultVO">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="productName"    column="product_name"    />
+        <result property="productColor" column="product_color"/>
+        <result property="productSpecifications" column="product_specifications"/>
+        <result property="totalCanisterNum" column="total_canister_num"/>
+        <result property="totalBoxNum" column="total_box_num"/>
+        <result property="totalSuttle" column="total_suttle"/>
+        <result property="totalGrossWeight" column="total_gross_weight"/>
+    </resultMap>
+
+    <sql id="selectProductCodeListVo">
+        select id, qr_code, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, machine_tool, gross_weight, packaging, work_shifts, foreign_trade_number, canister_weight, box_weight, tube_color, com_port, print_format, packaging_type, storage_location, warehouseregion_id, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time ,
+               total_canister_num, total_box_num, total_suttle, total_gross_weight from {DBNAME}.product_code_list
+    </sql>
+
+    <select id="selectProductCodeListList" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
+        SELECT
+            pcl.* ,
+            p.product_name as product_name,
+            p.product_specifications as product_specifications,
+            p.product_color as product_color
+        FROM
+            {DBNAME}.product_code_list pcl
+        LEFT JOIN {DBNAME}.production p ON pcl.product_id = p.id
+        WHERE
+            pcl.del_flag = '0'
+            AND p.del_flag = '0'
+            <if test="qrCode != null  and qrCode != ''"> and pcl.qr_code = #{qrCode}</if>
+            <if test="lotNum != null  and lotNum != ''"> and pcl.lot_num = #{lotNum}</if>
+            <if test="productName != null and productName != ''"> and p.product_name = #{productName}</if>
+            <if test="productSpecifications != null and productSpecifications != ''"> and p.product_specifications = #{productSpecifications}</if>
+            <if test="productColor != null and productColor != ''"> and p.product_color = #{productColor}</if>
+    </select>
+    
+    <select id="selectProductCodeListById" parameterType="Long" resultMap="ProductCodeListResult">
+        <include refid="selectProductCodeListVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductCodeList" parameterType="com.zkqy.business.domain.ProductCodeList" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.product_code_list
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">qr_code,</if>
+            <if test="lotNum != null">lot_num,</if>
+            <if test="productId != null">product_id,</if>
+            <if test="levels != null">levels,</if>
+            <if test="canisterNum != null">canister_num,</if>
+            <if test="boxNum != null">box_num,</if>
+            <if test="suttle != null">suttle,</if>
+            <if test="productionDate != null">production_date,</if>
+            <if test="machineTool != null">machine_tool,</if>
+            <if test="grossWeight != null">gross_weight,</if>
+            <if test="packaging != null">packaging,</if>
+            <if test="workShifts != null">work_shifts,</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number,</if>
+            <if test="canisterWeight != null">canister_weight,</if>
+            <if test="boxWeight != null">box_weight,</if>
+            <if test="tubeColor != null">tube_color,</if>
+            <if test="comPort != null">com_port,</if>
+            <if test="printFormat != null">print_format,</if>
+            <if test="packagingType != null">packaging_type,</if>
+            <if test="storageLocation != null">storage_location,</if>
+            <if test="warehouseregionId != null">warehouseregion_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="totalCanisterNum != null">total_canister_num,</if>
+            <if test="totalBoxNum != null">total_box_num,</if>
+            <if test="totalSuttle != null">total_suttle,</if>
+            <if test="totalGrossWeight != null">total_gross_weight,</if>
+            del_flag
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">#{qrCode},</if>
+            <if test="lotNum != null">#{lotNum},</if>
+            <if test="productId != null">#{productId},</if>
+            <if test="levels != null">#{levels},</if>
+            <if test="canisterNum != null">#{canisterNum},</if>
+            <if test="boxNum != null">#{boxNum},</if>
+            <if test="suttle != null">#{suttle},</if>
+            <if test="productionDate != null">#{productionDate},</if>
+            <if test="machineTool != null">#{machineTool},</if>
+            <if test="grossWeight != null">#{grossWeight},</if>
+            <if test="packaging != null">#{packaging},</if>
+            <if test="workShifts != null">#{workShifts},</if>
+            <if test="foreignTradeNumber != null">#{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">#{canisterWeight},</if>
+            <if test="boxWeight != null">#{boxWeight},</if>
+            <if test="tubeColor != null">#{tubeColor},</if>
+            <if test="comPort != null">#{comPort},</if>
+            <if test="printFormat != null">#{printFormat},</if>
+            <if test="packagingType != null">#{packagingType},</if>
+            <if test="storageLocation != null">#{storageLocation},</if>
+            <if test="warehouseregionId != null">#{warehouseregionId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="totalCanisterNum != null">#{totalCanisterNum},</if>
+            <if test="totalBoxNum != null">#{totalBoxNum},</if>
+            <if test="totalSuttle != null">#{totalSuttle},</if>
+            <if test="totalGrossWeight != null">#{totalGrossWeight},</if>
+            '0'
+         </trim>
+    </insert>
+
+    <update id="updateProductCodeList" parameterType="com.zkqy.business.domain.ProductCodeList">
+        update {DBNAME}.product_code_list
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="qrCode != null">qr_code = #{qrCode},</if>
+            <if test="lotNum != null">lot_num = #{lotNum},</if>
+            <if test="productId != null">product_id = #{productId},</if>
+            <if test="levels != null">levels = #{levels},</if>
+            <if test="canisterNum != null">canister_num = #{canisterNum},</if>
+            <if test="boxNum != null">box_num = #{boxNum},</if>
+            <if test="suttle != null">suttle = #{suttle},</if>
+            <if test="productionDate != null">production_date = #{productionDate},</if>
+            <if test="machineTool != null">machine_tool = #{machineTool},</if>
+            <if test="grossWeight != null">gross_weight = #{grossWeight},</if>
+            <if test="packaging != null">packaging = #{packaging},</if>
+            <if test="workShifts != null">work_shifts = #{workShifts},</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number = #{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">canister_weight = #{canisterWeight},</if>
+            <if test="boxWeight != null">box_weight = #{boxWeight},</if>
+            <if test="tubeColor != null">tube_color = #{tubeColor},</if>
+            <if test="comPort != null">com_port = #{comPort},</if>
+            <if test="printFormat != null">print_format = #{printFormat},</if>
+            <if test="packagingType != null">packaging_type = #{packagingType},</if>
+            <if test="storageLocation != null">storage_location = #{storageLocation},</if>
+            <if test="warehouseregionId != null">warehouseregion_id = #{warehouseregionId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="totalCanisterNum != null">total_canister_num = #{totalCanisterNum},</if>
+            <if test="totalBoxNum != null">total_box_num = #{totalBoxNum},</if>
+            <if test="totalSuttle != null">total_suttle = #{totalSuttle},</if>
+            <if test="totalGrossWeight != null">total_gross_weight = #{totalGrossWeight},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductCodeListById" parameterType="Long">
+        delete from product_code_list where id = #{id}
+    </delete>
+
+    <update id="deleteProductCodeListByIds" parameterType="String">
+        update {DBNAME}.product_code_list set del_flag = '2' where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <select id="selectFinishedProduct" resultType="com.zkqy.business.domain.vo.ProductCodeListVO">
+        SELECT
+            sp.lot_number AS lotNum,
+            p.product_name AS productName,
+            p.product_specifications AS productSpecifications,
+            P.product_color AS productColor,
+            p.id AS productId,
+            sc.direction_of_twist AS directionOfTwist
+        FROM
+            {DBNAME}.sale_products sp
+                LEFT JOIN {DBNAME}.production p ON sp.product_no = p.product_no
+                LEFT JOIN {DBNAME}.sale_craft sc ON sp.sale_order_no = sc.sale_order_no
+        WHERE
+            sp.del_flag = '0'
+          AND p.del_flag = '0'
+          AND sc.del_flag = '0'
+    </select>
+
+    <select id="selectMaxCodeList" resultType="string">
+        select IFNULL(max(qr_code),0) from {DBNAME}.product_code_list where del_flag = '0'
+    </select>
+
+</mapper>

+ 97 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductCodeMapper.xml

@@ -0,0 +1,97 @@
+<?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.zkqy.business.mapper.ProductCodeMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductCode" id="ProductCodeResult">
+        <result property="id"    column="id"    />
+        <result property="num"    column="num"    />
+        <result property="codeName"    column="code_name"    />
+        <result property="codeType"    column="code_type"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectProductCodeVo">
+        select id, num, code_name, code_type, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time from {DBNAME}.product_code
+    </sql>
+
+    <select id="selectProductCodeList" parameterType="com.zkqy.business.domain.ProductCode" resultMap="ProductCodeResult">
+        <include refid="selectProductCodeVo"/>
+        where del_flag = '0'
+            <if test="num != null  and num != ''"> and num = #{num}</if>
+            <if test="codeName != null  and codeName != ''"> and code_name like concat('%', #{codeName}, '%')</if>
+            <if test="codeType != null  and codeType != ''"> and code_type = #{codeType}</if>
+    </select>
+    
+    <select id="selectProductCodeById" parameterType="Long" resultMap="ProductCodeResult">
+        <include refid="selectProductCodeVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductCode" parameterType="com.zkqy.business.domain.ProductCode" useGeneratedKeys="true" keyProperty="id">
+        insert into product_code
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="num != null">num,</if>
+            <if test="codeName != null">code_name,</if>
+            <if test="codeType != null">code_type,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="num != null">#{num},</if>
+            <if test="codeName != null">#{codeName},</if>
+            <if test="codeType != null">#{codeType},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProductCode" parameterType="com.zkqy.business.domain.ProductCode">
+        update product_code
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="num != null">num = #{num},</if>
+            <if test="codeName != null">code_name = #{codeName},</if>
+            <if test="codeType != null">code_type = #{codeType},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductCodeById" parameterType="Long">
+        delete from product_code where id = #{id}
+    </delete>
+
+    <delete id="deleteProductCodeByIds" parameterType="String">
+        delete from product_code where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 218 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml

@@ -0,0 +1,218 @@
+<?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.zkqy.business.mapper.ProductInventoryMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductInventory" id="ProductInventoryResult">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="warehouseId"    column="warehouse_id"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="totalCanisterNum"    column="total_canister_num"    />
+        <result property="totalBoxNum"    column="total_box_num"    />
+        <result property="totalSuttle"    column="total_suttle"    />
+        <result property="totalGrossWeight"    column="total_gross_weight"    />
+    </resultMap>
+
+    <sql id="selectProductInventoryVo">
+        select id, qr_code, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, warehouse_id, machine_tool, gross_weight, packaging, work_shifts, foreign_trade_number, canister_weight, box_weight, tube_color, com_port, print_format, packaging_type, storage_location, warehouseregion_id, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time, total_canister_num, total_box_num, total_suttle, total_gross_weight from {DBNAME}.product_inventory
+    </sql>
+
+    <select id="selectProductInventoryList" parameterType="com.zkqy.business.domain.ProductInventory" resultMap="ProductInventoryResult">
+        <include refid="selectProductInventoryVo"/>
+        <where>  
+            <if test="qrCode != null  and qrCode != ''"> and qr_code = #{qrCode}</if>
+            <if test="lotNum != null  and lotNum != ''"> and lot_num = #{lotNum}</if>
+            <if test="productId != null "> and product_id = #{productId}</if>
+            <if test="levels != null  and levels != ''"> and levels = #{levels}</if>
+            <if test="canisterNum != null "> and canister_num = #{canisterNum}</if>
+            <if test="boxNum != null "> and box_num = #{boxNum}</if>
+            <if test="suttle != null "> and suttle = #{suttle}</if>
+            <if test="productionDate != null "> and production_date = #{productionDate}</if>
+            <if test="warehouseId != null "> and warehouse_id = #{warehouseId}</if>
+            <if test="machineTool != null  and machineTool != ''"> and machine_tool = #{machineTool}</if>
+            <if test="grossWeight != null "> and gross_weight = #{grossWeight}</if>
+            <if test="packaging != null  and packaging != ''"> and packaging = #{packaging}</if>
+            <if test="workShifts != null  and workShifts != ''"> and work_shifts = #{workShifts}</if>
+            <if test="foreignTradeNumber != null  and foreignTradeNumber != ''"> and foreign_trade_number = #{foreignTradeNumber}</if>
+            <if test="canisterWeight != null "> and canister_weight = #{canisterWeight}</if>
+            <if test="boxWeight != null "> and box_weight = #{boxWeight}</if>
+            <if test="tubeColor != null  and tubeColor != ''"> and tube_color = #{tubeColor}</if>
+            <if test="comPort != null  and comPort != ''"> and com_port = #{comPort}</if>
+            <if test="printFormat != null  and printFormat != ''"> and print_format = #{printFormat}</if>
+            <if test="packagingType != null  and packagingType != ''"> and packaging_type = #{packagingType}</if>
+            <if test="storageLocation != null  and storageLocation != ''"> and storage_location = #{storageLocation}</if>
+            <if test="warehouseregionId != null "> and warehouseregion_id = #{warehouseregionId}</if>
+            <if test="totalCanisterNum != null "> and total_canister_num = #{totalCanisterNum}</if>
+            <if test="totalBoxNum != null "> and total_box_num = #{totalBoxNum}</if>
+            <if test="totalSuttle != null "> and total_suttle = #{totalSuttle}</if>
+            <if test="totalGrossWeight != null "> and total_gross_weight = #{totalGrossWeight}</if>
+        </where>
+    </select>
+    
+    <select id="selectProductInventoryById" parameterType="Long" resultMap="ProductInventoryResult">
+        <include refid="selectProductInventoryVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductInventory" parameterType="com.zkqy.business.domain.ProductInventory" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.product_inventory
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">qr_code,</if>
+            <if test="lotNum != null">lot_num,</if>
+            <if test="productId != null">product_id,</if>
+            <if test="levels != null">levels,</if>
+            <if test="canisterNum != null">canister_num,</if>
+            <if test="boxNum != null">box_num,</if>
+            <if test="suttle != null">suttle,</if>
+            <if test="productionDate != null">production_date,</if>
+            <if test="warehouseId != null">warehouse_id,</if>
+            <if test="machineTool != null">machine_tool,</if>
+            <if test="grossWeight != null">gross_weight,</if>
+            <if test="packaging != null">packaging,</if>
+            <if test="workShifts != null">work_shifts,</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number,</if>
+            <if test="canisterWeight != null">canister_weight,</if>
+            <if test="boxWeight != null">box_weight,</if>
+            <if test="tubeColor != null">tube_color,</if>
+            <if test="comPort != null">com_port,</if>
+            <if test="printFormat != null">print_format,</if>
+            <if test="packagingType != null">packaging_type,</if>
+            <if test="storageLocation != null">storage_location,</if>
+            <if test="warehouseregionId != null">warehouseregion_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="totalCanisterNum != null">total_canister_num,</if>
+            <if test="totalBoxNum != null">total_box_num,</if>
+            <if test="totalSuttle != null">total_suttle,</if>
+            <if test="totalGrossWeight != null">total_gross_weight,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">#{qrCode},</if>
+            <if test="lotNum != null">#{lotNum},</if>
+            <if test="productId != null">#{productId},</if>
+            <if test="levels != null">#{levels},</if>
+            <if test="canisterNum != null">#{canisterNum},</if>
+            <if test="boxNum != null">#{boxNum},</if>
+            <if test="suttle != null">#{suttle},</if>
+            <if test="productionDate != null">#{productionDate},</if>
+            <if test="warehouseId != null">#{warehouseId},</if>
+            <if test="machineTool != null">#{machineTool},</if>
+            <if test="grossWeight != null">#{grossWeight},</if>
+            <if test="packaging != null">#{packaging},</if>
+            <if test="workShifts != null">#{workShifts},</if>
+            <if test="foreignTradeNumber != null">#{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">#{canisterWeight},</if>
+            <if test="boxWeight != null">#{boxWeight},</if>
+            <if test="tubeColor != null">#{tubeColor},</if>
+            <if test="comPort != null">#{comPort},</if>
+            <if test="printFormat != null">#{printFormat},</if>
+            <if test="packagingType != null">#{packagingType},</if>
+            <if test="storageLocation != null">#{storageLocation},</if>
+            <if test="warehouseregionId != null">#{warehouseregionId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="totalCanisterNum != null">#{totalCanisterNum},</if>
+            <if test="totalBoxNum != null">#{totalBoxNum},</if>
+            <if test="totalSuttle != null">#{totalSuttle},</if>
+            <if test="totalGrossWeight != null">#{totalGrossWeight},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProductInventory" parameterType="com.zkqy.business.domain.ProductInventory">
+        update {DBNAME}.product_inventory
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="qrCode != null">qr_code = #{qrCode},</if>
+            <if test="lotNum != null">lot_num = #{lotNum},</if>
+            <if test="productId != null">product_id = #{productId},</if>
+            <if test="levels != null">levels = #{levels},</if>
+            <if test="canisterNum != null">canister_num = #{canisterNum},</if>
+            <if test="boxNum != null">box_num = #{boxNum},</if>
+            <if test="suttle != null">suttle = #{suttle},</if>
+            <if test="productionDate != null">production_date = #{productionDate},</if>
+            <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
+            <if test="machineTool != null">machine_tool = #{machineTool},</if>
+            <if test="grossWeight != null">gross_weight = #{grossWeight},</if>
+            <if test="packaging != null">packaging = #{packaging},</if>
+            <if test="workShifts != null">work_shifts = #{workShifts},</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number = #{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">canister_weight = #{canisterWeight},</if>
+            <if test="boxWeight != null">box_weight = #{boxWeight},</if>
+            <if test="tubeColor != null">tube_color = #{tubeColor},</if>
+            <if test="comPort != null">com_port = #{comPort},</if>
+            <if test="printFormat != null">print_format = #{printFormat},</if>
+            <if test="packagingType != null">packaging_type = #{packagingType},</if>
+            <if test="storageLocation != null">storage_location = #{storageLocation},</if>
+            <if test="warehouseregionId != null">warehouseregion_id = #{warehouseregionId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="totalCanisterNum != null">total_canister_num = #{totalCanisterNum},</if>
+            <if test="totalBoxNum != null">total_box_num = #{totalBoxNum},</if>
+            <if test="totalSuttle != null">total_suttle = #{totalSuttle},</if>
+            <if test="totalGrossWeight != null">total_gross_weight = #{totalGrossWeight},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductInventoryById" parameterType="Long">
+        delete from product_inventory where id = #{id}
+    </delete>
+
+    <delete id="deleteProductInventoryByIds" parameterType="String">
+        delete from product_inventory where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectProductInventoryByQrCode" resultMap="ProductInventoryResult">
+        <include refid="selectProductInventoryVo"/>
+        where del_flag = '0' and qr_code = #{qrCode}
+    </select>
+</mapper>

+ 285 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml

@@ -0,0 +1,285 @@
+<?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.zkqy.business.mapper.ProductOutboundRecordMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductOutboundRecord" id="ProductOutboundRecordResult">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="qrCodeId"    column="qr_code_id"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="warehousingTime"    column="warehousing_time"    />
+        <result property="depositor"    column="depositor"    />
+        <result property="warehouseId"    column="warehouse_id"    />
+    </resultMap>
+
+    <resultMap type="com.zkqy.business.domain.vo.ProductCodeListVO" id="ProductCodeListResultVO">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="productName"    column="product_name"    />
+        <result property="productColor" column="product_color"/>
+        <result property="productSpecifications" column="product_specifications"/>
+        <result property="totalCanisterNum" column="total_canister_num"/>
+        <result property="totalBoxNum" column="total_box_num"/>
+        <result property="totalSuttle" column="total_suttle"/>
+        <result property="totalGrossWeight" column="total_gross_weight"/>
+        <result property="warehousingTime"    column="warehousing_time"    />
+        <result property="depositor"    column="depositor"    />
+        <result property="warehouseId" column="warehouse_id"/>
+    </resultMap>
+
+    <sql id="selectProductOutboundRecordVo">
+        select id, qr_code, qr_code_id, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, machine_tool, gross_weight, packaging, work_shifts, foreign_trade_number, canister_weight, box_weight, tube_color, com_port, print_format, packaging_type, storage_location, warehouseregion_id, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time, warehousing_time, depositor, warehouse_id from {DBNAME}.product_outbound_record
+    </sql>
+
+    <select id="selectProductOutboundRecordList" parameterType="com.zkqy.business.domain.ProductOutboundRecord" resultMap="ProductOutboundRecordResult">
+        <include refid="selectProductOutboundRecordVo"/>
+        <where>  
+            <if test="qrCode != null  and qrCode != ''"> and qr_code = #{qrCode}</if>
+            <if test="qrCodeId != null  and qrCodeId != ''"> and qr_code_id = #{qrCodeId}</if>
+            <if test="lotNum != null  and lotNum != ''"> and lot_num = #{lotNum}</if>
+            <if test="productId != null "> and product_id = #{productId}</if>
+            <if test="levels != null  and levels != ''"> and levels = #{levels}</if>
+            <if test="canisterNum != null "> and canister_num = #{canisterNum}</if>
+            <if test="boxNum != null "> and box_num = #{boxNum}</if>
+            <if test="suttle != null "> and suttle = #{suttle}</if>
+            <if test="productionDate != null "> and production_date = #{productionDate}</if>
+            <if test="machineTool != null  and machineTool != ''"> and machine_tool = #{machineTool}</if>
+            <if test="grossWeight != null "> and gross_weight = #{grossWeight}</if>
+            <if test="packaging != null  and packaging != ''"> and packaging = #{packaging}</if>
+            <if test="workShifts != null  and workShifts != ''"> and work_shifts = #{workShifts}</if>
+            <if test="foreignTradeNumber != null  and foreignTradeNumber != ''"> and foreign_trade_number = #{foreignTradeNumber}</if>
+            <if test="canisterWeight != null "> and canister_weight = #{canisterWeight}</if>
+            <if test="boxWeight != null "> and box_weight = #{boxWeight}</if>
+            <if test="tubeColor != null  and tubeColor != ''"> and tube_color = #{tubeColor}</if>
+            <if test="comPort != null  and comPort != ''"> and com_port = #{comPort}</if>
+            <if test="printFormat != null  and printFormat != ''"> and print_format = #{printFormat}</if>
+            <if test="packagingType != null  and packagingType != ''"> and packaging_type = #{packagingType}</if>
+            <if test="storageLocation != null  and storageLocation != ''"> and storage_location = #{storageLocation}</if>
+            <if test="warehouseregionId != null "> and warehouseregion_id = #{warehouseregionId}</if>
+            <if test="warehousingTime != null "> and warehousing_time = #{warehousingTime}</if>
+            <if test="depositor != null  and depositor != ''"> and depositor = #{depositor}</if>
+            <if test="warehouseId != null "> and warehouse_id = #{warehouseId}</if>
+        </where>
+    </select>
+    
+    <select id="selectProductOutboundRecordById" parameterType="Long" resultMap="ProductOutboundRecordResult">
+        <include refid="selectProductOutboundRecordVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductOutboundRecord" parameterType="com.zkqy.business.domain.ProductOutboundRecord" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.product_outbound_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">qr_code,</if>
+            <if test="qrCodeId != null">qr_code_id,</if>
+            <if test="lotNum != null">lot_num,</if>
+            <if test="productId != null">product_id,</if>
+            <if test="levels != null">levels,</if>
+            <if test="canisterNum != null">canister_num,</if>
+            <if test="boxNum != null">box_num,</if>
+            <if test="suttle != null">suttle,</if>
+            <if test="productionDate != null">production_date,</if>
+            <if test="machineTool != null">machine_tool,</if>
+            <if test="grossWeight != null">gross_weight,</if>
+            <if test="packaging != null">packaging,</if>
+            <if test="workShifts != null">work_shifts,</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number,</if>
+            <if test="canisterWeight != null">canister_weight,</if>
+            <if test="boxWeight != null">box_weight,</if>
+            <if test="tubeColor != null">tube_color,</if>
+            <if test="comPort != null">com_port,</if>
+            <if test="printFormat != null">print_format,</if>
+            <if test="packagingType != null">packaging_type,</if>
+            <if test="storageLocation != null">storage_location,</if>
+            <if test="warehouseregionId != null">warehouseregion_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="warehousingTime != null">warehousing_time,</if>
+            <if test="depositor != null">depositor,</if>
+            <if test="warehouseId != null">warehouse_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">#{qrCode},</if>
+            <if test="qrCodeId != null">#{qrCodeId},</if>
+            <if test="lotNum != null">#{lotNum},</if>
+            <if test="productId != null">#{productId},</if>
+            <if test="levels != null">#{levels},</if>
+            <if test="canisterNum != null">#{canisterNum},</if>
+            <if test="boxNum != null">#{boxNum},</if>
+            <if test="suttle != null">#{suttle},</if>
+            <if test="productionDate != null">#{productionDate},</if>
+            <if test="machineTool != null">#{machineTool},</if>
+            <if test="grossWeight != null">#{grossWeight},</if>
+            <if test="packaging != null">#{packaging},</if>
+            <if test="workShifts != null">#{workShifts},</if>
+            <if test="foreignTradeNumber != null">#{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">#{canisterWeight},</if>
+            <if test="boxWeight != null">#{boxWeight},</if>
+            <if test="tubeColor != null">#{tubeColor},</if>
+            <if test="comPort != null">#{comPort},</if>
+            <if test="printFormat != null">#{printFormat},</if>
+            <if test="packagingType != null">#{packagingType},</if>
+            <if test="storageLocation != null">#{storageLocation},</if>
+            <if test="warehouseregionId != null">#{warehouseregionId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="warehousingTime != null">#{warehousingTime},</if>
+            <if test="depositor != null">#{depositor},</if>
+            <if test="warehouseId != null">#{warehouseId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProductOutboundRecord" parameterType="com.zkqy.business.domain.ProductOutboundRecord">
+        update product_outbound_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="qrCode != null">qr_code = #{qrCode},</if>
+            <if test="qrCodeId != null">qr_code_id = #{qrCodeId},</if>
+            <if test="lotNum != null">lot_num = #{lotNum},</if>
+            <if test="productId != null">product_id = #{productId},</if>
+            <if test="levels != null">levels = #{levels},</if>
+            <if test="canisterNum != null">canister_num = #{canisterNum},</if>
+            <if test="boxNum != null">box_num = #{boxNum},</if>
+            <if test="suttle != null">suttle = #{suttle},</if>
+            <if test="productionDate != null">production_date = #{productionDate},</if>
+            <if test="machineTool != null">machine_tool = #{machineTool},</if>
+            <if test="grossWeight != null">gross_weight = #{grossWeight},</if>
+            <if test="packaging != null">packaging = #{packaging},</if>
+            <if test="workShifts != null">work_shifts = #{workShifts},</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number = #{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">canister_weight = #{canisterWeight},</if>
+            <if test="boxWeight != null">box_weight = #{boxWeight},</if>
+            <if test="tubeColor != null">tube_color = #{tubeColor},</if>
+            <if test="comPort != null">com_port = #{comPort},</if>
+            <if test="printFormat != null">print_format = #{printFormat},</if>
+            <if test="packagingType != null">packaging_type = #{packagingType},</if>
+            <if test="storageLocation != null">storage_location = #{storageLocation},</if>
+            <if test="warehouseregionId != null">warehouseregion_id = #{warehouseregionId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="warehousingTime != null">warehousing_time = #{warehousingTime},</if>
+            <if test="depositor != null">depositor = #{depositor},</if>
+            <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductOutboundRecordById" parameterType="Long">
+        delete from product_outbound_record where id = #{id}
+    </delete>
+
+    <delete id="deleteProductOutboundRecordByIds" parameterType="String">
+        delete from product_outbound_record where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectList" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
+        SELECT
+        r.qr_code,
+        p.product_name,
+        p.product_specifications,
+        p.product_color,
+        r.lot_num,
+        r.levels,
+        r.packaging,
+        r.warehousing_time,
+        r.depositor,
+        count( r.id ) AS total_box_num,
+        sum( r.gross_weight ) AS total_gross_weight,
+        r.work_shifts,
+        r.production_date
+        FROM
+        {DBNAME}.product_outbound_record r
+        LEFT JOIN {DBNAME}.production p ON r.product_id = p.id
+        WHERE
+        r.del_flag = '0'
+        <if test="lotNum != null  and lotNum != ''"> and r.lot_num like concat('%', #{lotNum}, '%')</if>
+        <if test="productionDate != null"> and r.production_date = #{productionDate}</if>
+        <if test="warehousingTime != null "> and r.warehousing_time = #{warehousingTime}</if>
+        <if test="depositor != null  and depositor != ''"> and r.depositor like concat('%', #{depositor}, '%')</if>
+        GROUP BY
+        r.qr_code
+    </select>
+
+    <select id="selectProductOutboundRecordWhetherExist" resultMap="ProductOutboundRecordResult">
+        <include refid="selectProductOutboundRecordVo"/>
+        where del_flag = '0' and qr_code = #{qrCode} and qr_code_id = #{qrCodeId}
+    </select>
+
+</mapper>

+ 277 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml

@@ -0,0 +1,277 @@
+<?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.zkqy.business.mapper.ProductWarehousingRecordMapper">
+    
+    <resultMap type="com.zkqy.business.domain.ProductWarehousingRecord" id="ProductWarehousingRecordResult">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="qrCodeId"    column="qr_code_id"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="warehousingTime"    column="warehousing_time"    />
+        <result property="depositor"    column="depositor"    />
+        <result property="warehouseId" column="warehouse_id"/>
+    </resultMap>
+
+    <resultMap type="com.zkqy.business.domain.vo.ProductCodeListVO" id="ProductCodeListResultVO">
+        <result property="id"    column="id"    />
+        <result property="qrCode"    column="qr_code"    />
+        <result property="lotNum"    column="lot_num"    />
+        <result property="productId"    column="product_id"    />
+        <result property="levels"    column="levels"    />
+        <result property="canisterNum"    column="canister_num"    />
+        <result property="boxNum"    column="box_num"    />
+        <result property="suttle"    column="suttle"    />
+        <result property="productionDate"    column="production_date"    />
+        <result property="machineTool"    column="machine_tool"    />
+        <result property="grossWeight"    column="gross_weight"    />
+        <result property="packaging"    column="packaging"    />
+        <result property="workShifts"    column="work_shifts"    />
+        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
+        <result property="canisterWeight"    column="canister_weight"    />
+        <result property="boxWeight"    column="box_weight"    />
+        <result property="tubeColor"    column="tube_color"    />
+        <result property="comPort"    column="com_port"    />
+        <result property="printFormat"    column="print_format"    />
+        <result property="packagingType"    column="packaging_type"    />
+        <result property="storageLocation"    column="storage_location"    />
+        <result property="warehouseregionId"    column="warehouseregion_id"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="productName"    column="product_name"    />
+        <result property="productColor" column="product_color"/>
+        <result property="productSpecifications" column="product_specifications"/>
+        <result property="totalCanisterNum" column="total_canister_num"/>
+        <result property="totalBoxNum" column="total_box_num"/>
+        <result property="totalSuttle" column="total_suttle"/>
+        <result property="totalGrossWeight" column="total_gross_weight"/>
+        <result property="warehousingTime"    column="warehousing_time"    />
+        <result property="depositor"    column="depositor"    />
+        <result property="warehouseId" column="warehouse_id"/>
+    </resultMap>
+
+    <sql id="selectProductWarehousingRecordVo">
+        select id, qr_code, qr_code_id, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, machine_tool, gross_weight, packaging, work_shifts, foreign_trade_number, canister_weight, box_weight, tube_color, com_port, print_format, packaging_type, storage_location, warehouseregion_id, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time, warehousing_time, depositor,warehouse_id from {DBNAME}.product_warehousing_record
+    </sql>
+
+    <select id="selectProductWarehousingRecordList" parameterType="com.zkqy.business.domain.ProductWarehousingRecord" resultMap="ProductWarehousingRecordResult">
+        <include refid="selectProductWarehousingRecordVo"/>
+        where del_flag = '0'
+            <if test="qrCode != null  and qrCode != ''"> and qr_code = #{qrCode}</if>
+            <if test="qrCodeId != null  and qrCodeId != ''"> and qr_code_id = #{qrCodeId}</if>
+            <if test="lotNum != null  and lotNum != ''"> and lot_num = #{lotNum}</if>
+            <if test="productId != null "> and product_id = #{productId}</if>
+            <if test="levels != null  and levels != ''"> and levels = #{levels}</if>
+            <if test="canisterNum != null "> and canister_num = #{canisterNum}</if>
+            <if test="boxNum != null "> and box_num = #{boxNum}</if>
+            <if test="suttle != null "> and suttle = #{suttle}</if>
+            <if test="productionDate != null "> and production_date = #{productionDate}</if>
+            <if test="machineTool != null  and machineTool != ''"> and machine_tool = #{machineTool}</if>
+            <if test="grossWeight != null "> and gross_weight = #{grossWeight}</if>
+            <if test="packaging != null  and packaging != ''"> and packaging = #{packaging}</if>
+            <if test="workShifts != null  and workShifts != ''"> and work_shifts = #{workShifts}</if>
+            <if test="foreignTradeNumber != null  and foreignTradeNumber != ''"> and foreign_trade_number = #{foreignTradeNumber}</if>
+            <if test="canisterWeight != null "> and canister_weight = #{canisterWeight}</if>
+            <if test="boxWeight != null "> and box_weight = #{boxWeight}</if>
+            <if test="tubeColor != null  and tubeColor != ''"> and tube_color = #{tubeColor}</if>
+            <if test="comPort != null  and comPort != ''"> and com_port = #{comPort}</if>
+            <if test="printFormat != null  and printFormat != ''"> and print_format = #{printFormat}</if>
+            <if test="packagingType != null  and packagingType != ''"> and packaging_type = #{packagingType}</if>
+            <if test="storageLocation != null  and storageLocation != ''"> and storage_location = #{storageLocation}</if>
+            <if test="warehouseregionId != null "> and warehouseregion_id = #{warehouseregionId}</if>
+            <if test="warehousingTime != null "> and warehousing_time = #{warehousingTime}</if>
+            <if test="depositor != null  and depositor != ''"> and depositor = #{depositor}</if>
+    </select>
+    
+    <select id="selectProductWarehousingRecordById" parameterType="Long" resultMap="ProductWarehousingRecordResult">
+        <include refid="selectProductWarehousingRecordVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertProductWarehousingRecord" parameterType="com.zkqy.business.domain.ProductWarehousingRecord" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.product_warehousing_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">qr_code,</if>
+            <if test="qrCodeId != null">qr_code_id,</if>
+            <if test="lotNum != null">lot_num,</if>
+            <if test="productId != null">product_id,</if>
+            <if test="levels != null">levels,</if>
+            <if test="canisterNum != null">canister_num,</if>
+            <if test="boxNum != null">box_num,</if>
+            <if test="suttle != null">suttle,</if>
+            <if test="productionDate != null">production_date,</if>
+            <if test="machineTool != null">machine_tool,</if>
+            <if test="grossWeight != null">gross_weight,</if>
+            <if test="packaging != null">packaging,</if>
+            <if test="workShifts != null">work_shifts,</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number,</if>
+            <if test="canisterWeight != null">canister_weight,</if>
+            <if test="boxWeight != null">box_weight,</if>
+            <if test="tubeColor != null">tube_color,</if>
+            <if test="comPort != null">com_port,</if>
+            <if test="printFormat != null">print_format,</if>
+            <if test="packagingType != null">packaging_type,</if>
+            <if test="storageLocation != null">storage_location,</if>
+            <if test="warehouseregionId != null">warehouseregion_id,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="warehousingTime != null">warehousing_time,</if>
+            <if test="depositor != null">depositor,</if>
+            <if test="warehouseId != null">warehouse_id,</if>
+            del_flag
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="qrCode != null">#{qrCode},</if>
+            <if test="qrCodeId != null">#{qrCodeId},</if>
+            <if test="lotNum != null">#{lotNum},</if>
+            <if test="productId != null">#{productId},</if>
+            <if test="levels != null">#{levels},</if>
+            <if test="canisterNum != null">#{canisterNum},</if>
+            <if test="boxNum != null">#{boxNum},</if>
+            <if test="suttle != null">#{suttle},</if>
+            <if test="productionDate != null">#{productionDate},</if>
+            <if test="machineTool != null">#{machineTool},</if>
+            <if test="grossWeight != null">#{grossWeight},</if>
+            <if test="packaging != null">#{packaging},</if>
+            <if test="workShifts != null">#{workShifts},</if>
+            <if test="foreignTradeNumber != null">#{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">#{canisterWeight},</if>
+            <if test="boxWeight != null">#{boxWeight},</if>
+            <if test="tubeColor != null">#{tubeColor},</if>
+            <if test="comPort != null">#{comPort},</if>
+            <if test="printFormat != null">#{printFormat},</if>
+            <if test="packagingType != null">#{packagingType},</if>
+            <if test="storageLocation != null">#{storageLocation},</if>
+            <if test="warehouseregionId != null">#{warehouseregionId},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="warehousingTime != null">#{warehousingTime},</if>
+            <if test="depositor != null">#{depositor},</if>
+            <if test="warehouseId != null">#{warehouseId},</if>
+            '0'
+         </trim>
+    </insert>
+
+    <update id="updateProductWarehousingRecord" parameterType="com.zkqy.business.domain.ProductWarehousingRecord">
+        update product_warehousing_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="qrCode != null">qr_code = #{qrCode},</if>
+            <if test="qrCodeId != null">qr_code_id = #{qrCodeId},</if>
+            <if test="lotNum != null">lot_num = #{lotNum},</if>
+            <if test="productId != null">product_id = #{productId},</if>
+            <if test="levels != null">levels = #{levels},</if>
+            <if test="canisterNum != null">canister_num = #{canisterNum},</if>
+            <if test="boxNum != null">box_num = #{boxNum},</if>
+            <if test="suttle != null">suttle = #{suttle},</if>
+            <if test="productionDate != null">production_date = #{productionDate},</if>
+            <if test="machineTool != null">machine_tool = #{machineTool},</if>
+            <if test="grossWeight != null">gross_weight = #{grossWeight},</if>
+            <if test="packaging != null">packaging = #{packaging},</if>
+            <if test="workShifts != null">work_shifts = #{workShifts},</if>
+            <if test="foreignTradeNumber != null">foreign_trade_number = #{foreignTradeNumber},</if>
+            <if test="canisterWeight != null">canister_weight = #{canisterWeight},</if>
+            <if test="boxWeight != null">box_weight = #{boxWeight},</if>
+            <if test="tubeColor != null">tube_color = #{tubeColor},</if>
+            <if test="comPort != null">com_port = #{comPort},</if>
+            <if test="printFormat != null">print_format = #{printFormat},</if>
+            <if test="packagingType != null">packaging_type = #{packagingType},</if>
+            <if test="storageLocation != null">storage_location = #{storageLocation},</if>
+            <if test="warehouseregionId != null">warehouseregion_id = #{warehouseregionId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="warehousingTime != null">warehousing_time = #{warehousingTime},</if>
+            <if test="depositor != null">depositor = #{depositor},</if>
+            <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProductWarehousingRecordById" parameterType="Long">
+        delete from product_warehousing_record where id = #{id}
+    </delete>
+
+    <delete id="deleteProductWarehousingRecordByIds" parameterType="String">
+        delete from product_warehousing_record where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectList" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
+        SELECT
+            r.qr_code,
+            p.product_name,
+            p.product_specifications,
+            p.product_color,
+            r.lot_num,
+            r.levels,
+            r.packaging,
+            r.warehousing_time,
+            r.depositor,
+            count( r.id ) AS total_box_num,
+            sum( r.gross_weight ) AS total_gross_weight,
+            r.work_shifts,
+            r.production_date
+        FROM
+        {DBNAME}.product_warehousing_record r
+                LEFT JOIN {DBNAME}.production p ON r.product_id = p.id
+        WHERE
+            r.del_flag = '0'
+            <if test="lotNum != null  and lotNum != ''"> and r.lot_num like concat('%', #{lotNum}, '%')</if>
+            <if test="productionDate != null"> and r.production_date = #{productionDate}</if>
+            <if test="warehousingTime != null "> and r.warehousing_time = #{warehousingTime}</if>
+            <if test="depositor != null  and depositor != ''"> and r.depositor like concat('%', #{depositor}, '%')</if>
+        GROUP BY
+            r.qr_code
+    </select>
+
+    <select id="selectProductWarehousingRecordWhetherExist" resultMap="ProductWarehousingRecordResult">
+        <include refid="selectProductWarehousingRecordVo"/>
+        where del_flag = '0' and qr_code = #{qrCode} and qr_code_id = #{qrCodeId}
+    </select>
+
+</mapper>

+ 120 - 0
zkqy-custom-business/src/main/resources/mapper/business/WarehouseMapper.xml

@@ -0,0 +1,120 @@
+<?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.zkqy.business.mapper.WarehouseMapper">
+    
+    <resultMap type="com.zkqy.business.domain.Warehouse" id="WarehouseResult">
+        <result property="id"    column="id"    />
+        <result property="warehouseNo"    column="warehouse_no"    />
+        <result property="warehouseName"    column="warehouse_name"    />
+        <result property="warehouseAddress"    column="warehouse_address"    />
+        <result property="warehouseType"    column="warehouse_type"    />
+        <result property="warehouseTypeName"    column="warehouse_type_name"    />
+        <result property="state"    column="state"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectWarehouseVo">
+        select id, warehouse_no, warehouse_name, warehouse_address, warehouse_type, warehouse_type_name, state, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key from {DBNAME}.warehouse
+    </sql>
+
+    <select id="selectWarehouseList" parameterType="com.zkqy.business.domain.Warehouse" resultMap="WarehouseResult">
+        <include refid="selectWarehouseVo"/>
+        where del_flag = '0'
+            <if test="warehouseNo != null  and warehouseNo != ''"> and warehouse_no = #{warehouseNo}</if>
+            <if test="warehouseName != null  and warehouseName != ''"> and warehouse_name like concat('%', #{warehouseName}, '%')</if>
+            <if test="warehouseAddress != null  and warehouseAddress != ''"> and warehouse_address = #{warehouseAddress}</if>
+            <if test="warehouseType != null  and warehouseType != ''"> and warehouse_type = #{warehouseType}</if>
+            <if test="warehouseTypeName != null  and warehouseTypeName != ''"> and warehouse_type_name like concat('%', #{warehouseTypeName}, '%')</if>
+            <if test="state != null  and state != ''"> and state = #{state}</if>
+    </select>
+    
+    <select id="selectWarehouseById" parameterType="Long" resultMap="WarehouseResult">
+        <include refid="selectWarehouseVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertWarehouse" parameterType="com.zkqy.business.domain.Warehouse" useGeneratedKeys="true" keyProperty="id">
+        insert into warehouse
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="warehouseNo != null">warehouse_no,</if>
+            <if test="warehouseName != null">warehouse_name,</if>
+            <if test="warehouseAddress != null">warehouse_address,</if>
+            <if test="warehouseType != null">warehouse_type,</if>
+            <if test="warehouseTypeName != null">warehouse_type_name,</if>
+            <if test="state != null">state,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="warehouseNo != null">#{warehouseNo},</if>
+            <if test="warehouseName != null">#{warehouseName},</if>
+            <if test="warehouseAddress != null">#{warehouseAddress},</if>
+            <if test="warehouseType != null">#{warehouseType},</if>
+            <if test="warehouseTypeName != null">#{warehouseTypeName},</if>
+            <if test="state != null">#{state},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateWarehouse" parameterType="com.zkqy.business.domain.Warehouse">
+        update warehouse
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="warehouseNo != null">warehouse_no = #{warehouseNo},</if>
+            <if test="warehouseName != null">warehouse_name = #{warehouseName},</if>
+            <if test="warehouseAddress != null">warehouse_address = #{warehouseAddress},</if>
+            <if test="warehouseType != null">warehouse_type = #{warehouseType},</if>
+            <if test="warehouseTypeName != null">warehouse_type_name = #{warehouseTypeName},</if>
+            <if test="state != null">state = #{state},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteWarehouseById" parameterType="Long">
+        delete from warehouse where id = #{id}
+    </delete>
+
+    <delete id="deleteWarehouseByIds" parameterType="String">
+        delete from warehouse where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>