xiongchao преди 4 години
родител
ревизия
11c1c877c0
променени са 17 файла, в които са добавени 290 реда и са изтрити 48 реда
  1. 4 0
      platform-dao/src/main/java/com/platform/dao/dto/firm/FirmProducerDTO.java
  2. 14 7
      platform-dao/src/main/java/com/platform/dao/dto/sqarepartmanage/SparePartInfoDTO.java
  3. 4 0
      platform-dao/src/main/java/com/platform/dao/entity/firm/FirmProducer.java
  4. 15 2
      platform-dao/src/main/java/com/platform/dao/entity/sqarepartmanage/SparePartInfo.java
  5. 7 1
      platform-dao/src/main/java/com/platform/dao/mapper/firm/FirmSupplierMapper.java
  6. 4 0
      platform-dao/src/main/java/com/platform/dao/vo/query/firm/FirmProducerVO.java
  7. 12 6
      platform-dao/src/main/java/com/platform/dao/vo/query/sparepartmanage/SparePartInfoVO.java
  8. 8 0
      platform-dao/src/main/java/com/platform/dao/vo/sb/SbModelSpareBomVO.java
  9. 2 0
      platform-dao/src/main/resources/mapper/firm/FirmProducerMapper.xml
  10. 6 0
      platform-dao/src/main/resources/mapper/firm/FirmSupplierMapper.xml
  11. 5 5
      platform-dao/src/main/resources/mapper/sb/SbModelSpareBomMapper.xml
  12. 11 3
      platform-dao/src/main/resources/mapper/sqarepartmanage/SparePartInfoMapper.xml
  13. 13 0
      platform-rest/src/main/java/com/platform/rest/controller/sb/SbInfoController.java
  14. 1 4
      platform-rest/src/main/java/com/platform/rest/controller/sb/SbModelSpareBomController.java
  15. 7 0
      platform-service/src/main/java/com/platform/service/sb/SbInfoService.java
  16. 85 7
      platform-service/src/main/java/com/platform/service/sb/impl/SbInfoServiceImpl.java
  17. 92 13
      platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartInfoServiceImpl.java

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/firm/FirmProducerDTO.java

