Browse Source

维修备件更换直接修改库存

xiongchao 4 years ago
parent
commit
1814be11aa

+ 1 - 1
platform-dao/src/main/java/com/platform/dao/entity/sqarepartmanage/SparePartUsed.java

@@ -73,7 +73,7 @@ public class SparePartUsed implements Serializable {
      */
     private LocalDate startDate;
     /**
-     * 使用状态:1-使用中;2-已替换
+     * 使用状态:1-未出库;2-已出库
      */
     private Integer status;
     /**

+ 4 - 1
platform-dao/src/main/resources/mapper/sqarepartmanage/SparePartUsedMapper.xml

@@ -39,7 +39,10 @@
         repair_no
     </sql>
     <sql id="Left_Column">
-        used.id, used.store_id, used.sb_id, used.part_id, used.spare_id, used.start_date, used.status, used.change_date,
+        used.id, used.store_id, used.sb_id,
+        used.part_id, used.spare_id, used.start_date,
+        used.status, used.change_date,
+        used.num,
         used.real_change_date,
         used.repair_id,
         used.repair_no,

+ 3 - 3
platform-rest/src/main/java/com/platform/rest/controller/sqarepartmanage/SparePartUsedController.java

@@ -72,14 +72,14 @@ public class SparePartUsedController {
     @PostMapping("/batch")
     public R save(@Validated({AddGroup.class}) @RequestBody List<SparePartUsedDTO> sparePartUsedDTOList) throws Exception {
         for(SparePartUsedDTO sparePartUsedDTO:sparePartUsedDTOList ){
-            SparePartUsedDTO d = new SparePartUsedDTO();
+          /*  SparePartUsedDTO d = new SparePartUsedDTO();
             d.setRepairId(sparePartUsedDTO.getRepairId());
             d.setSpareId(sparePartUsedDTO.getSpareId());
             d.setSbId(sparePartUsedDTO.getSbId());
             int count = sparePartUsedService.getCountByDTO(d);
             if(count != 0){
                 throw new BusinessException("已经存在该备件,修改即可,无需添加");
-            }
+            }*/
             sparePartUsedDTO.setId(IdGeneratorUtils.getObjectId());
         }
         sparePartUsedService.saveModelListByDTO(sparePartUsedDTOList);
@@ -109,7 +109,7 @@ public class SparePartUsedController {
     @PutMapping("/{id}")
     //@PreAuthorize("@pms.hasPermission('sqarepartmanage-spare-part-used-edit')")
     public R update(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody SparePartUsedDTO sparePartUsedDTO) {
-        sparePartUsedService.modModelByDTO(sparePartUsedDTO);
+        sparePartUsedService.updateModelByDTO(sparePartUsedDTO);
         return new R<>();
     }
 

+ 1 - 0
platform-service/src/main/java/com/platform/service/base/impl/BaseServiceImpl.java

@@ -117,6 +117,7 @@ public abstract class BaseServiceImpl<M extends MyMapper<T>, T, K extends BaseDT
             list.add(BeanConverterUtil.copyObjectProperties(item, getEntityClass()));
         });
         mapper.insertListforComplex(list);
+
     }
 
     @Override

+ 1 - 1
platform-service/src/main/java/com/platform/service/sqarepartmanage/SparePartUsedService.java

@@ -25,7 +25,7 @@ public interface SparePartUsedService extends IBaseService<SparePartUsed, SpareP
      */
     int batchDelete(List<String> ids);
 
