Kaynağa Gözat

feat:自动、手动打印入库、错误打印标签(删除库存)逻辑等bug修复、入库日志添加删除逻辑

韩帛霖 1 yıl önce
ebeveyn
işleme
0b7776b042
16 değiştirilmiş dosya ile 550 ekleme ve 407 silme
  1. 22 17
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java
  2. 21 19
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListInfoController.java
  3. 20 17
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java
  4. 9 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java
  5. 18 9
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListInfoService.java
  6. 9 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListService.java
  7. 13 9
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java
  8. 18 9
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java
  9. 28 21
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListInfoServiceImpl.java
  10. 58 59
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java
  11. 79 51
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  12. 20 22
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java
  13. 164 111
      zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml
  14. 2 10
      zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml
  15. 11 1
      zkqy-ui/src/api/system/ProductWarehousingRecord.js
  16. 58 52
      zkqy-ui/src/views/orderMange/productInRecord/index.vue

+ 22 - 17
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java

@@ -41,8 +41,7 @@ import com.zkqy.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/system/productCodeList")
 @Api(value = "/system/productCodeList", description = "产品码单-接口")
-public class ProductCodeListController extends BaseController
-{
+public class ProductCodeListController extends BaseController {
     @Autowired
     private IProductCodeListService productCodeListService;
 
@@ -55,8 +54,7 @@ public class ProductCodeListController extends BaseController
     //@PreAuthorize("@ss.hasPermi('system:productCodeList:list')")
     @GetMapping("/list")
     @ApiOperation(value = "查询产品码单列表")
-    public TableDataInfo list(ProductCodeListVO vo)
-    {
+    public TableDataInfo list(ProductCodeListVO vo) {
         startPage();
         List<ProductCodeListVO> list = productCodeListService.selectProductCodeListList(vo);
         return getDataTable(list);
@@ -84,8 +82,7 @@ public class ProductCodeListController extends BaseController
     //@PreAuthorize("@ss.hasPermi('system:productCodeList:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取产品码单详细信息")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(productCodeListService.selectProductCodeListById(id));
     }
 
@@ -93,7 +90,7 @@ public class ProductCodeListController extends BaseController
      * 根据qrCode查询产品码单信息
      */
     @GetMapping("/queryCodeListByQrCode/{qrCode}")
-    public AjaxResult queryCodeListByQrCode(@PathVariable("qrCode") String qrCode){
+    public AjaxResult queryCodeListByQrCode(@PathVariable("qrCode") String qrCode) {
         return success(productCodeListService.selectProductCodeListByQrCode(qrCode));
     }
 
@@ -105,8 +102,7 @@ public class ProductCodeListController extends BaseController
     @Log(title = "产品码单", businessType = BusinessType.INSERT)
     @PostMapping
     @ApiOperation(value = "新增产品码单")
-    public AjaxResult add(@RequestBody ProductCodeListVO vo)
-    {
+    public AjaxResult add(@RequestBody ProductCodeListVO vo) {
         return AjaxResult.success(productCodeListService.insertProductCodeList(vo));
     }
 
@@ -117,13 +113,12 @@ public class ProductCodeListController extends BaseController
     @Log(title = "产品码单", businessType = BusinessType.UPDATE)
     @PutMapping
     @ApiOperation(value = "修改产品码单")
-    public AjaxResult edit(@RequestBody ProductCodeListVO vo)
-    {
+    public AjaxResult edit(@RequestBody ProductCodeListVO vo) {
         //查询成品库存表,查看当前码单是否已经入库,入库则不能修改
         ProductWarehousingRecord productWarehousingRecord = new ProductWarehousingRecord();
         productWarehousingRecord.setQrCode(vo.getQrCode());
         List<ProductWarehousingRecord> productWarehousingRecordList = productWarehousingRecordService.selectProductWarehousingRecordList(productWarehousingRecord);
-        if(productWarehousingRecordList.size() > 0){
+        if (productWarehousingRecordList.size() > 0) {
             return AjaxResult.warn("该码单已入库,不能修改!");
         }
 
@@ -137,8 +132,7 @@ public class ProductCodeListController extends BaseController
     @Log(title = "产品码单", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     @ApiOperation(value = "删除产品码单")
-    public AjaxResult remove(@PathVariable String[] ids)
-    {
+    public AjaxResult remove(@PathVariable String[] ids) {
         return toAjax(productCodeListService.deleteProductCodeListByIds(ids));
     }
 
@@ -146,7 +140,7 @@ public class ProductCodeListController extends BaseController
      * 生产完成产品列表
      */
     @GetMapping("/finishedProductList")
-    public AjaxResult finishedProductList(){
+    public AjaxResult finishedProductList() {
         return AjaxResult.success(productCodeListService.selectFinishedProduct());
     }
 
@@ -154,7 +148,7 @@ public class ProductCodeListController extends BaseController
      * 获取码单号
      */
     @GetMapping("/getQrCode")
-    public AjaxResult getQrCode(){
+    public AjaxResult getQrCode() {
         return AjaxResult.success(productCodeListService.selectMaxCodeList());
     }
 
@@ -163,8 +157,19 @@ public class ProductCodeListController extends BaseController
      * 获取当前码单完整信息
      */
     @GetMapping("/getProductCodeListById/{id}")
-    public AjaxResult getProductCodeListById(@PathVariable("id") Long id){
+    public AjaxResult getProductCodeListById(@PathVariable("id") Long id) {
         return AjaxResult.success(productCodeListService.getProductCodeListById(id));
     }
 
+    /**
+     * 删除二维码信息、更新库存、入库记录等
+     *
+     * @param productCodeListVO
+     * @return
+     */
+    @DeleteMapping("/removeProductCodeASInventory")
+    @ApiOperation(value = "删除产品码单详情")
+    public AjaxResult removeInventory(@RequestBody ProductCodeListVO productCodeListVO) {
+        return productCodeListService.deleteProductCodeListInfoByInfo(productCodeListVO);
+    }
 }

+ 21 - 19
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListInfoController.java

@@ -2,6 +2,8 @@ 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;
@@ -32,19 +34,17 @@ import com.zkqy.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/system/ProductCodeListInfo")
 @Api(value = "/system/ProductCodeListInfo", description = "产品码单详情-接口")
-public class ProductCodeListInfoController extends BaseController
-{
+public class ProductCodeListInfoController extends BaseController {
     @Autowired
     private IProductCodeListInfoService productCodeListInfoService;
 
-/**
- * 查询产品码单详情列表
- */
+    /**
+     * 查询产品码单详情列表
+     */
 //@PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:list')")
-@GetMapping("/list")
-@ApiOperation(value = "查询产品码单详情列表")
-    public TableDataInfo list(ProductCodeListInfo productCodeListInfo)
-    {
+    @GetMapping("/list")
+    @ApiOperation(value = "查询产品码单详情列表")
+    public TableDataInfo list(ProductCodeListInfo productCodeListInfo) {
         startPage();
         List<ProductCodeListInfo> list = productCodeListInfoService.selectProductCodeListInfoList(productCodeListInfo);
         return getDataTable(list);
@@ -57,8 +57,7 @@ public class ProductCodeListInfoController extends BaseController
     @Log(title = "产品码单详情", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     @ApiOperation(value = "导出产品码单详情列表")
-    public void export(HttpServletResponse response, ProductCodeListInfo productCodeListInfo)
-    {
+    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, "产品码单详情数据");
@@ -70,8 +69,7 @@ public class ProductCodeListInfoController extends BaseController
     //@PreAuthorize("@ss.hasPermi('system:ProductCodeListInfo:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取产品码单详情详细信息")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(productCodeListInfoService.selectProductCodeListInfoById(id));
     }
 
@@ -82,8 +80,7 @@ public class ProductCodeListInfoController extends BaseController
     @Log(title = "产品码单详情", businessType = BusinessType.INSERT)
     @PostMapping
     @ApiOperation(value = "新增产品码单详情")
-    public AjaxResult add(@RequestBody List<ProductCodeListInfo> productCodeListInfoList)
-    {
+    public AjaxResult add(@RequestBody List<ProductCodeListInfo> productCodeListInfoList) {
         return toAjax(productCodeListInfoService.insertProductCodeListInfo(productCodeListInfoList));
     }
 
@@ -94,8 +91,7 @@ public class ProductCodeListInfoController extends BaseController
     @Log(title = "产品码单详情", businessType = BusinessType.UPDATE)
     @PutMapping
     @ApiOperation(value = "修改产品码单详情")
-    public AjaxResult edit(@RequestBody ProductCodeListInfo productCodeListInfo)
-    {
+    public AjaxResult edit(@RequestBody ProductCodeListInfo productCodeListInfo) {
         return toAjax(productCodeListInfoService.updateProductCodeListInfo(productCodeListInfo));
     }
 
@@ -106,8 +102,14 @@ public class ProductCodeListInfoController extends BaseController
     @Log(title = "产品码单详情", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     @ApiOperation(value = "删除产品码单详情")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(productCodeListInfoService.deleteProductCodeListInfoByIds(ids));
     }
+
+//    @Log(title = "产品码单详情", businessType = BusinessType.DELETE)
+//    @DeleteMapping("/removeProductCodeASInventory")
+//    @ApiOperation(value = "删除产品码单详情")
+//    public AjaxResult removeInventory(ProductCodeListVO productCodeListVO) {
+//        return toAjax(productCodeListInfoService.deleteProductCodeListInfoByInfo(productCodeListVO));
+//    }
 }

+ 20 - 17
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java

@@ -35,8 +35,7 @@ import com.zkqy.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/system/ProductInventory")
 @Api(value = "/system/ProductInventory", description = "产品库存-接口")
-public class ProductInventoryController extends BaseController
-{
+public class ProductInventoryController extends BaseController {
     @Autowired
     private IProductInventoryService productInventoryService;
 
@@ -46,8 +45,7 @@ public class ProductInventoryController extends BaseController
 //    @PreAuthorize("@ss.hasPermi('system:ProductInventory:list')")
     @GetMapping("/list")
     @ApiOperation(value = "查询产品库存列表")
-    public TableDataInfo list(ProductInventory productInventory)
-    {
+    public TableDataInfo list(ProductInventory productInventory) {
         startPage();
         List<ProductInventory> list = productInventoryService.selectProductInventoryList(productInventory);
         return getDataTable(list);
@@ -60,8 +58,7 @@ public class ProductInventoryController extends BaseController
     @Log(title = "产品库存", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     @ApiOperation(value = "导出产品库存列表")
-    public void export(HttpServletResponse response, ProductInventory productInventory)
-    {
+    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, "产品库存数据");
@@ -73,8 +70,7 @@ public class ProductInventoryController extends BaseController
 //    @PreAuthorize("@ss.hasPermi('system:ProductInventory:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取产品库存详细信息")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(productInventoryService.selectProductInventoryById(id));
     }
 
@@ -85,8 +81,7 @@ public class ProductInventoryController extends BaseController
     @Log(title = "产品库存", businessType = BusinessType.INSERT)
     @PostMapping
     @ApiOperation(value = "新增产品库存")
-    public AjaxResult add(@RequestBody ProductInventory productInventory)
-    {
+    public AjaxResult add(@RequestBody ProductInventory productInventory) {
         return toAjax(productInventoryService.insertProductInventory(productInventory));
     }
 
@@ -97,8 +92,7 @@ public class ProductInventoryController extends BaseController
     @Log(title = "产品库存", businessType = BusinessType.UPDATE)
     @PutMapping
     @ApiOperation(value = "修改产品库存")
-    public AjaxResult edit(@RequestBody ProductInventory productInventory)
-    {
+    public AjaxResult edit(@RequestBody ProductInventory productInventory) {
         return toAjax(productInventoryService.updateProductInventory(productInventory));
     }
 
@@ -109,8 +103,7 @@ public class ProductInventoryController extends BaseController
     @Log(title = "产品库存", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     @ApiOperation(value = "删除产品库存")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(productInventoryService.deleteProductInventoryByIds(ids));
     }
 
@@ -118,7 +111,7 @@ public class ProductInventoryController extends BaseController
      * 产品入库
      */
     @PostMapping("/productStorage")
-    public AjaxResult productStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList){
+    public AjaxResult productStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList) {
         productInventoryService.productStorage(productCodeListVOList);
         return AjaxResult.success();
     }
@@ -127,7 +120,7 @@ public class ProductInventoryController extends BaseController
      * 产品出库
      */
     @PostMapping("/productOutStorage")
-    public AjaxResult productOutStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList){
+    public AjaxResult productOutStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList) {
         productInventoryService.productOutStorage(productCodeListVOList);
         return AjaxResult.success();
     }
@@ -136,10 +129,20 @@ public class ProductInventoryController extends BaseController
      * 通知单出库接口
      */
     @PostMapping("/noticeOutStorage")
-    public AjaxResult noticeOutStorage(@RequestBody ProductInvoice productInvoice){
+    public AjaxResult noticeOutStorage(@RequestBody ProductInvoice productInvoice) {
         productInventoryService.noticeOutStorage(productInvoice);
         return AjaxResult.success();
     }
 
+    /**
+     * 删除错误入库
+     *
+     * @param productCodeListVO
+     * @return
+     */
+    @DeleteMapping("/deleteProductInventory")
+    public AjaxResult deleteProductInventory(@RequestBody ProductCodeListVO productCodeListVO) {
+        return productInventoryService.deleteInventorByProductCodeListVO(productCodeListVO);
+    }
 
 }

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

@@ -84,4 +84,13 @@ public interface ProductOutboundRecordMapper
      * @return
      */
     ProductOutboundRecord statisticsBoxNumSuttle(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("qrCode") String qrCode);
+
+
+    /**
+     * 删除成品出库记录信息
+     *
+     * @param qrCodeId 成品出库记录主键
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordByUUID(String qrCodeId);
 }

+ 18 - 9
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListInfoService.java

@@ -1,19 +1,20 @@
 package com.zkqy.business.service;
 
 import java.util.List;
+
 import com.zkqy.business.domain.ProductCodeListInfo;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
 
 /**
  * 产品码单详情Service接口
- * 
+ *
  * @author zkqy
  * @date 2024-04-07
  */
-public interface IProductCodeListInfoService 
-{
+public interface IProductCodeListInfoService {
     /**
      * 查询产品码单详情
-     * 
+     *
      * @param id 产品码单详情主键
      * @return 产品码单详情
      */
@@ -21,7 +22,7 @@ public interface IProductCodeListInfoService
 
     /**
      * 查询产品码单详情列表
-     * 
+     *
      * @param productCodeListInfo 产品码单详情
      * @return 产品码单详情集合
      */
@@ -29,7 +30,7 @@ public interface IProductCodeListInfoService
 
     /**
      * 新增产品码单详情
-     * 
+     *
      * @param productCodeListInfoList 产品码单详情
      * @return 结果
      */
@@ -37,7 +38,7 @@ public interface IProductCodeListInfoService
 
     /**
      * 修改产品码单详情
-     * 
+     *
      * @param productCodeListInfo 产品码单详情
      * @return 结果
      */
@@ -45,7 +46,7 @@ public interface IProductCodeListInfoService
 
     /**
      * 批量删除产品码单详情
-     * 
+     *
      * @param ids 需要删除的产品码单详情主键集合
      * @return 结果
      */
@@ -53,9 +54,17 @@ public interface IProductCodeListInfoService
 
     /**
      * 删除产品码单详情信息
-     * 
+     *
      * @param id 产品码单详情主键
      * @return 结果
      */
     public int deleteProductCodeListInfoById(Long id);
+
+//    /**
+//     * 批量删除产品码单详情以及库存
+//     *
+//     * @param productCodeListVO 需要删除的产品码单详情信息
+//     * @return 结果
+//     */
+//    public int deleteProductCodeListInfoByInfo(ProductCodeListVO productCodeListVO);
 }

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

@@ -3,6 +3,7 @@ package com.zkqy.business.service;
 import java.util.List;
 import com.zkqy.business.domain.ProductCodeList;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.common.core.domain.AjaxResult;
 
 /**
  * 产品码单Service接口
@@ -80,4 +81,12 @@ public interface IProductCodeListService
      */
     ProductCodeListVO getProductCodeListById(Long id);
 
+    /**
+     * 批量删除产品码单详情以及库存
+     *
+     * @param productCodeListVO 需要删除的产品码单详情信息
+     * @return 结果
+     */
+    public AjaxResult deleteProductCodeListInfoByInfo(ProductCodeListVO productCodeListVO);
+
 }

+ 13 - 9
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java

@@ -1,6 +1,7 @@
 package com.zkqy.business.service;
 
 import java.util.List;
+
 import com.zkqy.business.domain.ProductInventory;
 import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
@@ -8,15 +9,14 @@ import com.zkqy.common.core.domain.AjaxResult;
 
 /**
  * 产品库存Service接口
- * 
+ *
  * @author zkqy
  * @date 2024-04-09
  */
-public interface IProductInventoryService 
-{
+public interface IProductInventoryService {
     /**
      * 查询产品库存
-     * 
+     *
      * @param id 产品库存主键
      * @return 产品库存
      */
@@ -24,7 +24,7 @@ public interface IProductInventoryService
 
     /**
      * 查询产品库存列表
-     * 
+     *
      * @param productInventory 产品库存
      * @return 产品库存集合
      */
@@ -32,7 +32,7 @@ public interface IProductInventoryService
 
     /**
      * 新增产品库存
-     * 
+     *
      * @param productInventory 产品库存
      * @return 结果
      */
@@ -40,7 +40,7 @@ public interface IProductInventoryService
 
     /**
      * 修改产品库存
-     * 
+     *
      * @param productInventory 产品库存
      * @return 结果
      */
@@ -48,7 +48,7 @@ public interface IProductInventoryService
 
     /**
      * 批量删除产品库存
-     * 
+     *
      * @param ids 需要删除的产品库存主键集合
      * @return 结果
      */
@@ -56,7 +56,7 @@ public interface IProductInventoryService
 
     /**
      * 删除产品库存信息
-     * 
+     *
      * @param id 产品库存主键
      * @return 结果
      */
@@ -74,8 +74,12 @@ public interface IProductInventoryService
 
     /**
      * 通知单出库
+     *
      * @param productInvoice
      * @return
      */
     AjaxResult noticeOutStorage(ProductInvoice productInvoice);
+
+
+    public AjaxResult deleteInventorByProductCodeListVO(ProductCodeListVO productCodeListVO);
 }

+ 18 - 9
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java

@@ -1,20 +1,20 @@
 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 
-{
+public interface IProductOutboundRecordService {
     /**
      * 查询成品出库记录
-     * 
+     *
      * @param id 成品出库记录主键
      * @return 成品出库记录
      */
@@ -22,7 +22,7 @@ public interface IProductOutboundRecordService
 
     /**
      * 查询成品出库记录列表
-     * 
+     *
      * @param vo 成品出库记录
      * @return 成品出库记录集合
      */
@@ -30,7 +30,7 @@ public interface IProductOutboundRecordService
 
     /**
      * 新增成品出库记录
-     * 
+     *
      * @param productOutboundRecord 成品出库记录
      * @return 结果
      */
@@ -38,7 +38,7 @@ public interface IProductOutboundRecordService
 
     /**
      * 修改成品出库记录
-     * 
+     *
      * @param productOutboundRecord 成品出库记录
      * @return 结果
      */
@@ -46,7 +46,7 @@ public interface IProductOutboundRecordService
 
     /**
      * 批量删除成品出库记录
-     * 
+     *
      * @param ids 需要删除的成品出库记录主键集合
      * @return 结果
      */
@@ -54,7 +54,7 @@ public interface IProductOutboundRecordService
 
     /**
      * 删除成品出库记录信息
-     * 
+     *
      * @param id 成品出库记录主键
      * @return 结果
      */
@@ -62,9 +62,18 @@ public interface IProductOutboundRecordService
 
     /**
      * 查询是否已出库
+     *
      * @param qrCode
      * @param qrCodeId
      * @return
      */
     ProductOutboundRecord whetherStorage(String qrCode, String qrCodeId);
+
+    /**
+     * 删除成品出库记录信息
+     *
+     * @param qrCodeId 成品出库记录主键
+     * @return 结果
+     */
+    public int deleteProductOutboundRecordByUUID(String qrCodeId);
 }

+ 28 - 21
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListInfoServiceImpl.java

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

+ 58 - 59
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java

@@ -3,16 +3,20 @@ package com.zkqy.business.service.impl;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 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.business.service.IProductInventoryService;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.entity.SysDictData;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
 import com.zkqy.common.utils.StringUtils;
+import com.zkqy.system.mapper.SysDictDataMapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -23,13 +27,12 @@ import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 产品码单Service业务层处理
- * 
+ *
  * @author zkqy
  * @date 2024-04-01
  */
 @Service
-public class ProductCodeListServiceImpl implements IProductCodeListService 
-{
+public class ProductCodeListServiceImpl implements IProductCodeListService {
     @Autowired
     private ProductCodeListMapper productCodeListMapper;
 
@@ -39,19 +42,24 @@ public class ProductCodeListServiceImpl implements IProductCodeListService
     @Autowired
     private ProductWarehousingRecordMapper productWarehousingRecordMapper;
 
+    @Autowired
+    private SysDictDataMapper dictDataMapper;
+
+    @Autowired
+    private IProductInventoryService iProductInventoryService;
+
 
     /**
      * 查询产品码单
-     * 
+     *
      * @param id 产品码单主键
      * @return 产品码单
      */
     @Override
-    public ProductCodeListVO selectProductCodeListById(Long id)
-    {
+    public ProductCodeListVO selectProductCodeListById(Long id) {
         ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(id);
         ProductCodeListVO productCodeListVO = new ProductCodeListVO();
-        BeanUtils.copyProperties(productCodeList,productCodeListVO);
+        BeanUtils.copyProperties(productCodeList, productCodeListVO);
 //        ProductCodeListInfo productCodeListInfo = new ProductCodeListInfo();
 //        productCodeListInfo.setCodeListId(id);
 //        List<ProductCodeListInfo> productCodeListInfoList = productCodeListInfoMapper.selectProductCodeListInfoList(productCodeListInfo);
@@ -61,87 +69,71 @@ public class ProductCodeListServiceImpl implements IProductCodeListService
 
     /**
      * 查询产品码单列表
-     * 
+     *
      * @param vo 产品码单
      * @return 产品码单
      */
     @Override
-    public List<ProductCodeListVO> selectProductCodeListList(ProductCodeListVO vo)
-    {
+    public List<ProductCodeListVO> selectProductCodeListList(ProductCodeListVO vo) {
         List<ProductCodeListVO> productCodeListVOS = productCodeListMapper.selectProductCodeListList(vo);
-        for (ProductCodeListVO vo1 : productCodeListVOS){
+        for (ProductCodeListVO vo1 : productCodeListVOS) {
             vo1.setTotalSuttle(handlingWeight(vo1.getTotalSuttle()));
         }
         return productCodeListVOS;
     }
 
-    public Double handlingWeight(Double weight){
+    public Double handlingWeight(Double weight) {
         DecimalFormat df = new DecimalFormat("0.00");
         return Double.parseDouble(df.format(weight));
     }
 
     /**
      * 新增产品码单
-     * 
+     *
      * @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);
-            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();
-//        }
+    public Long insertProductCodeList(ProductCodeListVO vo) {
+        //新增产品码单数据
+        ProductCodeList productCodeList = new ProductCodeList();
+        BeanUtils.copyProperties(vo, productCodeList);
+        productCodeList.setCreateTime(DateUtils.getNowDate());
+        productCodeList.setCreateBy(SecurityUtils.getUsername());
+        productCodeList.setCreateById(SecurityUtils.getUserId());
+        productCodeListMapper.insertProductCodeList(productCodeList);
+        // 直接入库--
+        vo.getMachineTool();  // 当前机台
+        String bumen = vo.getMachineTool().split("-")[0];
+        List<SysDictData> dictDataList = dictDataMapper.selectDictDataByType("section_stash");
+        dictDataList.forEach(item -> {
+            if (item.getDictLabel().equals(bumen)) {
+                vo.setWarehouseId(Long.valueOf(item.getDictValue()));// 入库仓库ID
+            }
+        });
+        List<ProductCodeListVO> productCodeListVOList = new ArrayList<>();
+        productCodeListVOList.add(vo);
+        iProductInventoryService.productStorage(productCodeListVOList);
+        return productCodeList.getId();
     }
 
     /**
      * 修改产品码单
-     * 
+     *
      * @param vo 产品码单
      * @return 结果
      */
     @Override
     @Transactional
-    public int updateProductCodeList(ProductCodeListVO vo)
-    {
+    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);
+        BeanUtils.copyProperties(vo, productCodeList);
         // 修改产品码单详情
 //        LinkedList<ProductCodeListInfo> addProductCodeListInfoList = new LinkedList<>();
 //        LinkedList<ProductCodeListInfo> editProductCodeListInfoList = new LinkedList<>();
@@ -184,25 +176,23 @@ public class ProductCodeListServiceImpl implements IProductCodeListService
 
     /**
      * 批量删除产品码单
-     * 
+     *
      * @param ids 需要删除的产品码单主键
      * @return 结果
      */
     @Override
-    public int deleteProductCodeListByIds(String[] ids)
-    {
+    public int deleteProductCodeListByIds(String[] ids) {
         return productCodeListMapper.deleteProductCodeListByIds(ids);
     }
 
     /**
      * 删除产品码单信息
-     * 
+     *
      * @param id 产品码单主键
      * @return 结果
      */
     @Override
-    public int deleteProductCodeListById(Long id)
-    {
+    public int deleteProductCodeListById(Long id) {
         return productCodeListMapper.deleteProductCodeListById(id);
     }
 
@@ -211,13 +201,15 @@ public class ProductCodeListServiceImpl implements IProductCodeListService
         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)){
+        if (StringUtils.isNotEmpty(maxCodeList) && Long.parseLong(maxCodeList) >= Long.parseLong(nowCodeList)) {
             return Long.parseLong(maxCodeList) + 1L + "";
         }
         return nowCodeList;
@@ -233,4 +225,11 @@ public class ProductCodeListServiceImpl implements IProductCodeListService
         return productCodeListMapper.getProductCodeListById(id);
     }
 
+    @Override
+    public AjaxResult deleteProductCodeListInfoByInfo(ProductCodeListVO productCodeListVO) {
+        productCodeListInfoMapper.deleteProductCodeListInfoById(productCodeListVO.getId());// 删除码单
+        // 删除库存
+        return iProductInventoryService.deleteInventorByProductCodeListVO(productCodeListVO);
+    }
+
 }

+ 79 - 51
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -17,13 +17,12 @@ import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 产品库存Service业务层处理
- * 
+ *
  * @author zkqy
  * @date 2024-04-09
  */
 @Service
-public class ProductInventoryServiceImpl implements IProductInventoryService 
-{
+public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Autowired
     private ProductInventoryMapper productInventoryMapper;
 
@@ -45,75 +44,69 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
 
     /**
      * 查询产品库存
-     * 
+     *
      * @param id 产品库存主键
      * @return 产品库存
      */
     @Override
-    public ProductInventory selectProductInventoryById(Long id)
-    {
+    public ProductInventory selectProductInventoryById(Long id) {
         return productInventoryMapper.selectProductInventoryById(id);
     }
 
     /**
      * 查询产品库存列表
-     * 
+     *
      * @param productInventory 产品库存
      * @return 产品库存
      */
     @Override
-    public List<ProductInventory> selectProductInventoryList(ProductInventory productInventory)
-    {
+    public List<ProductInventory> selectProductInventoryList(ProductInventory productInventory) {
         return productInventoryMapper.selectProductInventoryList(productInventory);
     }
 
     /**
      * 新增产品库存
-     * 
+     *
      * @param productInventory 产品库存
      * @return 结果
      */
     @Override
-    public int insertProductInventory(ProductInventory productInventory)
-    {
+    public int insertProductInventory(ProductInventory productInventory) {
         productInventory.setCreateTime(DateUtils.getNowDate());
         return productInventoryMapper.insertProductInventory(productInventory);
     }
 
     /**
      * 修改产品库存
-     * 
+     *
      * @param productInventory 产品库存
      * @return 结果
      */
     @Override
-    public int updateProductInventory(ProductInventory productInventory)
-    {
+    public int updateProductInventory(ProductInventory productInventory) {
         productInventory.setUpdateTime(DateUtils.getNowDate());
         return productInventoryMapper.updateProductInventory(productInventory);
     }
 
     /**
      * 批量删除产品库存
-     * 
+     *
      * @param ids 需要删除的产品库存主键
      * @return 结果
      */
     @Override
-    public int deleteProductInventoryByIds(Long[] ids)
-    {
+    public int deleteProductInventoryByIds(Long[] ids) {
         return productInventoryMapper.deleteProductInventoryByIds(ids);
     }
 
     /**
      * 删除产品库存信息
-     * 
+     *
      * @param id 产品库存主键
      * @return 结果
      */
     @Override
-    public int deleteProductInventoryById(Long id)
-    {
+    public int deleteProductInventoryById(Long id) {
         return productInventoryMapper.deleteProductInventoryById(id);
     }
 
@@ -121,17 +114,17 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
     @Transactional
     public void productStorage(List<ProductCodeListVO> productCodeListVOList) {
 
-        for (ProductCodeListVO vo : productCodeListVOList){
+        for (ProductCodeListVO vo : productCodeListVOList) {
             // 日志
             ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
             //校验当前货品是否已入库,已入库跳过本次循环
             ProductWarehousingRecord productWarehousingRecord1 =
                     productWarehousingRecordMapper.selectProductWarehousingRecordWhetherExist(productCodeList.getQrCode(), vo.getQrCodeId());
-            if(productWarehousingRecord1 != null){
+            if (productWarehousingRecord1 != null) {
                 continue;
             }
             ProductWarehousingRecord productWarehousingRecord = new ProductWarehousingRecord();
-            BeanUtils.copyProperties(productCodeList,productWarehousingRecord);
+            BeanUtils.copyProperties(productCodeList, productWarehousingRecord);
             productWarehousingRecord.setQrCodeId(vo.getQrCodeId());
             productWarehousingRecord.setCanisterNum(vo.getCanisterNum());//筒数
             productWarehousingRecord.setSuttle(vo.getSuttle());//净重
@@ -148,11 +141,11 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
             // 库存
             //查询当前库存是否存在,如果存在则更新,如果不存在则新增
             ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(vo.getQrCode());
-            if(productInventory != null){
+            if (productInventory != null) {
                 //计算合计箱数、筒数、净重、毛重
                 ProductInventory editProductInventory = new ProductInventory();
                 editProductInventory.setId(productInventory.getId());
-                editProductInventory.setTotalCanisterNum( productInventory.getTotalCanisterNum() == null ? vo.getCanisterNum() : productInventory.getTotalCanisterNum() + vo.getCanisterNum());//合计筒数数
+                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");
@@ -163,9 +156,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
                 String grossWeight1 = df.format(grossWeight);
                 editProductInventory.setTotalGrossWeight(Double.parseDouble(grossWeight1));//合计毛重
                 productInventoryMapper.updateProductInventory(editProductInventory);
-            }else {
+            } else {
                 ProductInventory addProductInventory = new ProductInventory();
-                BeanUtils.copyProperties(productCodeList,addProductInventory);
+                BeanUtils.copyProperties(productCodeList, addProductInventory);
                 addProductInventory.setWarehouseId(vo.getWarehouseId());
                 addProductInventory.setTotalCanisterNum(vo.getCanisterNum());//合计筒数
                 addProductInventory.setTotalBoxNum(1);//合计箱数
@@ -183,18 +176,18 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
     @Transactional
     public AjaxResult productOutStorage(List<ProductCodeListVO> productCodeListVOList) {
 
-        for (ProductCodeListVO vo : productCodeListVOList){
+        for (ProductCodeListVO vo : productCodeListVOList) {
 
             // 出库日志
             ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
 
             // 校验当前货品是否已出库,已出库跳过本次循环
             ProductOutboundRecord productOutboundRecord1 = productOutboundRecordMapper.selectProductOutboundRecordWhetherExist(vo.getQrCode(), vo.getQrCodeId());
-            if(productOutboundRecord1 != null){
+            if (productOutboundRecord1 != null) {
                 continue;
             }
             ProductOutboundRecord productOutboundRecord = new ProductOutboundRecord();
-            BeanUtils.copyProperties(productCodeList,productOutboundRecord);
+            BeanUtils.copyProperties(productCodeList, productOutboundRecord);
             //二维码唯一标识
             productOutboundRecord.setQrCodeId(vo.getQrCodeId());
             productOutboundRecord.setCanisterNum(vo.getCanisterNum());//筒数
@@ -213,27 +206,27 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
             ProductInventory editProductInventory = new ProductInventory();
             editProductInventory.setId(productInventory.getId());
             //筒数
-            if(productInventory.getTotalCanisterNum() - vo.getCanisterNum() < 0){
+            if (productInventory.getTotalCanisterNum() - vo.getCanisterNum() < 0) {
                 return AjaxResult.error("当前库存筒数不足");
-            }else {
+            } else {
                 editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - vo.getCanisterNum());
             }
             //箱数
-            if(productInventory.getTotalBoxNum() - 1 < 0){
+            if (productInventory.getTotalBoxNum() - 1 < 0) {
                 return AjaxResult.error("当前库存箱数不足");
-            }else {
+            } else {
                 editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
             }
             //净重
-            if(productInventory.getTotalSuttle() - vo.getSuttle() < 0){
+            if (productInventory.getTotalSuttle() - vo.getSuttle() < 0) {
                 return AjaxResult.error("当前库存净重不足");
-            }else {
+            } else {
                 editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - vo.getSuttle()));
             }
             //毛重
-            if (productInventory.getTotalGrossWeight() - vo.getGrossWeight() < 0){
+            if (productInventory.getTotalGrossWeight() - vo.getGrossWeight() < 0) {
                 return AjaxResult.error("当前库存毛重不足");
-            }else {
+            } else {
                 editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - vo.getGrossWeight()));
             }
             productInventoryMapper.updateProductInventory(editProductInventory);
@@ -262,10 +255,10 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
         List<ProductHandsetOutboundRecord> productHandsetOutboundRecords =
                 productHandsetOutboundRecordMapper.selectProductHandsetOutboundRecordList(productHandsetOutboundRecord);
         // 循环插入出库记录
-        for (ProductHandsetOutboundRecord productHandsetOutboundRecord1 : productHandsetOutboundRecords){
+        for (ProductHandsetOutboundRecord productHandsetOutboundRecord1 : productHandsetOutboundRecords) {
 
             ProductOutboundRecord productOutboundRecord = new ProductOutboundRecord();
-            BeanUtils.copyProperties(productHandsetOutboundRecord1,productOutboundRecord);
+            BeanUtils.copyProperties(productHandsetOutboundRecord1, productOutboundRecord);
             productOutboundRecord.setWarehousingTime(productInvoice.getDeliveryDate());
             productOutboundRecord.setDepositor(productInvoice.getDeliveryClerk());
             productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
@@ -275,27 +268,27 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
             ProductInventory editProductInventory = new ProductInventory();
             editProductInventory.setId(productInventory.getId());
             //筒数
-            if(productInventory.getTotalCanisterNum() - productHandsetOutboundRecord1.getCanisterNum() < 0){
+            if (productInventory.getTotalCanisterNum() - productHandsetOutboundRecord1.getCanisterNum() < 0) {
                 return AjaxResult.error("当前库存筒数不足");
-            }else {
+            } else {
                 editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - productHandsetOutboundRecord1.getCanisterNum());
             }
             //箱数
-            if(productInventory.getTotalBoxNum() - 1 < 0){
+            if (productInventory.getTotalBoxNum() - 1 < 0) {
                 return AjaxResult.error("当前库存箱数不足");
-            }else {
+            } else {
                 editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
             }
             //净重
-            if(productInventory.getTotalSuttle() - productHandsetOutboundRecord1.getSuttle() < 0){
+            if (productInventory.getTotalSuttle() - productHandsetOutboundRecord1.getSuttle() < 0) {
                 return AjaxResult.error("当前库存净重不足");
-            }else {
+            } else {
                 editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - productHandsetOutboundRecord1.getSuttle()));
             }
             //毛重
-            if (productInventory.getTotalGrossWeight() - productHandsetOutboundRecord1.getGrossWeight() < 0){
+            if (productInventory.getTotalGrossWeight() - productHandsetOutboundRecord1.getGrossWeight() < 0) {
                 return AjaxResult.error("当前库存毛重不足");
-            }else {
+            } else {
                 editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - productHandsetOutboundRecord1.getGrossWeight()));
             }
             productInventoryMapper.updateProductInventory(editProductInventory);
@@ -304,10 +297,45 @@ public class ProductInventoryServiceImpl implements IProductInventoryService
         return AjaxResult.success();
     }
 
+    @Override
+    public AjaxResult deleteInventorByProductCodeListVO(ProductCodeListVO productCodeListVO) {
+        //出库   减 箱数、筒数、净重、毛重,
+        //得到当前库存
+        ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(productCodeListVO.getQrCode());
+        ProductInventory editProductInventory = new ProductInventory();
+        editProductInventory.setId(productInventory.getId());
+        //筒数
+        if (productInventory.getTotalCanisterNum() - productCodeListVO.getCanisterNum() < 0) {
+            return AjaxResult.error("当前库存筒数不足");
+        } else {
+            editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - productCodeListVO.getCanisterNum());
+        }
+        //箱数
+        if (productInventory.getTotalBoxNum() - 1 < 0) {
+            return AjaxResult.error("当前库存箱数不足");
+        } else {
+            editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
+        }
+        //净重
+        if (productInventory.getTotalSuttle() - productCodeListVO.getSuttle() < 0) {
+            return AjaxResult.error("当前库存净重不足");
+        } else {
+            editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - productCodeListVO.getSuttle()));
+        }
+        //毛重
+        if (productInventory.getTotalGrossWeight() - productCodeListVO.getGrossWeight() < 0) {
+            return AjaxResult.error("当前库存毛重不足");
+        } else {
+            editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - productCodeListVO.getGrossWeight()));
+        }
+        // 删除入库记录
+        productOutboundRecordMapper.deleteProductOutboundRecordByUUID(productCodeListVO.getQrCodeId());
+        return AjaxResult.success(productInventoryMapper.updateProductInventory(editProductInventory));
+    }
+
     //保留两位小数
-    public Double handlingWeight(Double weight){
+    public Double handlingWeight(Double weight) {
         DecimalFormat df = new DecimalFormat("0.00");
         return Double.parseDouble(df.format(weight));
     }
-
 }

+ 20 - 22
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java

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

+ 164 - 111
zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml

@@ -1,133 +1,173 @@
 <?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">
+        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"    />
+        <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"/>
         <result property="noticeNumber" column="notice_number"/>
         <result property="productColour" column="product_colour"/>
     </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="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="warehousingTime" column="warehousing_time"/>
+        <result property="depositor" column="depositor"/>
         <result property="warehouseId" column="warehouse_id"/>
         <result property="productColour" column="product_colour"/>
     </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,notice_number,product_colour from {DBNAME}.product_outbound_record
+        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,
+               notice_number,
+               product_colour
+        from {DBNAME}.product_outbound_record
     </sql>
 
-    <select id="selectProductOutboundRecordList" parameterType="com.zkqy.business.domain.ProductOutboundRecord" resultMap="ProductOutboundRecordResult">
+    <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>
+            <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 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>
@@ -162,7 +202,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="noticeNumber != null">notice_number,</if>
             <if test="productColour != null">product_colour,</if>
             del_flag
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="qrCode != null">#{qrCode},</if>
             <if test="qrCodeId != null">#{qrCodeId},</if>
@@ -196,7 +236,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="noticeNumber != null">#{noticeNumber},</if>
             <if test="productColour != null">#{productColour},</if>
             '0'
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateProductOutboundRecord" parameterType="com.zkqy.business.domain.ProductOutboundRecord">
@@ -238,17 +278,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteProductOutboundRecordById" parameterType="Long">
-        delete from product_outbound_record where id = #{id}
+        delete
+        from product_outbound_record
+        where id = #{id}
     </delete>
 
     <delete id="deleteProductOutboundRecordByIds" parameterType="String">
-        delete from product_outbound_record where id in 
+        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 id="selectList" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO"
+            resultMap="ProductCodeListResultVO">
         SELECT
         r.qr_code,
         p.product_name,
@@ -270,10 +313,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
         r.del_flag = '0'
         <if test="qrCode != null and qrCode != ''">and r.qr_code like concat('%', #{qrCode}, '%')</if>
-        <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>
+        <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>
@@ -284,7 +327,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="statisticsBoxNumSuttle" resultType="com.zkqy.business.domain.ProductOutboundRecord">
-        select count(1) as boxNum , sum(suttle) as suttle from {DBNAME}.product_outbound_record where product_id = #{productId} and notice_number = #{noticeNumber} and qr_code = #{qrCode}
+        select count(1) as boxNum, sum(suttle) as suttle
+        from {DBNAME}.product_outbound_record
+        where product_id = #{productId}
+          and notice_number = #{noticeNumber}
+          and qr_code = #{qrCode}
     </select>
 
+    <delete id="deleteProductOutboundRecordByUUID" parameterType="string">
+        delete
+        from product_outbound_record
+        where qr_code_id = #{qrCodeId}
+    </delete>
+
 </mapper>

+ 2 - 10
zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml

@@ -248,20 +248,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectList" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
         SELECT
-            r.qr_code,
+            r.*,
             p.product_name,
             p.product_specifications,
             r.product_colour as 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,
-            r.remark
+            sum( r.gross_weight ) AS total_gross_weight
         FROM
         {DBNAME}.product_warehousing_record r
                 LEFT JOIN {DBNAME}.production p ON r.product_id = p.id

+ 11 - 1
zkqy-ui/src/api/system/ProductWarehousingRecord.js

@@ -51,4 +51,14 @@ export function ProductOutboundRecord(query) {
     method: 'get',
     params: query
   })
-}
+}
+
+
+// 删除成品入库记录
+export function deleteProductInventory(data) {
+  return request({
+    url: '/system/ProductInventory/deleteProductInventory',
+    method: 'delete',
+    data: data
+  })
+}

+ 58 - 52
zkqy-ui/src/views/orderMange/productInRecord/index.vue

@@ -60,10 +60,12 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+        >搜索
+        </el-button
         >
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
+        >重置
+        </el-button
         >
       </el-form-item>
     </el-form>
@@ -125,27 +127,28 @@
       <!-- @selection-change="handleSelectionChange" -->
       <!-- <el-table-column type="selection" width="55" align="center" /> -->
       <!-- <el-table-column label="序号" type="index" align="center" /> -->
-      <el-table-column label="码单号" align="center" prop="qrCode" />
-      <el-table-column label="品名" align="center" prop="productName" />
+      <el-table-column label="码单号" align="center" prop="qrCode"/>
+      <el-table-column label="箱号" align="center" prop="boxNum"/>
+      <el-table-column label="品名" align="center" prop="productName"/>
       <el-table-column
         label="规格"
         align="center"
         prop="productSpecifications"
       />
-      <el-table-column label="色泽" align="center" prop="productColor" />
+      <el-table-column label="色泽" align="center" prop="productColor"/>
 
-      <el-table-column label="批号" align="center" prop="lotNum" />
-      <el-table-column label="等级" align="center" prop="levels" />
+      <el-table-column label="批号" align="center" prop="lotNum"/>
+      <el-table-column label="等级" align="center" prop="levels"/>
       <el-table-column label="包装" align="center" prop="packaging">
         <template slot-scope="scope">
           {{ getDictLabel(scope.row.packaging, dict.type.packaging_type) }}
         </template>
       </el-table-column>
-      <el-table-column label="箱数" align="center" prop="totalBoxNum" />
+      <el-table-column label="箱数" align="center" prop="totalBoxNum"/>
       <!-- <el-table-column label="筒数" align="center" prop="canisterNum" /> -->
 
-      <el-table-column label="毛重" align="center" prop="totalGrossWeight" />
-      <el-table-column label="班次" align="center" prop="workShifts" />
+      <el-table-column label="毛重" align="center" prop="totalGrossWeight"/>
+      <el-table-column label="班次" align="center" prop="workShifts"/>
       <!-- <el-table-column label="净重" align="center" prop="suttle" /> -->
       <el-table-column
         label="生产日期"
@@ -187,10 +190,9 @@
           <span>{{ parseTime(scope.row.warehousingTime, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="入库人" align="center" prop="depositor" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="入库人" align="center" prop="depositor"/>
+      <el-table-column label="备注" align="center" prop="remark"/>
       <el-table-column
-        v-if="false"
         label="操作"
         align="center"
         class-name="small-padding fixed-width"
@@ -201,16 +203,17 @@
               操作<i class="el-icon-arrow-down el-icon--right"></i>
             </el-button>
             <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item>
-                <el-button
-                  size="mini"
-                  type="text"
-                  icon="el-icon-edit"
-                  @click="handleUpdate(scope.row)"
-                  v-hasPermi="['system:ProductWarehousingRecord:edit']"
-                  >修改</el-button
-                >
-              </el-dropdown-item>
+              <!--              <el-dropdown-item>-->
+              <!--                <el-button-->
+              <!--                  size="mini"-->
+              <!--                  type="text"-->
+              <!--                  icon="el-icon-edit"-->
+              <!--                  @click="handleUpdate(scope.row)"-->
+              <!--                  v-hasPermi="['system:ProductWarehousingRecord:edit']"-->
+              <!--                >修改-->
+              <!--                </el-button-->
+              <!--                >-->
+              <!--              </el-dropdown-item>-->
               <el-dropdown-item>
                 <el-button
                   size="mini"
@@ -218,7 +221,8 @@
                   icon="el-icon-delete"
                   @click="handleDelete(scope.row)"
                   v-hasPermi="['system:ProductWarehousingRecord:remove']"
-                  >删除</el-button
+                >删除
+                </el-button
                 >
               </el-dropdown-item>
             </el-dropdown-menu>
@@ -239,28 +243,28 @@
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="码单号" prop="qrCode">
-          <el-input v-model="form.qrCode" placeholder="请输入码单号" />
+          <el-input v-model="form.qrCode" placeholder="请输入码单号"/>
         </el-form-item>
         <el-form-item label="码单唯一标识" prop="qrCodeId">
-          <el-input v-model="form.qrCodeId" placeholder="请输入码单唯一标识" />
+          <el-input v-model="form.qrCodeId" placeholder="请输入码单唯一标识"/>
         </el-form-item>
         <el-form-item label="批号" prop="lotNum">
-          <el-input v-model="form.lotNum" placeholder="请输入批号" />
+          <el-input v-model="form.lotNum" placeholder="请输入批号"/>
         </el-form-item>
         <el-form-item label="货品编号" prop="productId">
-          <el-input v-model="form.productId" placeholder="请输入货品编号" />
+          <el-input v-model="form.productId" placeholder="请输入货品编号"/>
         </el-form-item>
         <el-form-item label="等级" prop="levels">
-          <el-input v-model="form.levels" placeholder="请输入等级" />
+          <el-input v-model="form.levels" placeholder="请输入等级"/>
         </el-form-item>
         <el-form-item label="筒数" prop="canisterNum">
-          <el-input v-model="form.canisterNum" placeholder="请输入筒数" />
+          <el-input v-model="form.canisterNum" placeholder="请输入筒数"/>
         </el-form-item>
         <el-form-item label="箱数" prop="boxNum">
-          <el-input v-model="form.boxNum" placeholder="请输入箱数" />
+          <el-input v-model="form.boxNum" placeholder="请输入箱数"/>
         </el-form-item>
         <el-form-item label="净重" prop="suttle">
-          <el-input v-model="form.suttle" placeholder="请输入净重" />
+          <el-input v-model="form.suttle" placeholder="请输入净重"/>
         </el-form-item>
         <el-form-item label="生产日期" prop="productionDate">
           <el-date-picker
@@ -273,16 +277,16 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item label="机台" prop="machineTool">
-          <el-input v-model="form.machineTool" placeholder="请输入机台" />
+          <el-input v-model="form.machineTool" placeholder="请输入机台"/>
         </el-form-item>
         <el-form-item label="毛重" prop="grossWeight">
-          <el-input v-model="form.grossWeight" placeholder="请输入毛重" />
+          <el-input v-model="form.grossWeight" placeholder="请输入毛重"/>
         </el-form-item>
         <el-form-item label="包装" prop="packaging">
-          <el-input v-model="form.packaging" placeholder="请输入包装" />
+          <el-input v-model="form.packaging" placeholder="请输入包装"/>
         </el-form-item>
         <el-form-item label="班次" prop="workShifts">
-          <el-input v-model="form.workShifts" placeholder="请输入班次" />
+          <el-input v-model="form.workShifts" placeholder="请输入班次"/>
         </el-form-item>
         <el-form-item label="外贸号" prop="foreignTradeNumber">
           <el-input
@@ -291,22 +295,22 @@
           />
         </el-form-item>
         <el-form-item label="筒重" prop="canisterWeight">
-          <el-input v-model="form.canisterWeight" placeholder="请输入筒重" />
+          <el-input v-model="form.canisterWeight" placeholder="请输入筒重"/>
         </el-form-item>
         <el-form-item label="箱重/车重" prop="boxWeight">
-          <el-input v-model="form.boxWeight" placeholder="请输入箱重/车重" />
+          <el-input v-model="form.boxWeight" placeholder="请输入箱重/车重"/>
         </el-form-item>
         <el-form-item label="管色" prop="tubeColor">
-          <el-input v-model="form.tubeColor" placeholder="请输入管色" />
+          <el-input v-model="form.tubeColor" placeholder="请输入管色"/>
         </el-form-item>
         <el-form-item label="端口" prop="comPort">
-          <el-input v-model="form.comPort" placeholder="请输入端口" />
+          <el-input v-model="form.comPort" placeholder="请输入端口"/>
         </el-form-item>
         <el-form-item label="打印格式" prop="printFormat">
-          <el-input v-model="form.printFormat" placeholder="请输入打印格式" />
+          <el-input v-model="form.printFormat" placeholder="请输入打印格式"/>
         </el-form-item>
         <el-form-item label="库位" prop="storageLocation">
-          <el-input v-model="form.storageLocation" placeholder="请输入库位" />
+          <el-input v-model="form.storageLocation" placeholder="请输入库位"/>
         </el-form-item>
         <el-form-item label="区域编号" prop="warehouseregionId">
           <el-input
@@ -322,13 +326,13 @@
           />
         </el-form-item>
         <el-form-item label="删除标志" prop="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+          <el-input v-model="form.delFlag" placeholder="请输入删除标志"/>
         </el-form-item>
         <el-form-item label="创建者编号" prop="createById">
-          <el-input v-model="form.createById" placeholder="请输入创建者编号" />
+          <el-input v-model="form.createById" placeholder="请输入创建者编号"/>
         </el-form-item>
         <el-form-item label="更新者编号" prop="updateById">
-          <el-input v-model="form.updateById" placeholder="请输入更新者编号" />
+          <el-input v-model="form.updateById" placeholder="请输入更新者编号"/>
         </el-form-item>
         <el-form-item label="入库时间" prop="warehousingTime">
           <el-date-picker
@@ -341,7 +345,7 @@
           </el-date-picker>
         </el-form-item>
         <el-form-item label="入库人" prop="depositor">
-          <el-input v-model="form.depositor" placeholder="请输入入库人" />
+          <el-input v-model="form.depositor" placeholder="请输入入库人"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -358,9 +362,9 @@ import {
   getProductWarehousingRecord,
   delProductWarehousingRecord,
   addProductWarehousingRecord,
-  updateProductWarehousingRecord,
+  updateProductWarehousingRecord, deleteProductInventory,
 } from "@/api/system/ProductWarehousingRecord";
-import { getDictLabel } from "@/utils/other";
+import {getDictLabel} from "@/utils/other";
 
 export default {
   name: "ProductWarehousingRecord",
@@ -535,17 +539,19 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
+      // const ids = row.id || this.ids;
       this.$modal
-        .confirm('是否确认删除成品入库记录编号为"' + ids + '"的数据项?')
+        .confirm('是否确认删除码单号为"' + row.qrCode + "箱号为:" + row.boxNum + '"的数据项?')
         .then(function () {
-          return delProductWarehousingRecord(ids);
+          return deleteProductInventory(row);
         })
         .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
         })
-        .catch(() => {});
+        .catch(() => {
+          this.$modal.msgError("删除失败!请检查库存");
+        });
     },
     /** 导出按钮操作 */
     handleExport() {