xiongchao 3 年之前
父節點
當前提交
63cea6eec2

+ 8 - 0
platform-dao/src/main/java/com/platform/dao/mapper/store/SpareStoreMapper.java

@@ -56,4 +56,12 @@ public interface SpareStoreMapper extends MyMapper<SpareStore> {
      * @return
      */
     void updateSpareIdsBatch(List<SpareStore> list);
+
+    /**
+     * 批量更新:仓库整仓迁移
+     *
+     * @param list
+     * @return
+     */
+    void updateBatchByStoreChange(List<SpareStore> list);
 }

+ 5 - 6
platform-dao/src/main/java/com/platform/dao/util/CustomExcelImportUtil.java

@@ -457,15 +457,14 @@ public class CustomExcelImportUtil {
     }
 
     public static void main(String[] args) throws IOException, InvalidFormatException {
-        String path = "C:\\Users\\cyz\\Downloads\\老版维保计划\\noperson";
-        File dirFile = new File("C:\\Users\\cyz\\Downloads\\老版维保计划\\noperson");
-        String[] files = dirFile.list();
-        // String[] files = {"C:\\Users\\cyz\\Downloads\\老版维保计划\\---C-026 (S-41-REP-V48-1).xls"};
+        //String path = "C:\\Users\\cyz\\Downloads\\老版维保计划\\noperson";
+        //File dirFile = new File("C:\\Users\\cyz\\Downloads\\老版维保计划\\noperson");
+        String[] files = {"C:\\Users\\cyz\\Desktop\\新建文件夹\\2021.7.15设备基础信息 更新自定义设备类型和部分第一维修人 (1) - 副本.xls"};
         for(String fileStr:files){
             System.out.println(fileStr);
-            InputStream inputstream = new FileInputStream(path + File.separator + fileStr);
+            InputStream inputstream = new FileInputStream(fileStr);
             LocalDateTime now = LocalDateTime.now();
-            List<CheckStandard> list = importCheckStandardList(inputstream);
+            List<SbInfoVO> list = importSbInfoList(inputstream);
            /* list.forEach(item -> {
                 System.out.println(item.toString());
             });*/

+ 10 - 0
platform-dao/src/main/resources/mapper/store/SpareStoreMapper.xml

@@ -218,4 +218,14 @@
             where id = #{item.id}
         </foreach>
     </update>
+
+    <update id="updateBatchByStoreChange" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+            update t_spare_store
+            <set>
+                num=#{item.num}
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
 </mapper>

+ 16 - 0
platform-rest/src/main/java/com/platform/rest/controller/store/StoreController.java

@@ -65,6 +65,22 @@ public class StoreController {
       return new R<>(storeService.saveModelByDTO(storeDTO));
   }
 
+    /**
+     * 将某个仓库的备件库存全部转移到另外的仓库
+     * 原仓库库存全部为0,原仓库为0的不迁移
+     * 新仓库已存在的备件直接增加数量或者新增备件
+     *
+     * @param sourceStoreId 原仓库id
+     * @param destStoreId bom 新仓库id
+     *
+     * @return R
+     */
+    @SysLog("仓库库存整仓切换")
+    @PostMapping("/change")
+    public R changeStore(@RequestParam("sourceStoreId") String sourceStoreId, @RequestParam("destStoreId") String destStoreId) throws Exception {
+        String result = storeService.changeStore(sourceStoreId, destStoreId);
+        return new R<>(result);
+    }
     /**
      * 导入仓库库存:
      * 增加导入:如果该仓库下找不到物品,则直接导入

+ 12 - 2
platform-service/src/main/java/com/platform/service/sb/impl/SbInfoServiceImpl.java

@@ -64,6 +64,7 @@ import com.platform.service.upms.SysUserDeptService;
 import com.platform.service.util.CodeFileUtils;
 import com.platform.service.util.ExecuteSql;
 import lombok.AllArgsConstructor;
+import org.apache.ibatis.exceptions.TooManyResultsException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -150,8 +151,13 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
         Weekend<SbInfo> weekend = new Weekend<>(SbInfo.class);
         WeekendCriteria<SbInfo, Object> weekendCriteria = weekend.weekendCriteria();
         weekendCriteria.andEqualTo(SbInfo::getNo, no);
-        SbInfo sbInfo = mapper.selectOneByExample(weekend);
-        return sbInfo;
+       try{
+           SbInfo sbInfo = mapper.selectOneByExample(weekend);
+           return sbInfo;
+       } catch(TooManyResultsException e){
+           throw new BusinessException("新编号存在多个,请调整");
+        }
+
     }
 
     /**
@@ -224,6 +230,10 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
         model.setName(sbModelVO.getName());
         model.setModel(sbModelVO.getModel());
         model.setNameModel(sbModelVO.getNameModel());*/
+        SbInfo exsit = this.selectByNo(model.getNo());
+        if(exsit !=null){
+            throw new BusinessException("编号已经存在,请调整");
+        }
         model.setId(IdGeneratorUtils.getObjectId());
         if (model.getIsChild()==null) {
             model.setIsChild(SbInfoChildEnum.IS_NORMAL.getValue());

+ 2 - 0
platform-service/src/main/java/com/platform/service/store/StoreService.java

@@ -79,4 +79,6 @@ public interface StoreService extends IBaseService<Store, StoreDTO> {
     Store getById(String id);
 
     String importListAddAndUpdate(String storeId, MultipartFile file);
+
+    String changeStore(String sourceStoreId, String destStoreId);
 }

+ 75 - 2
platform-service/src/main/java/com/platform/service/store/impl/StoreServiceImpl.java

@@ -5,6 +5,7 @@ import com.platform.common.bean.AbstractPageResultBean;
 import com.platform.common.enums.DataFilterTypeEnum;
 import com.platform.common.exception.BusinessException;
 import com.platform.common.model.UserInfo;
+import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.IdGeneratorUtils;
 import com.platform.common.util.R;
 import com.platform.common.util.SecurityUtils;
@@ -44,6 +45,7 @@ import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 import lombok.AllArgsConstructor;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -62,7 +64,7 @@ public class StoreServiceImpl extends BaseServiceImpl<StoreMapper, Store, StoreD
     private SysDeptService sysDeptService;
     private SysDeptMapper deptMapper;
     private SpareStoreMapper spareStoreMapper;
-
+    private StoreMapper storeMapper;
     private final String useArea = "5e64ac691c527828b2114da0";
     private final String useCompany = "6063f905eb190003685af6d4";
     private final String useProject = "6063f92ceb190003685af6d9";
@@ -228,7 +230,6 @@ public class StoreServiceImpl extends BaseServiceImpl<StoreMapper, Store, StoreD
                 throw new BusinessException("该项目部已经存在总仓,总仓只能有一个");
             }
         }*/
-
         super.modModelByDTO(model);
     }
 