-    void updateModelByDTO(OutStoreFormDTO model);
+    void updateModelByDTO(SparePartUsedDTO model);
 
     /**
      * 级联删除

+ 12 - 7
platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartInfoServiceImpl.java

@@ -245,20 +245,23 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
         String middleTypeNo = middleType.getNo();
         model.setParentNo(parentTypeNo);
         model.setMiddleNo(middleTypeNo);
-
         String nameNo = model.getNameNo();
         String ggNo = model.getGgNo();
-
         String childTypeNo = null;
         if(StringUtils.isNotBlank(model.getChildTypeId())){
             SpareType childType = spareTypeMapper.selectByPrimaryKey(model.getChildTypeId());
             childTypeNo = childType.getNo();
             model.setChildNo(childTypeNo);
             model.setTypeId(model.getChildTypeId());
-            model.setUniteNo(parentTypeNo + "-" + middleTypeNo + "-" + childTypeNo + "-" + nameNo + "-" + ggNo);
+            model.setUniteNo(parentTypeNo + "-" + middleTypeNo + "-" + childTypeNo);
         }else{
-            model.setTypeId(model.getMiddleTypeId());
-            model.setUniteNo(parentTypeNo + "-" + middleTypeNo + "-" + nameNo + "-" + ggNo);
+            if(StringUtils.isNotBlank(model.getMiddleTypeId())){
+                model.setTypeId(model.getMiddleTypeId());
+                model.setUniteNo(parentTypeNo + "-" + middleTypeNo);
+            }else{
+                model.setTypeId(model.getParentTypeId());
+                model.setUniteNo(parentTypeNo);
+            }
         }
 
         Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
@@ -306,9 +309,11 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
         }else{
             model.setTypeId(model.getMiddleTypeId());
             if(StringUtils.isNotBlank(middleTypeNo)){
-                model.setUniteNo(parentTypeNo + "-" + middleTypeNo + "-" + nameNo + "-" + ggNo);
+                model.setTypeId(model.getMiddleTypeId());
+                model.setUniteNo(parentTypeNo + "-" + middleTypeNo);
             }else{
-                model.setUniteNo(parentTypeNo + "-" + nameNo + "-" + ggNo);
+                model.setTypeId(model.getParentTypeId());
+                model.setUniteNo(parentTypeNo);
             }
         }
 

+ 73 - 14
platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartUsedServiceImpl.java

@@ -1,19 +1,34 @@
 package com.platform.service.sqarepartmanage.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.github.pagehelper.PageHelper;
+import com.platform.common.exception.BusinessException;
+import com.platform.common.model.UserInfo;
+import com.platform.common.util.BeanConverterUtil;
+import com.platform.common.util.BigDecimalUtil;
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.SecurityUtils;
 import com.platform.dao.bean.MyVOPage;
 import com.platform.dao.dto.sqarepartmanage.SparePartUsedDTO;
 import com.platform.dao.dto.store.OutStoreFormDTO;
 import com.platform.dao.entity.sqarepartmanage.SparePartUsed;
+import com.platform.dao.entity.store.SpareStore;
+import com.platform.dao.enums.DelFlagEnum;
 import com.platform.dao.enums.SparePartUsedStatusEnum;
 import com.platform.dao.mapper.sqarepartmanage.SparePartUsedMapper;
+import com.platform.dao.mapper.store.SpareStoreMapper;
 import com.platform.dao.mapper.store.SpareStoreSecondMapper;
 import com.platform.dao.vo.spare.SparePartUsedVO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.sqarepartmanage.SparePartUsedService;
+import com.platform.service.store.SpareStoreService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import tk.mybatis.mapper.weekend.Weekend;
 
+import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -27,7 +42,7 @@ import java.util.List;
 public class SparePartUsedServiceImpl extends BaseServiceImpl<SparePartUsedMapper, SparePartUsed, SparePartUsedDTO> implements SparePartUsedService {
 
     private SpareStoreSecondMapper spareStoreSecondMapper;
-
+    private SpareStoreMapper spareStoreMapper;
     @Override
     public int batchDelete(List<String> ids) {
         ids.forEach(id -> {
@@ -36,6 +51,22 @@ public class SparePartUsedServiceImpl extends BaseServiceImpl<SparePartUsedMappe
         return 1;
     }
 
+    @Override
+    public void updateModelByDTO(SparePartUsedDTO model) {
+        SparePartUsedVO sparePartUsed = mapper.selectById(model.getId());
+        // 更新库存信息
+        Weekend<SpareStore> spareStoreWeekend = new Weekend<>(SpareStore.class);
+        spareStoreWeekend.weekendCriteria().andEqualTo(SpareStore::getSpareId, sparePartUsed.getSpareId())
+                .andEqualTo(SpareStore::getStoreId, sparePartUsed.getStoreId());
+        SpareStore spareStore = spareStoreMapper.selectOneByExample(spareStoreWeekend);
+        if (ObjectUtil.isNotNull(spareStore)) {
+            spareStore.setNum(BigDecimalUtil.sub(BigDecimalUtil.add(spareStore.getNum(), sparePartUsed.getNum()), model.getNum()));
+            spareStoreMapper.updateByPrimaryKeySelective(spareStore);
+        }
+        // 还原出库数量
+        super.modModelByDTO(model);
+    }
+
     @Override
     public SparePartUsed saveModelByDTO(SparePartUsedDTO model) {
         model.setStatus(SparePartUsedStatusEnum.IN_USE.getValue());
@@ -49,11 +80,6 @@ public class SparePartUsedServiceImpl extends BaseServiceImpl<SparePartUsedMappe
         return sparePartUsed;
     }
 
-    @Override
-    public void updateModelByDTO(OutStoreFormDTO model) {
-
-    }
-
     /**
      * 刪除需要更新二級庫的庫存
      *
@@ -63,14 +89,16 @@ public class SparePartUsedServiceImpl extends BaseServiceImpl<SparePartUsedMappe
     @Override
     public boolean cascadingDeleteByKey(String id) {
 
-        /*SparePartUsed sparePartUsed = mapper.selectById(id);
-        SpareStoreSecond second = spareStoreSecondMapper.selectByPrimaryKey(sparePartUsed.getStoreId());
-        if (ObjectUtil.isNotNull(second)) {
-            second.setTotalNum(second.getTotalNum()+1);
-            second.setUsedNum(second.getUsedNum() - 1);
-            spareStoreSecondMapper.updateByPrimaryKey(second);
-        }*/
-        // 刪除出库单
+        SparePartUsedVO sparePartUsed = mapper.selectById(id);
+        // 更新库存信息
+        Weekend<SpareStore> spareStoreWeekend = new Weekend<>(SpareStore.class);
+        spareStoreWeekend.weekendCriteria().andEqualTo(SpareStore::getSpareId, sparePartUsed.getSpareId())
+                .andEqualTo(SpareStore::getStoreId, sparePartUsed.getStoreId());
+        SpareStore spareStore = spareStoreMapper.selectOneByExample(spareStoreWeekend);
+        if (ObjectUtil.isNotNull(spareStore)) {
+            spareStore.setNum(BigDecimalUtil.add(spareStore.getNum(), sparePartUsed.getNum()));
+            spareStoreMapper.updateByPrimaryKey(spareStore);
+        }
         int result = mapper.deleteByPrimaryKey(id);
         return true;
     }