@@ -38,6 +38,10 @@ public class FirmProducerDTO extends BaseDTO implements Serializable {
      * 名称
      */
     private String name;
+    /**
+     * 品牌
+     */
+    private String pp;
     /**
      * 等级:1:一级(最好)2:二级 3:三级,数据字典,可以N多级
      */

+ 14 - 7
platform-dao/src/main/java/com/platform/dao/dto/sqarepartmanage/SparePartInfoDTO.java

@@ -121,7 +121,6 @@ public class SparePartInfoDTO extends BaseDTO implements Serializable {
    * 生产商
    */
     private String producerId;
-
     /**
    * 计量单位: 1-件;2-台;3-条; 4-个
    */
@@ -135,9 +134,21 @@ public class SparePartInfoDTO extends BaseDTO implements Serializable {
      */
     private BigDecimal unitRate;
     /**
-   * 最高库存
-   */
+     * 最高库存
+     */
     private BigDecimal maxStock;
+    /**
+     * 最低库存
+     */
+    private BigDecimal minStock;
+    /**
+     * 初始库存
+     */
+    private BigDecimal initStock;
+    /**
+     * 采购供应商
+     */
+    private String supplierId;
     /**
      * 使用周期:月
      */
@@ -146,10 +157,6 @@ public class SparePartInfoDTO extends BaseDTO implements Serializable {
      * 采购到货周期:天
      */
     private BigDecimal purchasePeriod;
-    /**
-   * 最低库存
-   */
-    private BigDecimal minStock;
 
     /**
      * 自编号

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/entity/firm/FirmProducer.java

@@ -38,6 +38,10 @@ public class FirmProducer implements Serializable {
      * 名称
      */
     private String name;
+    /**
+     * 品牌
+     */
+    private String pp;
     /**
      * 等级:1:一级(最好)2:二级 3:三级,数据字典,可以N多级
      */

+ 15 - 2
platform-dao/src/main/java/com/platform/dao/entity/sqarepartmanage/SparePartInfo.java

@@ -139,11 +139,19 @@ public class SparePartInfo implements Serializable{
     /**
      * 最高库存
      */
-    private Integer maxStock;
+    private BigDecimal maxStock;
     /**
      * 最低库存
      */
-    private Integer minStock;
+    private BigDecimal minStock;
+    /**
+     * 初始库存
+     */
+    private BigDecimal initStock;
+    /**
+     * 采购供应商
+     */
+    private String supplierId;
     /**
      * 备注
      */
@@ -196,6 +204,11 @@ public class SparePartInfo implements Serializable{
      */
     @Transient
     private String producerName;
+    /**
+     * 采购供应商
+     */
+    @Transient
+    private String supplierName;
     /**
      * 自编号
      */

+ 7 - 1
platform-dao/src/main/java/com/platform/dao/mapper/firm/FirmSupplierMapper.java

@@ -24,5 +24,11 @@ public interface FirmSupplierMapper extends MyMapper<FirmSupplier> {
      * @return :
      */
     List<FirmSupplierVO> selectList(FirmSupplierDTO dto);
-
+    /**
+     * 查询名称
+     *
+     * @param id
+     * @return
+     */
+    String selectNameById(Object id);
 }

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/firm/FirmProducerVO.java

@@ -41,6 +41,10 @@ public class FirmProducerVO extends BaseVO implements Serializable {
      * 名称
      */
     private String name;
+    /**
+     * 品牌
+     */
+    private String pp;
     /**
      * 等级:1:一级(最好)2:二级 3:三级,数据字典,可以N多级
      */

+ 12 - 6
platform-dao/src/main/java/com/platform/dao/vo/query/sparepartmanage/SparePartInfoVO.java

@@ -188,15 +188,21 @@ public class SparePartInfoVO extends BaseVO implements Serializable {
      */
     private BigDecimal currentStock;
     /**
-   * 最高库存
-   */
+     * 最高库存
+     */
     private BigDecimal maxStock;
-
     /**
-   * 最低库存
-   */
+     * 最低库存
+     */
     private BigDecimal minStock;
-
+    /**
+     * 初始库存
+     */
+    private BigDecimal initStock;
+    /**
+     * 采购供应商
+     */
+    private String supplierId;
     /**
      * 自编号
      */

+ 8 - 0
platform-dao/src/main/java/com/platform/dao/vo/sb/SbModelSpareBomVO.java

@@ -57,6 +57,14 @@ public class SbModelSpareBomVO extends BaseVO implements Serializable {
      * 设备id
      */
     private String sbId;
+    /**
+     * 设备编号/设备(新号)
+     */
+    private String no;
+    /**
+     * 自编号/设备(旧号)
+     */
+    private String zbh;
     /**
      * 设备部位id
      */

+ 2 - 0
platform-dao/src/main/resources/mapper/firm/FirmProducerMapper.xml

@@ -6,6 +6,7 @@
         producer.type,
         producer.no,
         producer.name,
+        producer.pp,
         producer.level,
         producer.person,
         producer.mobile,
@@ -24,6 +25,7 @@
         producer.type,
         producer.no,
         producer.name,
+        producer.pp,
         producer.level,
         producer.person,
         producer.mobile,

+ 6 - 0
platform-dao/src/main/resources/mapper/firm/FirmSupplierMapper.xml

@@ -109,4 +109,10 @@
             and supplier.del_flag = false
         </where>
     </select>
+
+    <select id="selectNameById" parameterType="Object" resultType="java.lang.String">
+        select name
+        from t_firm_supplier
+        where id = #{value}
+    </select>
 </mapper>

+ 5 - 5
platform-dao/src/main/resources/mapper/sb/SbModelSpareBomMapper.xml

@@ -8,7 +8,7 @@
         bom.next_check_date,
         bom.change_num,
         bom.next_change_num,
-        bom.spare_id, model.name, model.model, model.name_model, part.name as sbPartName
+        bom.spare_id, sbInfo.name, sbInfo.model, sbInfo.no, sbInfo.zbh, sbInfo.name_model, part.name as sbPartName
     </sql>
 
     <select id="selectExportList" parameterType="com.platform.dao.dto.sb.SbModelSpareBomDTO"
@@ -18,11 +18,11 @@
                bom.check_date,
         bom.next_check_date,
         bom.change_num,
-        bom.next_change_num,bom.model_id, bom.sb_id, bom.sb_part_id, bom.spare_id,model.name,model.model, part.name as sbPartName
-        from t_sb_model_spare_bom bom, t_sb_model model
+        bom.next_change_num,bom.model_id, bom.sb_id, bom.sb_part_id, bom.spare_id,sbInfo.name,sbInfo.model, sbInfo.no, sbInfo.zbh,  part.name as sbPartName
+        from t_sb_model_spare_bom bom, t_sb_info sbInfo
         LEFT JOIN t_part_info part on bom.sb_part_id = part.id
         where
-        bom.model_id = model.id
+        bom.sb_id = sbInfo.id
         GROUP BY bom.spare_id
     </select>
 
@@ -31,7 +31,7 @@
         select
         <include refid="Left_Column"/>
         from t_sb_model_spare_bom bom
-        LEFT JOIN t_sb_model model ON bom.model_id = model.id
+        LEFT JOIN t_sb_info sbInfo ON bom.sb_id = sbInfo.id
         LEFT JOIN t_part_info part on bom.sb_part_id = part.id
         <where>
             <if test="spareId != null">

+ 11 - 3
platform-dao/src/main/resources/mapper/sqarepartmanage/SparePartInfoMapper.xml

@@ -21,11 +21,13 @@
         <result column="level" jdbcType="SMALLINT" property="level"/>
         <result column="initial_value" jdbcType="DOUBLE" property="initialValue"/>
         <result column="producer_id" jdbcType="VARCHAR" property="producerId"/>
+        <result column="supplier_id" jdbcType="VARCHAR" property="supplierId"/>
         <result column="unit" jdbcType="SMALLINT" property="unit"/>
         <result column="unit_bz" jdbcType="SMALLINT" property="unitBz"/>
         <result column="unit_rate" jdbcType="DOUBLE" property="unitRate"/>
-        <result column="max_stock" jdbcType="INTEGER" property="maxStock"/>
-        <result column="min_stock" jdbcType="INTEGER" property="minStock"/>
+        <result column="max_stock" jdbcType="DOUBLE" property="maxStock"/>
+        <result column="min_stock" jdbcType="DOUBLE" property="minStock"/>
+        <result column="init_stock" jdbcType="DOUBLE" property="initStock"/>
         <result column="zbh" jdbcType="VARCHAR" property="zbh"/>
         <result column="ggxh" jdbcType="VARCHAR" property="ggxh"/>
         <result column="english_name" jdbcType="VARCHAR" property="englishName"/>
@@ -43,6 +45,8 @@
                      select="com.platform.dao.mapper.sqarepartmanage.SpareTypeMapper.selectNameById"/>
         <association column="producer_id" javaType="string" property="producerName"
                      select="com.platform.dao.mapper.firm.FirmProducerMapper.selectNameById"/>
+        <association column="supplier_id" javaType="string" property="supplierName"
+                     select="com.platform.dao.mapper.purchase.SupplierMapper.selectNameById"/>
     </resultMap>
     <sql id="Base_Column_List">
         id, no, unite_no, gg_no, name_no, name, type_id, level, initial_value, producer_id,
@@ -53,7 +57,7 @@
     unit_rate,
     image,
     qr_code,
-    max_stock, min_stock,
+    max_stock, min_stock,init_stock,supplier_id,
     remark, created_user_id, update_user_id, created_time, update_time,
     zbh,init_no,
     parent_type_id,
@@ -92,6 +96,7 @@
             <if test="yt != null">
                 AND info.yt=#{yt}
             </if>
+
             <if test="storeId != null and storeId != ''">
                 AND spare.store_id=#{storeId}
             </if>
@@ -107,6 +112,9 @@
             <if test="producerId != null and producerId != ''">
                 AND info.producer_id=#{producerId}
             </if>
+            <if test="supplierId != null and producerId != ''">
+                AND info.supplier_id=#{supplierId}
+            </if>
             <if test="parentTypeId != null and parentTypeId != ''">
                 AND info.parent_type_id=#{parentTypeId}
             </if>

+ 13 - 0
platform-rest/src/main/java/com/platform/rest/controller/sb/SbInfoController.java

@@ -62,6 +62,19 @@ public class SbInfoController {
         return new R<>(sbInfoService.saveModelByDTO(sbInfoDTO));
     }
 
+    /**
+     * 新增记录
+     *
+     * @param sbInfoDTO 设备基础信息DTO
+     * @return R
+     */
+    @SysLog("复制设备基础信息")
+    @PostMapping("/copy")
+    @PreAuthorize("@pms.hasPermission('sb-infos-add')")
+    public R copy(@Validated({AddGroup.class}) @RequestBody SbInfoDTO sbInfoDTO) {
+        return new R<>(sbInfoService.saveModelByDTOCopy(sbInfoDTO));
+    }
+
     /**
      * 修改记录
      *

+ 1 - 4
platform-rest/src/main/java/com/platform/rest/controller/sb/SbModelSpareBomController.java

@@ -103,15 +103,12 @@ public class SbModelSpareBomController {
      * @param sbModelSpareBomDTOList 设备型号bom标准关联DTO
      * @return R
      */
-    @SysLog("新增设备型号bom标准关联")
+    @SysLog("新增设备bom标准关联")
     @PostMapping("/batch")
     public R save(@Validated({AddGroup.class}) @RequestBody List<SbModelSpareBomDTO> sbModelSpareBomDTOList) throws Exception {
         for(SbModelSpareBomDTO sbModelSpareBomDTO:sbModelSpareBomDTOList ){
             SbModelSpareBomDTO d = new SbModelSpareBomDTO();
             d.setSpareId(sbModelSpareBomDTO.getSpareId());
-            if(StringUtils.isNotBlank(sbModelSpareBomDTO.getModelId())){
-                d.setModelId(sbModelSpareBomDTO.getModelId());
-            }
             if(StringUtils.isNotBlank(sbModelSpareBomDTO.getSbId())){
                 d.setSbId(sbModelSpareBomDTO.getSbId());
             }

+ 7 - 0
platform-service/src/main/java/com/platform/service/sb/SbInfoService.java

@@ -101,6 +101,13 @@ public interface SbInfoService extends IBaseService<SbInfo, SbInfoDTO> {
      */
     MyVOPage<SbInfoVO> selectVOPageByPosition(SbInfoDTO dto, int pageNum, int pageSize);
 
+    /**
+     * 复制设备信息
+     *
+     * @param model
+     * @return
+     */
+    public SbInfo saveModelByDTOCopy(SbInfoDTO model);
     /**
      * 通过状态统计
      *

+ 85 - 7
platform-service/src/main/java/com/platform/service/sb/impl/SbInfoServiceImpl.java

@@ -11,8 +11,11 @@ import com.platform.common.model.UserInfo;
 import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
 import com.platform.dao.bean.MyVOPage;
+import com.platform.dao.dto.check.CheckStandardDTO;
+import com.platform.dao.dto.part.PartInfoDTO;
 import com.platform.dao.dto.sb.SbInfoDTO;
 import com.platform.dao.dto.sb.SbMeasureLogDTO;
+import com.platform.dao.dto.sb.SbModelSpareBomDTO;
 import com.platform.dao.dto.store.SpareRestoreDetailDTO;
 import com.platform.dao.dto.upms.SysDeptDTO;
 import com.platform.dao.dto.upms.SysUserDeptDTO;
@@ -40,7 +43,11 @@ import com.platform.dao.vo.query.upms.SysDeptVO;
 import com.platform.dao.vo.sb.SbInfoVO;
 import com.platform.dao.vo.sb.SbModelVO;
 import com.platform.service.base.impl.BaseServiceImpl;
+import com.platform.service.check.CheckStandardService;
+import com.platform.service.part.PartInfoService;
 import com.platform.service.sb.SbInfoService;
+import com.platform.service.sb.SbModelSpareBomService;
+import com.platform.service.sqarepartmanage.SpareTypeService;
 import com.platform.service.upms.SysDeptRelationService;
 import com.platform.service.upms.SysDeptService;
 import com.platform.service.upms.SysUserDeptService;
@@ -101,6 +108,10 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
 
     private final SysDeptRelationService sysDeptRelationService;
 
+    private final PartInfoService partInfoService;
+    private final SbModelSpareBomService sbModelSpareBomService;
+    private final CheckStandardService checkStandardService;
+
     private final String useArea = "5e64ac691c527828b2114da0";
     private final String useCompany = "6063f905eb190003685af6d4";
     private final String useProject = "6063f92ceb190003685af6d9";
@@ -156,13 +167,6 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
     @Override
     public SbInfo saveModelByDTO(SbInfoDTO model) {
 
-        if (StringUtils.isBlank(model.getNo())) {
-            Weekend<SbInfo> weekend = new Weekend<>(SbInfo.class);
-            weekend.weekendCriteria().andIsNotNull(SbInfo::getId);
-            int count = mapper.selectCountByExample(weekend);
-            model.setNo(IdGeneratorUtils.getSbNo(++count));
-        }
-
         model.setUseArea(useArea);
         model.setUseCompany(useCompany);
         model.setUseProject(useProject);
@@ -200,6 +204,80 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
         return super.saveModelHaveCreateInfo(model);
     }
 
+    /**
+     * 复制设备信息
+     *  重新设置二维码
+     *  页面重新设置编号,
+     *  代码重新设置id
+     * 1:复制设备基础信息
+     * 2:复制部位
+     * 3:复制保养内容
+     * 4:复制bom
+     * 5:复制图片和文件
+     *
+     * @param model
+     * @return
+     */
+    @Override
+    public SbInfo saveModelByDTOCopy(SbInfoDTO model) {
+
+        String oldId = model.getId();
+        model.setUseArea(useArea);
+        model.setUseCompany(useCompany);
+        model.setUseProject(useProject);
+        model.setUseDept(useDept);
+        model.setUseGroup(useGroup);
+        model.setId(IdGeneratorUtils.getObjectId());
+        if (model.getIsChild()==null) {
+            model.setIsChild(SbInfoChildEnum.IS_NORMAL.getValue());
+        }
+        if (model.getIsShow()==null) {
+            model.setIsChild(SbInfoShowEnum.NOT_SHOW.getValue());
+        }
+        // 保存二维码
+        String path = CommonConstants.RESOURCE_PREFIX + "/png/" + DateUtil.formatDate(new Date()) + "/" + IdGeneratorUtils.getObjectId() + "/";
+        String rootPath = environment.getProperty("upload.root-dir");
+        String filePath = rootPath + path;
+        String codePath = path + model.getId() + ".png";
+        model.setQrCode(codePath);
+        CodeFileUtils.uploadFileECode(model.getId(), rootPath, filePath, model.getId() + ".png");
+
+        // 2:复制部位
+        PartInfoDTO partInfoDTO = new PartInfoDTO();
+        partInfoDTO.setSbId(model.getId());
+        partInfoDTO.setCopySbId(oldId);
+        partInfoService.copyFormSb(partInfoDTO);
+        // 3:复制保养内容
+        CheckStandardDTO checkStandardDTO = new CheckStandardDTO();
+        checkStandardDTO.setSbId(model.getId());
+        checkStandardDTO.setCopySbId(oldId);
+        checkStandardService.copyFormSb(checkStandardDTO);
+        // 4:复制bom
+        SbModelSpareBomDTO sbModelSpareBomDTO = new SbModelSpareBomDTO();
+        sbModelSpareBomDTO.setSbId(model.getId());
+        sbModelSpareBomDTO.setCopySbId(oldId);
+        sbModelSpareBomService.copyFormSb(sbModelSpareBomDTO);
+        // 5:复制图片和文件,新增,但是图片还是和之前的设备一样的图片信息,最好这个文件也都是新增的就行了,暂时不复制了
+      /*  Weekend<SysFile> weekend = new Weekend<>(SysFile.class);
+        weekend.weekendCriteria().andEqualTo(SysFile::getTargetId, oldId);
+        List<SysFile> sysFiles = sysFileMapper.selectByExample(weekend);
+        List<SysFile> fileList = ListUtils.newArrayList();
+        if(CollectionUtil.isNotEmpty(sysFiles)){
+            for(SysFile file:sysFiles){
+                file.setId(IdGeneratorUtils.getObjectId());
+                file.setTargetId(model.getId());
+                fileList.add(file);
+            }
+            if (CollectionUtil.isNotEmpty(fileList)) {
+                sysFileMapper.insertListforComplex(fileList);
+            }
+       }*/
+        this.saveFile(model);
+        setSaveDept(model);
+        saveSbStatusLogAndStopLog(model);
+        return super.saveModelHaveCreateInfo(model);
+    }
+
     /**
      *  如果是变更了状态,需要记录状态变更表,
      *  如果是启用,则要更新停机记录表数据

+ 92 - 13
platform-service/src/main/java/com/platform/service/sqarepartmanage/impl/SparePartInfoServiceImpl.java

@@ -22,6 +22,7 @@ import com.platform.dao.entity.upms.SysDept;
 import com.platform.dao.entity.upms.SysFile;
 import com.platform.dao.entity.upms.SysUser;
 import com.platform.dao.enums.SysFileTypeEnum;
+import com.platform.dao.mapper.sb.SbInfoMapper;
 import com.platform.dao.mapper.sb.SbModelMapper;
 import com.platform.dao.mapper.sb.SbModelSpareBomMapper;
 import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
@@ -31,7 +32,6 @@ import com.platform.dao.mapper.upms.SysFileMapper;
 import com.platform.dao.util.CustomExcelImportUtil;
 import com.platform.dao.vo.query.sparepartmanage.SparePartInfoVO;
 import com.platform.dao.vo.sb.SbInfoVO;
-import com.platform.service.sb.SbInfoService;
 import com.platform.service.sqarepartmanage.SparePartInfoService;
 import com.platform.service.sqarepartmanage.SpareTypeService;
 import com.platform.service.util.CodeFileUtils;
@@ -60,7 +60,7 @@ import java.util.stream.Collectors;
 @Service("sparePartInfoService")
 public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMapper, SparePartInfo, SparePartInfoDTO> implements SparePartInfoService {
 
-    private final SbInfoService sbInfoService;
+    private final SbInfoMapper sbInfoMapper;
     private final SpareTypeMapper spareTypeMapper;
     private final SbModelMapper sbModelMapper;
     private final SbModelSpareBomMapper sbModelSpareBomMapper;
@@ -143,7 +143,7 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
     public AbstractPageResultBean<SparePartInfo> selectPageInfo(SparePartInfoDTO record, int pageNum, int pageSize) {
         // 选择设备对应的备件bom列表
         if(record.getSbId()!=null){
-            SbInfoVO sbInfo = sbInfoService.getById(record.getSbId());
+            SbInfoVO sbInfo = sbInfoMapper.getById(record.getSbId());
             List<SparePartInfoVO> partList = mapper.selectSpareInfoList(sbInfo.getModelId());
             PageHelper.startPage(pageNum, pageSize);
             AbstractPageResultBean<SparePartInfo> pageInfo = new MyPage(partList);
@@ -251,6 +251,12 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
         return model;
     }
 
+    /**
+     * 新增同时入了仓库,所以初始数量须填写一下,不填则默认为0
+     *
+     * @param model
+     * @return
+     */
     @Override
     public SparePartInfo saveModelByDTO(SparePartInfoDTO model) {
 
@@ -286,12 +292,12 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
             }
         }
 
-       /* Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
-        weekend.weekendCriteria().andEqualTo(SparePartInfo::getUniteNo, model.getUniteNo());
+        Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
+        weekend.weekendCriteria().andEqualTo(SparePartInfo::getName, model.getName()).andEqualTo(SparePartInfo::getGgxh, model.getGgxh());
         int checkInfo = mapper.selectCountByExample(weekend);
         if(checkInfo > 0){
-            throw new BusinessException("编码已存在,请重新设置名称编码或者规格编码," + model.getUniteNo());
-        }*/
+            throw new BusinessException("同名称同规格的备件已存在,请重新设置");
+        }
         model.setId(IdGeneratorUtils.getObjectId());
         // 保存二维码
         String path = CommonConstants.RESOURCE_PREFIX + "/png/" + DateUtil.formatDate(new Date()) + "/" + IdGeneratorUtils.getObjectId() + "/";
@@ -319,12 +325,36 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
             sbModelSpareBomMapper.insert(bom);
         }
         this.saveFile(model);
+
+        // 如果初始化数量有了,就需要更新库存
+        if(model.getInitStock() == null){
+            model.setInitStock(new BigDecimal(0));
+        }
+        if(model.getInitStock() != null){
+            SpareStore spareStore = new SpareStore();
+            spareStore.setSpareId(model.getId());
+            spareStore.setId(IdGeneratorUtils.getObjectId());
+            spareStore.setStoreId("9");
+            BigDecimal price = model.getInitialValue();
+            spareStore.setPrice(model.getInitialValue());
+            spareStore.setNum(model.getInitStock() );
+            spareStore.setInitNum(model.getInitStock() );
+            spareStore.setInitPrice(model.getInitialValue());
+            spareStore.setInitPurchasePrice(model.getInitialValue());
+            spareStore.setCreatedTime(time);
+            spareStore.setCreatedUserId(userInfo.getUserId());
+            spareStore.setUpdateTime(time);
+            spareStore.setUpdateUserId(userInfo.getUserId());
+            spareStoreMapper.insert(spareStore);
+        }
+
         return super.saveModelHaveCreateInfo(model);
     }
 
     @Override
     public void modModelByDTO(SparePartInfoDTO model) {
-
+        UserInfo userInfo = SecurityUtils.getUserInfo();
+        LocalDateTime time = LocalDateTime.now();
         // 设置备件的统一编号
         SpareType parentType = spareTypeMapper.selectByPrimaryKey(model.getParentTypeId());
         SpareType middleType = spareTypeMapper.selectByPrimaryKey(model.getMiddleTypeId());
@@ -358,13 +388,62 @@ public class SparePartInfoServiceImpl extends BaseServiceImpl<SparePartInfoMappe
             }
         }
 
-       /* Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
-        weekend.weekendCriteria().andEqualTo(SparePartInfo::getUniteNo, model.getUniteNo());
+        Weekend<SparePartInfo> weekend = new Weekend<>(SparePartInfo.class);
+        weekend.weekendCriteria().andEqualTo(SparePartInfo::getName, model.getName()).andEqualTo(SparePartInfo::getGgxh, model.getGgxh());
         SparePartInfo checkInfo = mapper.selectOneByExample(weekend);
-        if(checkInfo != null && !checkInfo.getId().equals(model.getId())){
-            throw new BusinessException("编码已存在,请重新设置名称编码或者规格编码," + model.getUniteNo());
-        }*/
+        if(checkInfo != null  && !checkInfo.getId().equals(model.getId())){
+            throw new BusinessException("同名称同规格的备件已存在,请重新设置");
+        }
         this.saveFile(model);
+
+        if(model.getInitStock() == null){
+            model.setInitStock(new BigDecimal(0));
+        }
+        // 如果初始化数量有了,就需要更新库存
+        if(model.getInitStock() != null){
+            Weekend<SpareStore> weekendSpareStore = new Weekend<>(SpareStore.class);
+            weekendSpareStore.weekendCriteria().andEqualTo(SpareStore::getSpareId, model.getId());
+            SpareStore spareStore = spareStoreMapper.selectOneByExample(weekendSpareStore);
+            /**
+             * 1:已经存在库存,则判断数量是否一致,
+             *  1.1一致则不变,
+             *  1.2否则则要变更初始数量,并更新当前数量,当前数量=当前数量-旧初始数量+新初始数量
+             * 2:不存在库存,则新建
+             */
+             if(spareStore != null){
+                if(spareStore.getInitNum() != null){
+                    if(spareStore.getInitNum().compareTo(model.getInitStock()) !=0){
+                        spareStore.setNum(spareStore.getNum().subtract(spareStore.getInitNum()).add(model.getInitStock()) );
+                        spareStore.setInitNum(model.getInitStock());
+                        spareStore.setUpdateTime(time);
+                        spareStore.setUpdateUserId(userInfo.getUserId());
+                        spareStoreMapper.updateByPrimaryKey(spareStore);
+                    }
+                }else{
+                    spareStore.setNum(model.getInitStock());
+                    spareStore.setInitNum(model.getInitStock());
+                    spareStore.setUpdateTime(time);
+                    spareStore.setUpdateUserId(userInfo.getUserId());
+                    spareStoreMapper.updateByPrimaryKey(spareStore);
+                }
+            }else{
+                 spareStore = new SpareStore();
+                 spareStore.setSpareId(model.getId());
+                 spareStore.setId(IdGeneratorUtils.getObjectId());
+                 spareStore.setStoreId("9");
+                 BigDecimal price = model.getInitialValue();
+                 spareStore.setPrice(model.getInitialValue());
+                 spareStore.setNum(model.getInitStock() );
+                 spareStore.setInitNum(model.getInitStock() );
+                 spareStore.setInitPrice(model.getInitialValue());
+                 spareStore.setInitPurchasePrice(model.getInitialValue());
+                 spareStore.setCreatedTime(time);
+                 spareStore.setCreatedUserId(userInfo.getUserId());
+                 spareStore.setUpdateTime(time);
+                 spareStore.setUpdateUserId(userInfo.getUserId());
+                 spareStoreMapper.insert(spareStore);
+            }
+        }
         super.modModelByDTO(model);
     }
     private void saveFile(SparePartInfoDTO model) {