@@ -327,4 +328,76 @@ public class StoreServiceImpl extends BaseServiceImpl<StoreMapper, Store, StoreD
         }
     }
 
+    /**
+     * 将某个仓库的备件库存全部转移到另外的仓库
+     * 原仓库库存全部为0,原仓库为0的不迁移
+     * 新仓库已存在的备件直接增加数量或者新增备件
+     *
+     * @param sourceStoreId
+     * @param destStoreId
+     * @return
+     */
+    @Override
+    public String changeStore(String sourceStoreId, String destStoreId) {
+        Weekend<SpareStore> weekend = new Weekend<>(SpareStore.class);
+        WeekendCriteria<SpareStore, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andEqualTo(SpareStore::getStoreId, sourceStoreId);
+        List<SpareStore> storeList = spareStoreMapper.selectByExample(weekend);
+        Weekend<SpareStore> weekend2 = new Weekend<>(SpareStore.class);
+        WeekendCriteria<SpareStore, Object> weekendCriteria2 = weekend2.weekendCriteria();
+        weekendCriteria2.andEqualTo(SpareStore::getStoreId, destStoreId);
+        List<SpareStore> destStoreList = spareStoreMapper.selectByExample(weekend2);
+        List<SpareStore> addList = new ArrayList<SpareStore>();
+        List<SpareStore> updateList = new ArrayList<SpareStore>();
+        String result = "";
+        int notChange = 0;
+        if(CollectionUtil.isNotEmpty(storeList)){
+            if(CollectionUtil.isNotEmpty(destStoreList)){
+                for(SpareStore source:storeList){
+                    // 原仓库为0的不迁移
+                    if(source.getNum()!=null && source.getNum().compareTo(new BigDecimal(0))==0){
+                        notChange++;
+                        continue;
+                    }
+                    boolean find = false;
+                    for(SpareStore dest:destStoreList){
+                        if(source.getSpareId().equals(dest.getSpareId())){
+                            find = true;
+                            dest.setNum(dest.getNum().add(source.getNum()));
+                            updateList.add(dest);
+                            break;
+                        }
+                    }
+                    if(!find){
+                        SpareStore create = BeanConverterUtil.copyObjectProperties(source, SpareStore.class);
+                        create.setId(IdGeneratorUtils.getObjectId());
+                        create.setStoreId(destStoreId);
+                        addList.add(create);
+                    }
+                }
+
+                for(SpareStore source:storeList){
+                    source.setNum(new BigDecimal(0));
+                }
+                Store sourceStore = storeMapper.selectByPrimaryKey(sourceStoreId);
+                sourceStore.setDelFlag(DelFlagEnum.DELETED.getValue());
+
+                // 更新旧仓库
+                spareStoreMapper.updateBatchByStoreChange(storeList);
+                storeMapper.updateByPrimaryKey(sourceStore);
+
+                // 更新新仓库
+                if(CollectionUtil.isNotEmpty(addList)){
+                    spareStoreMapper.insertListforComplex(addList);
+                }
+
+                if(CollectionUtil.isNotEmpty(updateList)){
+                    spareStoreMapper.updateBatchByStoreChange(updateList);
+                }
+                result = "总迁移备件条数:" + storeList.size() + "迁移更新数量:" + updateList.size()+ "迁移新增数量:"
+                        + addList.size()+ "未迁移新增数量(为0的备件不迁移):" +notChange;
+            }
+        }
+        return result;
+    }
 }