Browse Source

仓库删除增加逻辑限制

guq 7 years ago
parent
commit
16b4f2d7b0

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -31,6 +31,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     REPEAT_NAME(79501, "名称重复"),
     REPEAT_NAME(79501, "名称重复"),
     NO_DATA(79998, "未找到数据"),
     NO_DATA(79998, "未找到数据"),
     ILLEGAL_ID(79999, "id不正确"),
     ILLEGAL_ID(79999, "id不正确"),
+    PRODUCT_HAS_WAREHOUSE(79502, "存在物料默认仓库资料为该仓库资料,无法删除"),
+    PRODUCTWH_HAS_WAREHOUSE(79503, "该仓库资料存在库存,无法删除"),
 
 
 
 
 
 

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/WarehouseController.java

@@ -107,7 +107,7 @@ public class WarehouseController {
      */
      */
     @PostMapping("/delete/{id}")
     @PostMapping("/delete/{id}")
     public Result delete(@PathVariable("id") Long id){
     public Result delete(@PathVariable("id") Long id){
-        warehouseService.removeByPrimaryKey(id);
+        warehouseService.delete(id);
         return Result.success();
         return Result.success();
     }
     }
 
 

+ 6 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/WarehouseMapper.java

@@ -34,4 +34,10 @@ public interface WarehouseMapper extends CommonBaseMapper<Warehouse> {
     List<Warehouse> selectWarehouseListByCondition(@Param("con") String con,@Param("companyId") Long companyId);
     List<Warehouse> selectWarehouseListByCondition(@Param("con") String con,@Param("companyId") Long companyId);
 
 
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId, @Param("id") Long id);
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId, @Param("id") Long id);
+
+    String selectCodeById(Long id);
+
+    Integer deleteCheckProduct(@Param("id") Long id, @Param("companyId") Long companyId);
+
+    Integer deleteCheckWH(@Param("id") Long id, @Param("companyId") Long companyId);
 }
 }

+ 9 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/WarehouseService.java

@@ -44,4 +44,13 @@ public interface WarehouseService extends CommonBaseService<WarehouseMapper, War
      * @return
      * @return
      */
      */
     boolean batchDelete(BatchDealBaseDTO baseDTOs);
     boolean batchDelete(BatchDealBaseDTO baseDTOs);
+
+    /**
+    * @Description 刪除
+    * @Param: [id]
+    * @return: void
+    * @Author: guq
+    * @Date: 2018/11/8
+    */
+    void delete(Long id);
 }
 }

+ 48 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java

@@ -19,6 +19,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.Date;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
@@ -32,6 +33,8 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
     private MessageLogService messageLogService;
     private MessageLogService messageLogService;
     @Autowired
     @Autowired
     private MaxnumberService maxnumberService;
     private MaxnumberService maxnumberService;
+    @Autowired
+    private WarehouseMapper warehouseMapper;
 
 
     @Override
     @Override
     public PageInfo<Warehouse> getListData(PageRequest page, ListReqDTO req) {
     public PageInfo<Warehouse> getListData(PageRequest page, ListReqDTO req) {
@@ -195,11 +198,55 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
             return false;
             return false;
         }
         }
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
-            getMapper().deleteByPrimaryKey(base.getId());
+            delete(base.getId());
         }
         }
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public void delete(Long id) {
+        //删除前检测物料是否存在默认仓库
+        Long companyId = BaseContextHolder.getCompanyId();
+        companyId = 1l;
+        Integer num = 0;
+        num = warehouseMapper.deleteCheckProduct(id, companyId);
+        if (num > 0) {
+            throw new BizException(BizExceptionCode.PRODUCT_HAS_WAREHOUSE);
+        }
+        //检测是否存在库存
+        num = warehouseMapper.deleteCheckWH(id, companyId);
+        if (num > 0) {
+            throw new BizException(BizExceptionCode.PRODUCTWH_HAS_WAREHOUSE);
+        }
+        singleDelete(id);
+    }
+
+    private void singleDelete(Long id) {
+        if (null != id) {
+            //主表删除
+            getMapper().deleteByPrimaryKey(id);
+            DocBaseDTO docBaseDTO = getBaseDTOById(id);
+            //日志
+            messageLogService.delete(docBaseDTO);
+        }
+    }
+
+    /**
+     * @Description
+     * @Param: [id]
+     * @return: com.usoftchina.saas.commons.dto.DocBaseDTO
+     * @Author: guq
+     * @Date: 2018/10/22
+     */
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = warehouseMapper.selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.WAREHOUSE.getCaller());
+        return baseDTO;
+    }
+
     /**
     /**
      * 构造 记录日志对象
      * 构造 记录日志对象
      * @param id
      * @param id

+ 12 - 0
applications/document/document-server/src/main/resources/mapper/WarehouseMapper.xml

@@ -344,5 +344,17 @@
         </where>
         </where>
     </select>
     </select>
 
 
+    <select id="selectCodeById" resultType="string" parameterType="long">
+        select wh_code from warehouse where wh_id=#{id}
+    </select>
+
+    <select id="deleteCheckProduct" resultType="integer">
+        select count(1) from product where pr_whid = #{id} and companyId = #{companyId}
+    </select>
+
+    <select id="deleteCheckWH" resultType="integer">
+        select count(1) from productwh where pw_whid = #{id} and pw_onhand > 0
+        and companyId = #{companyId}
+    </select>
 </mapper>
 </mapper>