From ed36af4d4cc5feac72a384d85f9032fc6dc1223a Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期六, 14 九月 2024 17:01:55 +0800
Subject: [PATCH] update

---
 hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
index e2751cd..acad8a2 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzHazmatServiceImpl.java
@@ -1,5 +1,6 @@
 package com.gkhy.hazmat.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.hazmat.common.api.CommonPage;
 import com.gkhy.hazmat.common.config.IdTableNameHandler;
@@ -309,6 +310,42 @@
         IdTableNameHandler.removeCurrentId();
     }
 
+    @Override
+    @Transactional(rollbackFor = RuntimeException.class)
+    public void changeRemaining(HzHazmat hazmat) {
+        if(hazmat.getId()==null||hazmat.getRemaining()==null){
+            throw new ApiException("参数不正确");
+        }
+        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
+        checkUserAllowed(null,currentUser);
+        //设置分表id
+        IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
+        HzHazmat dbHazmat=getById(hazmat.getId());
+        checkUserAllowed(dbHazmat,currentUser);
+        if(hazmat.getRemaining().compareTo(dbHazmat.getRemaining())>=0){
+            throw new ApiException("修改值不能大于等于在库容量");
+        }
+        //校验是否产生流向
+        Long flowCount=hazmatFlowMapper.selectCount(Wrappers.<HzHazmatFlow>lambdaQuery().eq(HzHazmatFlow::getHazmatId,hazmat.getId())
+                .ne(HzHazmatFlow::getState,OperateStatusEnum.ENTRY.getCode()));
+        if(flowCount>0){
+            throw new ApiException("该危化品已流转,不能修改!");
+        }
+        HzHazmat newHazmat=new HzHazmat().setId(hazmat.getId()).setRemaining(hazmat.getRemaining());
+        newHazmat.setUpdateBy(currentUser.getUsername());
+        updateById(newHazmat);
+        //生成流向
+        HzHazmatFlow hazmatFlow=new HzHazmatFlow();
+        hazmatFlow.setHazmatId(hazmat.getId());
+        hazmatFlow.setBasicId(dbHazmat.getBasicId());
+        hazmatFlow.setState(OperateStatusEnum.REMNANT.getCode());
+        hazmatFlow.setCompanyId(currentUser.getCompanyId());
+        hazmatFlow.setNum(hazmat.getRemaining());
+        hazmatFlow.setCreateId(currentUser.getId());
+        hazmatFlowMapper.insert(hazmatFlow);
+        IdTableNameHandler.removeCurrentId();
+    }
+
     public void checkUserAllowed(HzHazmat hazmat,SysUser user) {
         if (user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
             throw new ApiException("管理员不能操作");

--
Gitblit v1.9.2