@@ -92,6 +120,37 @@ public class SparePartUsedServiceImpl extends BaseServiceImpl<SparePartUsedMappe
         return new MyVOPage<>(mapper.statisticsByGroupBySpare(model));
     }
 
+    @Override
+    public void saveModelListByDTO(List<SparePartUsedDTO> models) {
+        if (CollectionUtils.isEmpty(models)) {
+            return;
+        }
+        List<SparePartUsed> list = new ArrayList<>(10);
+        // 入库单详情
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+
+        for(SparePartUsedDTO sparePartUsedDTO:models ){
+            setCreateUserInfo(sparePartUsedDTO);
+            sparePartUsedDTO.setId(IdGeneratorUtils.getObjectId());
+            list.add(BeanConverterUtil.copyObjectProperties(sparePartUsedDTO, getEntityClass()));
+            // 更新库存信息
+            Weekend<SpareStore> spareStoreWeekend = new Weekend<>(SpareStore.class);
+            spareStoreWeekend.weekendCriteria().andEqualTo(SpareStore::getSpareId, sparePartUsedDTO.getSpareId())
+                    .andEqualTo(SpareStore::getStoreId, sparePartUsedDTO.getStoreId());
+            SpareStore spareStore = spareStoreMapper.selectOneByExample(spareStoreWeekend);
+            if (ObjectUtil.isNull(spareStore)) {
+                throw new BusinessException("仓库找不到备件,请重新选择");
+            }
+            // 重新计算商品库存价格
+            spareStore.setUpdateTime(LocalDateTime.now());
+            spareStore.setUpdateUserId(userInfo.getUserId());
+            spareStore.setUpdateUserName(userInfo.getRealName());
+            spareStore.setNum(BigDecimalUtil.sub(spareStore.getNum(), sparePartUsedDTO.getNum()));
+            spareStoreMapper.updateByPrimaryKeySelective(spareStore);
+        }
+        mapper.insertListforComplex(list);
+    }
+
     @Override
     public List<SparePartUsedVO> selectSparePartUsedListByRepairId(String repairId) {
         return mapper.selectSparePartUsedListByRepairId(repairId);

+ 31 - 0
platform-service/src/main/java/com/platform/service/store/impl/StoreServiceImpl.java

@@ -237,6 +237,37 @@ public class StoreServiceImpl extends BaseServiceImpl<StoreMapper, Store, StoreD
             UserInfo userInfo = SecurityUtils.getUserInfo();
             weekendCriteria.andEqualTo(Store::getUserId, userInfo.getUserId());
         }
+        // 项目部的仓库列表
+        if (model.getFilter() != null && DataFilterTypeEnum.PROJECT.getValue() == model.getFilter().intValue()) {
+            UserInfo userInfo = SecurityUtils.getUserInfo();
+            List<SysUserDept> sysUserDepts = sysUserDeptService.selectByUserId(userInfo.getUserId());
+            if (CollectionUtil.isEmpty(sysUserDepts)) {
+                throw new BusinessException("找不到该用户所属部门,请先设置,用户id:" + userInfo.getUserId());
+            }
+            SysDeptDTO sysDeptDTO = new SysDeptDTO();
+            sysDeptDTO.setDescendant(sysUserDepts.get(0).getDeptId());
+            sysDeptDTO.setNature(DeptNatureEnum.XIANG_MU_BU.getValue());
+            List<SysDeptVO> list = sysDeptService.allParentList(sysDeptDTO);
+            if (CollectionUtil.isEmpty(list)) {
+                throw new BusinessException("找不到该用户所属的项目组,请先设置,用户id:" + userInfo.getUserId());
+            }
+            weekendCriteria.andEqualTo(Store::getUseProject, list.get(0).getDeptId());
+        }
+        if (model.getFilter() != null && DataFilterTypeEnum.COMPANY.getValue() == model.getFilter().intValue()) {
+            UserInfo userInfo = SecurityUtils.getUserInfo();
+            List<SysUserDept> sysUserDepts = sysUserDeptService.selectByUserId(userInfo.getUserId());
+            if (CollectionUtil.isEmpty(sysUserDepts)) {
+                throw new BusinessException("找不到该用户所属部门,请先设置,用户id:" + userInfo.getUserId());
+            }
+            SysDeptDTO sysDeptDTO = new SysDeptDTO();
+            sysDeptDTO.setDescendant(sysUserDepts.get(0).getDeptId());
+            sysDeptDTO.setNature(DeptNatureEnum.FEN_GONG_SI.getValue());
+            List<SysDeptVO> list = sysDeptService.allParentList(sysDeptDTO);
+            if (CollectionUtil.isEmpty(list)) {
+                throw new BusinessException("找不到该用户所属的公司,请先设置,用户id:" + userInfo.getUserId());
+            }
+            weekendCriteria.andEqualTo(Store::getUseCompany, list.get(0).getDeptId());
+        }
         return mapper.selectByExample(weekend);
     }