zss
2023-09-21 2dbc49184bd74845c8da694c20d6fd03d7ac87e0
修改   9.21
已添加9个文件
已修改56个文件
1407 ■■■■■ 文件已修改
base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/controller/TechnologyTemplateController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/mapper/TechnicalModelMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/mapper/TechnologyTemplateMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/pojo/MbomModel.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/pojo/TechnologyTemplate.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/pojo/dto/TechnicalModelDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/pojo/dto/TechnologyTemplateDto.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/DeviceService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/TechnologyTemplateService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyTemplateServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/resources/mapper/DeviceMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/resources/mapper/TechnologyTemplateMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/ProcessInspectVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/ProcessInspectServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/ProcessInspectMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManualMbomMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/mapper/ManualProductMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManualMbom.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManualProduct.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManualMbomService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManualProductService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualMbomServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualProductServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
production-server/src/main/resources/mapper/ManualProductMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/controller/SpecificationsController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/controller/StandardController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/mapper/MbomMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/mapper/TechniqueMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/pojo/Mbom.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java 209 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/MbomMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/TechniqueMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/TechnologyMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
base-server/src/main/java/com/yuanchu/mom/controller/TechnicalModelController.java
@@ -31,11 +31,11 @@
    @ApiOperation(value = "查询技术指标维护列表-->左边二级展示工序和工艺")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "type", value = "类型(为空=0橡胶连接器)", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "type", value = "类型(为空=0橡胶连接器)", dataTypeClass = String.class, required = true),
            @ApiImplicitParam(name = "message", value = "搜索内容", dataTypeClass = String.class)
    })
    @GetMapping("/selectAllTechTem")
    public Result selectAllTechTem(Integer type, String message) {
    public Result selectAllTechTem(String type, String message) {
        return Result.success(technicalModelService.selectAllTechTem(type, message));
    }
@@ -50,10 +50,10 @@
    @ApiOperation(value = "新增技术指标维护-->选择工序和工艺")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "type", value = "类型", dataTypeClass = Integer.class, required = true)
            @ApiImplicitParam(name = "type", value = "类型", dataTypeClass = String.class, required = true)
    })
    @GetMapping("/chooseTechFath")
    public Result chooseTechFath(Integer type) {
    public Result chooseTechFath(String type) {
        return Result.success(technicalModelService.chooseTechFath(type));
    }
base-server/src/main/java/com/yuanchu/mom/controller/TechnologyTemplateController.java
@@ -36,8 +36,13 @@
    @Autowired
    private TechnologyTemplateService technologyTemplateService;
    @ApiOperation(value = "新增工艺路线维护-->选择类型")
    @GetMapping("/chooseType")
    public Result chooseType() {
        return Result.success(technologyTemplateService.chooseType());
    }
    @ApiOperation(value = "新增工艺路线维护-->选择设备组")
    @ApiOperation(value = "新增工艺路线维护-->选择生产设备组")
    @GetMapping("/chooseDevGroup")
    public Result chooseDevGroup() {
        return Result.success(technologyTemplateService.chooseDevGroup());
@@ -45,10 +50,10 @@
    @ApiOperation(value = "新增工艺路线维护-->选择工序")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "type", value = "类型(为空=0橡胶连接器)", dataTypeClass = Integer.class, required = true)
            @ApiImplicitParam(name = "type", value = "类型(为空=第一个)", dataTypeClass = String.class, required = true)
    })
    @GetMapping("/chooseTech")
    public Result chooseTech(Integer type) {
    public Result chooseTech(String type) {
        return Result.success(technologyTemplateService.chooseTech(type));
    }
@@ -61,11 +66,11 @@
    @ApiOperation(value = "查询工艺路线列表-->左边二级展示")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "type", value = "类型(为空=0橡胶连接器)", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "type", value = "类型(为空=0橡胶连接器)", dataTypeClass = String.class, required = true),
            @ApiImplicitParam(name = "message", value = "搜索内容", dataTypeClass = String.class)
    })
    @GetMapping("/selectAllTechTem")
    public Result selectAllTechTem(Integer type, String message) {
    public Result selectAllTechTem(String type, String message) {
        return Result.success(technologyTemplateService.selectAllTechTem(type, message));
    }
@@ -74,7 +79,7 @@
            @ApiImplicitParam(name = "father", value = "工序(父类)", dataTypeClass = String.class, required = true)
    })
    @GetMapping("/selectAllTechNam")
    public Result selectAllTechNam(String father,Integer id) {
    public Result selectAllTechNam(String father) {
        return Result.success(technologyTemplateService.selectAllTechNam(father));
    }
base-server/src/main/java/com/yuanchu/mom/mapper/DeviceMapper.java
@@ -25,13 +25,13 @@
    //根据分组查询设备名
    List<Map<String, Object>> getDeviceNameByGroup(String deviceGroup);
    //选择所有设备组
    //选择生产设备组
    List<Map<String, Object>> chooseDevGroup();
    //批量删除
    void delAllDevice(String ids);
    //原材料检验-->选择设备
    //选择检验设备
    List<Map<String, Object>> chooseDevice();
    //新增--选择设备组
base-server/src/main/java/com/yuanchu/mom/mapper/TechnicalModelMapper.java
@@ -16,13 +16,13 @@
public interface TechnicalModelMapper extends BaseMapper<TechnicalModel> {
    //查询技术指标维护列表-->左边二级展示工序和工艺
    List<Map<String, Object>> selectAllTechTem(Integer type, String message);
    List<Map<String, Object>> selectAllTechTem(String type, String message);
    //查询技术指标维护列表-->右边展示该工艺下的检验项目
    List<Map<String, Object>> selectAllTechNam(Integer id);
    //新增技术指标维护-->选择工序和工艺
    List<Map<String,Object>> chooseTechFath(Integer type);
    List<Map<String,Object>> chooseTechFath(String type);
    //新增技术指标维护-->选择项目父类
    List<String> chooseProFath(Integer id);
base-server/src/main/java/com/yuanchu/mom/mapper/TechnologyTemplateMapper.java
@@ -17,10 +17,10 @@
public interface TechnologyTemplateMapper extends BaseMapper<TechnologyTemplate> {
    //新增工艺路线-->选择工序
    List<String> chooseTech(Integer type);
    List<String> chooseTech(String type);
    //查询工艺路线列表-->左边一级展示
    List<Map<String,Object>> selectAllTechTem(Integer type,String message);
    List<Map<String,Object>> selectAllTechTem(String type,String message);
    //查询工艺路线列表-->右边展示工艺和设备和元件
    List<Map<String, Object>> selectAllTechNam(String father);
@@ -35,5 +35,8 @@
    //批量删除
    void delAllTech(String ids);
    //新增工艺路线-->选择类型
    List<String> chooseType();
}
base-server/src/main/java/com/yuanchu/mom/pojo/MbomModel.java
@@ -48,11 +48,6 @@
    private String unit;
    /**
     * ä¾›åº”商
     **/
    private String supplier;
    /**
     * è´¨é‡è¿½æº¯å·
     **/
    private String qualityTraceability;
base-server/src/main/java/com/yuanchu/mom/pojo/TechnologyTemplate.java
@@ -45,9 +45,9 @@
    private String father;
    /**
     * 0:橡胶连接器;1:金属连接器;2:湿插拔电连接器;3:分支组件
     * ç±»åž‹ æ©¡èƒ¶è¿žæŽ¥å™¨ æ’头;金属连接器;湿插拔电连接器;分支组件
     **/
    private Integer type;
    private String type;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
@@ -68,9 +68,5 @@
     **/
    private String deviceGroup;
    /**
     * å…ƒä»¶
     **/
    private String element;
}
base-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomModelDto2.java
@@ -18,10 +18,6 @@
    private String unit;
    @JsonSerialize
    @NotBlank(message = "供应商不能为空")
    private String supplier;
    @JsonSerialize
    @NotBlank(message = "质量追溯号不能为空")
    private String qualityTraceability;
base-server/src/main/java/com/yuanchu/mom/pojo/dto/TechnicalModelDto.java
@@ -24,6 +24,5 @@
    private String name;
    @JsonSerialize
    @NotBlank(message = "单位不能为空")
    private String unit;
}
base-server/src/main/java/com/yuanchu/mom/pojo/dto/TechnologyTemplateDto.java
@@ -11,8 +11,8 @@
public class TechnologyTemplateDto {
    @JsonSerialize
    @NotNull(message = "类型不能为空")
    private Integer type;
    @NotBlank(message = "类型不能为空")
    private String type;
    @JsonSerialize
    @NotBlank(message = "工序不能为空")
@@ -22,9 +22,6 @@
    @NotBlank(message = "工艺不能为空")
    private String name;
    @JsonSerialize
    @NotBlank(message = "元件不能为空")
    private String element;
    @JsonSerialize
    @NotBlank(message = "设备组不能为空")
base-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -67,7 +67,7 @@
    void delAllDevice(String ids);
    /**
     * åŽŸææ–™æ£€éªŒ-->选择设备
     * é€‰æ‹©æ£€éªŒè®¾å¤‡
     * @return
     */
    List<Map<String,Object>> chooseDevice();
base-server/src/main/java/com/yuanchu/mom/service/TechnicalModelService.java
@@ -22,7 +22,7 @@
     * @param message
     * @return
     */
    List<Map<String, Object>> selectAllTechTem(Integer type, String message);
    List<Map<String, Object>> selectAllTechTem(String type, String message);
    /**
     * æŸ¥è¯¢æŠ€æœ¯æŒ‡æ ‡ç»´æŠ¤åˆ—表-->右边展示该工艺下的检验项目
@@ -37,7 +37,7 @@
     *
     * @return
     */
    List<Map<String, Object>> chooseTechFath(Integer type);
    List<Map<String, Object>> chooseTechFath(String type);
    /**
     * æ–°å¢žæŠ€æœ¯æŒ‡æ ‡ç»´æŠ¤-->选择项目(父类)
base-server/src/main/java/com/yuanchu/mom/service/TechnologyTemplateService.java
@@ -18,7 +18,13 @@
public interface TechnologyTemplateService extends IService<TechnologyTemplate> {
    /**
     * æ–°å¢žå·¥è‰ºè·¯çº¿-->选择设备组
     * æ–°å¢žå·¥è‰ºè·¯çº¿-->选择类型
     * @return
     */
    List<String> chooseType();
    /**
     * æ–°å¢žå·¥è‰ºè·¯çº¿-->选择生产设备组
     * @return
     */
    List<Map<String,Object>> chooseDevGroup();
@@ -27,7 +33,7 @@
     *新增工艺路线-->选择工序
     * @return
     */
    List<String> chooseTech(Integer type);
    List<String> chooseTech(String type);
    /**
     * æ–°å¢žå·¥è‰ºè·¯çº¿
@@ -40,7 +46,7 @@
     * @param type
     * @return
     */
    List<Map<String,Object>> selectAllTechTem(Integer type,String message);
    List<Map<String,Object>> selectAllTechTem(String type,String message);
    /**
     * æŸ¥è¯¢å·¥è‰ºè·¯çº¿åˆ—表-->右边展示工艺和设备
@@ -75,7 +81,6 @@
     * @param ids
     */
    void delAllTech(String ids);
}
base-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -78,7 +78,7 @@
        deviceMapper.delAllDevice(ids);
    }
    //原材料检验-->选择设备
    //选择检验设备
    @Override
    public List<Map<String, Object>> chooseDevice() {
        return deviceMapper.chooseDevice();
base-server/src/main/java/com/yuanchu/mom/service/impl/TechnicalModelServiceImpl.java
@@ -26,12 +26,10 @@
    @Resource
    TechnicalModelMapper technicalModelMapper;
    @Resource
    TechniqueModelMapper techniqueModelMapper;
    //查询技术指标维护列表-->左边二级展示工序和工艺
    @Override
    public List<Map<String, Object>> selectAllTechTem(Integer type, String message) {
    public List<Map<String, Object>> selectAllTechTem(String type, String message) {
        return technicalModelMapper.selectAllTechTem(type, message);
    }
@@ -43,7 +41,7 @@
    //新增技术指标维护-->选择工序和工艺
    @Override
    public List<Map<String, Object>> chooseTechFath(Integer type) {
    public List<Map<String, Object>> chooseTechFath(String type) {
        return technicalModelMapper.chooseTechFath(type);
    }
@@ -90,8 +88,6 @@
        technicalModel.setState(0);
        technicalModel.setId(id);
        technicalModelMapper.updateById(technicalModel);
        //删除生产工艺
        techniqueModelMapper.delTechById(id);
    }
    //批量删除
@@ -99,7 +95,6 @@
    @Transactional(rollbackFor = Exception.class)
    public void delAllTech(String ids) {
        technicalModelMapper.delAllTech(ids);
        techniqueModelMapper.delAllTech(ids);
    }
}
base-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyTemplateServiceImpl.java
@@ -34,19 +34,19 @@
    TechnicalModelMapper technicalModelMapper;
    @Resource
    TechniqueModelMapper techniqueModelMapper;
    @Resource
    SelfcheckModelMapper selfcheckModelMapper;
    @Resource
    RecordModelMapper recordModelMapper;
    @Resource
    MbomModelMapper mbomModelMapper;
    //新增工艺路线-->选择设备组
    //新增工艺路线-->选择类型
    @Override
    public List<String> chooseType() {
        return technologyTemplateMapper.chooseType();
    }
    //新增工艺路线-->选择生产设备组
    @Override
    public List<Map<String, Object>> chooseDevGroup() {
        return deviceMapper.chooseDevGroup();
@@ -54,7 +54,7 @@
    //新增工艺路线-->选择工序
    @Override
    public List<String> chooseTech(Integer type) {
    public List<String> chooseTech(String type) {
        return technologyTemplateMapper.chooseTech(type);
    }
@@ -80,7 +80,7 @@
    //查询工艺路线列表-->左边一级展示
    @Override
    public List<Map<String, Object>> selectAllTechTem(Integer type, String message) {
    public List<Map<String, Object>> selectAllTechTem(String type, String message) {
        return technologyTemplateMapper.selectAllTechTem(type, message);
    }
@@ -117,10 +117,6 @@
        technologyTemplateMapper.updateById(technologyTemplate);
        //删除技术指标维护表
        technicalModelMapper.delTeMoByTechId(id);
        //删除生产工艺维护表
        techniqueModelMapper.delQueByTechId(id);
        //删除自检项目维护表
        selfcheckModelMapper.delSelfByTechId(id);
        //删除记录内容维护表
        recordModelMapper.delRecordByTechId(id);
        //删除物料清单维护表
@@ -135,10 +131,6 @@
        technologyTemplateMapper.delAllTech(ids);
        //批量删除指标维护表
        technicalModelMapper.delAllByTechId(ids);
        //批量删除生产工艺维护表
        techniqueModelMapper.delAllByTechId(ids);
        //批量删除自检项目维护表
        selfcheckModelMapper.delAllByTechId(ids);
        //批量删除记录内容维护表
        recordModelMapper.delAllByTechId(ids);
        //批量删除物料清单维护表
base-server/src/main/resources/mapper/DeviceMapper.xml
@@ -41,15 +41,16 @@
          and father = #{deviceGroup}
          and device_status in (1, 5)
    </select>
    <!--选择设备组-->
    <!--选择生产设备组-->
    <select id="chooseDevGroup" resultType="java.util.Map">
        select distinct father
        from mom_ocean.device
        where state = 1
          and device_status in (1, 5)
          and type = 1
    </select>
    <!--原材料检验-选择设备-->
    <!--选择检验设备-->
    <resultMap id="oneMap" type="map">
        <result property="name" column="father"/>
        <collection property="children" resultMap="twoMap" javaType="List"/>
@@ -63,6 +64,7 @@
        from mom_ocean.device
        where state = 1
          and device_status in (1, 5)
          and type = 2
    </select>
    <!--新增选择设备组-->
base-server/src/main/resources/mapper/TechnologyTemplateMapper.xml
@@ -23,7 +23,6 @@
    <select id="selectAllTechNam" resultType="java.util.Map">
        select id,
               name,
               element,
               device_group
        from mom_ocean.technology_template
        where state = 1
@@ -40,7 +39,16 @@
    <!--根据id查看详情-->
    <select id="selecTechById" resultType="java.util.Map">
        select * from mom_ocean.technology_template where state=1
        select *
        from mom_ocean.technology_template
        where state = 1
          and id = #{id}
    </select>
    <!--新增工艺路线-选择类型-->
    <select id="chooseType" resultType="java.lang.String">
        select distinct type
        from mom_ocean.technology_template
        where state = 1
    </select>
</mapper>
inspect-server/src/main/java/com/yuanchu/mom/controller/InspectionItemController.java
@@ -2,6 +2,7 @@
import com.yuanchu.mom.pojo.dto.InspectionItemDto;
import com.yuanchu.mom.pojo.dto.UpdateInspectionItemDto;
import com.yuanchu.mom.service.DeviceService;
import com.yuanchu.mom.service.InspectionItemService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.utils.Jwt;
@@ -11,6 +12,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -31,6 +33,9 @@
    @Autowired
    private InspectionItemService inspectionItemService;
    @Resource
    DeviceService deviceService;
    @Autowired
    private Jwt jwt;
@@ -46,15 +51,10 @@
        return Result.success(inspectionItemDto);
    }
    @ApiOperation(value = "新增检验单-->选择设备")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "technologyId", value = "关联的工艺路线id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "father", value = "项目父名称", dataTypeClass = String.class, required = true),
            @ApiImplicitParam(name = "name", value = "项目名称", dataTypeClass = String.class, required = true)
    })
    @ApiOperation(value = "新增检验单-->选择检验设备")
    @GetMapping("/chooseDev")
    public Result<?> chooseDev(Integer technologyId, String father, String name) {
        return Result.success(inspectionItemService.chooseDev(technologyId, father, name));
    public Result<?> chooseDev() {
        return Result.success(deviceService.chooseDevice());
    }
    @ApiOperation(value = "检验项目的检验值-->失去焦点发起该请求")
inspect-server/src/main/java/com/yuanchu/mom/controller/RawInsProductController.java
@@ -36,7 +36,7 @@
    @Resource
    Jwt jwt;
    @ApiOperation(value = "选择设备")
    @ApiOperation(value = "选择检验设备")
    @GetMapping("/selectDevice")
    public Result selectDevice() {
        return Result.success(deviceService.chooseDevice());
inspect-server/src/main/java/com/yuanchu/mom/pojo/vo/ProcessInspectVo.java
@@ -30,8 +30,8 @@
    @NotBlank(message = "工艺不能为空!")
    private String techname;
    @NotNull(message = "工艺路线id不能为空!")
    private Integer techId;
    @NotNull(message = "编制工序id不能为空!")
    private Integer mtId;
    @NotNull(message = "数量不能为空!")
    private Integer quantity;
inspect-server/src/main/java/com/yuanchu/mom/service/InspectionItemService.java
@@ -41,7 +41,7 @@
     * @param name
     * @return
     */
    List<Map<String, Object>> chooseDev(Integer technologyId, String father, String name);
    //List<Map<String, Object>> chooseDev(Integer technologyId, String father, String name);
    /**
inspect-server/src/main/java/com/yuanchu/mom/service/RawInspectService.java
@@ -22,7 +22,7 @@
     * @param userId
     * @param rawInspectVo
     */
    String addRawInspects(String userId, RawInspectVo rawInspectVo) throws Exception;
    String addRawInspects(String userId, RawInspectVo rawInspectVo);
    /**
     * åˆ†é¡µæŸ¥è¯¢åŽŸææ–™æ£€éªŒå•åˆ—è¡¨
inspect-server/src/main/java/com/yuanchu/mom/service/impl/FinishedInspectServiceImpl.java
@@ -40,7 +40,7 @@
    ManualTechnologyMapper manualTechnologyMapper;
    @Resource
    ProductService productService;
    ManualProductService manualProductService;
    @Resource
    InspectionItemService inspectionItemService;
@@ -66,8 +66,8 @@
    public Integer addProcessInspectionSheet(String userId, FinishedInspectVo finishedInspectVo) {
        //根据生产订单id查询编制工序的最后一道工艺
        List<ManualTechnology> manualTechnologyList = manualTechnologyMapper.selAllByMoId(finishedInspectVo.getId());
        //获取最后一道工艺关联的工艺路线id
        Integer technologyId = manualTechnologyList.get(0).getTechnologyId();
        //获取编制工艺最后一道工艺的id
        Integer mtId = manualTechnologyList.get(0).getId();
        /*新增成品检验单*/
        FinishedInspect finishedInspect = new FinishedInspect();
        finishedInspect.setUserId(Integer.parseInt(userId));
@@ -80,16 +80,13 @@
        finishedInspect.setSpecificationsModel(finishedInspectVo.getSpecificationsModel());
        finishedInspect.setMaterial(finishedInspectVo.getMaterial());
        finishedInspect.setMaterialCode(finishedInspectVo.getMcode());
        finishedInspect.setTechId(technologyId);
        //finishedInspect.setTechId(technologyId);
        finishedInspectMapper.insert(finishedInspect);
        /*批量新增成品检验项目单*/
        /*//查询标准BOM技术指标中该型号工艺下最新版本的检验项目
        Integer ver = productService.selectVerByPro(specificationId).get(0);//该型号下技术指标最新版本*/
        List<Product> productList = productService.selProByVerSpe(technologyId);
        List<InspectionItem> inspectionItemList = productList.stream().map(product -> {
        List<ManualProduct> manualProductList = manualProductService.selByMtid(mtId);
        List<InspectionItem> inspectionItemList = manualProductList.stream().map(manualProduct -> {
            InspectionItem inspectionItem = new InspectionItem();
            BeanUtils.copyProperties(product, inspectionItem);
            BeanUtils.copyProperties(manualProductList, inspectionItem);
            inspectionItem.setId(null);
            inspectionItem.setCreateTime(new Date());
            inspectionItem.setUpdateTime(new Date());
@@ -101,13 +98,14 @@
        return finishedInspect.getId();
    }
    //上报(更新检验状态)
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String updateFinishInspectsById(String username,Integer id) {
    public String updateFinishInspectsById(String username, Integer id) {
        /*更新检验单里面的检验结论*/
        //先判断检验结果
        List<Integer> results = inspectionItemMapper.getResult(id,2);
        List<Integer> results = inspectionItemMapper.getResult(id, 2);
        int count = 0;
        for (Integer result : results) {
            if (result != null && result == 1) {
@@ -144,7 +142,7 @@
                    .eq(Repertory::getUnit, finishedInspect.getUnit())
                    .eq(Repertory::getType, 1);
            Repertory rep = repertoryMapper.selectOne(queryWrapper);
            if (rep != null ) {
            if (rep != null) {
                rep.setNumber(rep.getNumber() + finishedInspect.getQuantity());
                rep.setUserName(username);
                repertoryMapper.updateById(rep);
@@ -169,7 +167,7 @@
    //分页查询成品检验单列表
    @Override
    public IPage<Map<String, Object>> selectFinishedInspectPage(Page<Object> page, Integer result, String material) {
        return finishedInspectMapper.selectFinishedInspectPage(page, result,material);
        return finishedInspectMapper.selectFinishedInspectPage(page, result, material);
    }
    //根据检验单id查询成品检验单详情
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InspectionItemServiceImpl.java
@@ -47,12 +47,12 @@
    //新增过程检验单-->选择设备
    @Override
    /*@Override
    public List<Map<String, Object>> chooseDev(Integer technologyId, String father, String name) {
        //该工艺id下生产工艺最新版本
        Integer ver = techniqueMapper.selectVerByTeId(technologyId).get(0);
        return techniqueMapper.selDevByVerTecIdFaNam(technologyId, father, name, ver);
    }
    }*/
    //更改设备
    @Override
@@ -73,15 +73,27 @@
        InspectionItem inspectionItem = inspectionItemMapper.selectById(updateInspectionItemDto.getInspectionItemId());
        inspectionItem.setInspectionValue(updateInspectionItemDto.getInspectionValue());
        inspectionItem.setDeviceId(updateInspectionItemDto.getDeviceId());
        List<Integer> list = Arrays.stream( updateInspectionItemDto.getInspectionValue().split(",")).map(s -> {
            int values = checkValues(inspectionItem.getRequired(),  inspectionItem.getInternal(), s);
            return values;
        }).collect(Collectors.toList());
        if (list.contains(0)) {
            //如果其中一个检验值不合格则该项目检验不合格
            inspectionItem.setResult(0);
        } else {
        if (updateInspectionItemDto.getInspectionValue().equals("过")){
            inspectionItem.setResult(1);
        }else if (updateInspectionItemDto.getInspectionValue().equals("不过")){
            inspectionItem.setResult(0);
        }else {
            char req = inspectionItem.getRequired().charAt(0);
            List<Integer> list = Arrays.stream(updateInspectionItemDto.getInspectionValue().split(",")).map(s -> {
                int values=2;
                if (req == '>' || req == '<' || req == '=') {
                    values = checkValues(inspectionItem.getRequired(),  inspectionItem.getInternal(), s);
                }else {
                    values = conValues(inspectionItem.getRequired(),  inspectionItem.getInternal(), s);
                }
                return values;
            }).collect(Collectors.toList());
            if (list.contains(0)) {
                //如果其中一个检验值不合格则该项目检验不合格
                inspectionItem.setResult(0);
            } else {
                inspectionItem.setResult(1);
            }
        }
        inspectionItem.setUsername(username);
        inspectionItemMapper.updateById(inspectionItem);
@@ -91,6 +103,19 @@
    /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
    //如果是±的操作
    private int conValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        double standVar = Double.parseDouble(standardValueStr);
        double controlVar = Double.parseDouble(controlValueStr);
        double detecVar = Double.parseDouble(detectionValueStr);
        double a = standVar + controlVar;
        double b = standVar - controlVar;
        if (detecVar >= b && detecVar <= a) {
            return 1;
        }
        return 0;
    }
    //如果是> , < ,=的操作
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
        boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
inspect-server/src/main/java/com/yuanchu/mom/service/impl/ProcessInspectServiceImpl.java
@@ -32,7 +32,7 @@
    ProcessInspectMapper processInspectMapper;
    @Resource
    ProductService productService;
    ManualProductService manualProductService;
    @Resource
    InspectionItemMapper inspectionItemMapper;
@@ -59,14 +59,10 @@
        BeanUtils.copyProperties(processInspectVo, processInspect);
        processInspectMapper.insert(processInspect);
        /*批量新增过程检验项目表*/
        /*//获取型号id
        Integer specificationId = getSpecificationId(processInspectVo.getMaterial(), processInspectVo.getMaterialCode(), processInspectVo.getSpecificationsModel());
        //查询标准BOM技术指标中该型号工艺下最新版本的检验项目
        Integer ver = productService.selectVerByPro(specificationId).get(0);//该型号下技术指标最新版本*/
        List<Product> productList = productService.selProByVerSpe(processInspectVo.getTechId());
        List<InspectionItem> inspectionItemList = productList.stream().map(product -> {
        List<ManualProduct> manualProductList = manualProductService.selByMtid(processInspectVo.getMtId());
        List<InspectionItem> inspectionItemList = manualProductList.stream().map(manualProduct -> {
            InspectionItem inspectionItem = new InspectionItem();
            BeanUtils.copyProperties(product, inspectionItem);
            BeanUtils.copyProperties(manualProduct, inspectionItem);
            inspectionItem.setCreateTime(new Date());
            inspectionItem.setUpdateTime(new Date());
            inspectionItem.setInspectId(processInspect.getId());
@@ -83,7 +79,7 @@
    public String updateProcessInspectsById(Integer id) {
        /*更新检验单里面的检验结论*/
        //先判断检验结果
        List<Integer> results = inspectionItemMapper.getResult(id,1);
        List<Integer> results = inspectionItemMapper.getResult(id, 1);
        int count = 0;
        for (Integer result : results) {
            if (result != null && result == 1) {
@@ -103,7 +99,7 @@
        /*如果检验结论为不合格,则需要新增不合格检验单*/
        if (processInspect.getResult() == 0) {
            InspectUnaccepted processUnaccepted = InspectUnaccepted.builder()
                    .reason(processInspect.getMaterial() +processInspect.getTechname()+ "不合格")  //暂且定义为产品名称+工艺不合格
                    .reason(processInspect.getMaterial() + processInspect.getTechname() + "不合格")  //暂且定义为产品名称+工艺不合格
                    .rawInspectId(id)
                    .type(2)        //类型为过程检验
                    .build();
@@ -121,7 +117,7 @@
    //分页查询过程检验单列表
    @Override
    public IPage<Map<String, Object>> selectProcessInspectsList(Page<Object> page, String techfather, Integer result, String name) {
        return processInspectMapper.selectProcessInspectsList(page,techfather,result,name);
        return processInspectMapper.selectProcessInspectsList(page, techfather, result, name);
    }
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInsProductServiceImpl.java
@@ -52,8 +52,14 @@
        }else if (testValue.equals("不过")){
            rawInsProduct.setTestState(0);
        }else {
            char req = required.charAt(0);
            List<Integer> list = Arrays.stream(testValue.split(",")).map(s -> {
                int values = checkValues(required, internal, s);
                int values=2;
                if (req == '>' || req == '<' || req == '=') {
                    values = checkValues(required, internal, s);
                }else {
                    values = conValues(required, internal, s);
                }
                return values;
            }).collect(Collectors.toList());
            if (list.contains(0)) {
@@ -83,24 +89,28 @@
    }
    /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
    //如果是±的操作
    private int conValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        double standVar = Double.parseDouble(standardValueStr);
        double controlVar = Double.parseDouble(controlValueStr);
        double detecVar = Double.parseDouble(detectionValueStr);
        double a = standVar + controlVar;
        double b = standVar - controlVar;
        if (detecVar>=b && detecVar<=a){
        if (detecVar >= b && detecVar <= a) {
            return 1;
        }
        return 0;
        /*boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
    }
    //如果是> , < ,=的操作
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
        boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
        if (isStandardValueSatisfied && isControlValueSatisfied) {
            return 1;
        } else {
            return 0;
        }*/
        }
    }
    private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
@@ -137,5 +147,6 @@
            }
        }
    }
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/RawInspectServiceImpl.java
@@ -42,21 +42,11 @@
    //新增原材料检验单
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String addRawInspects(String userId, RawInspectVo rawInspectVo) throws Exception {
    public String addRawInspects(String userId, RawInspectVo rawInspectVo) {
        //报检人(新增检验单的人)
        rawInspectVo.setUserName(userMapper.selectById(userId).getName());
        //校验标准值,内控值格式
        List<RawInsProductVo> rawInsProductVos = rawInspectVo.getRawInsProducts();
        /*for (RawInsProductVo rawInsProductVo : rawInsProductVos) {
            char internal = rawInsProductVo.getInternal().charAt(0);
            char required = rawInsProductVo.getRequired().charAt(0);
            if (internal != '>' && internal != '<' && internal != '=') {
                return "内控值输入格式有问题!";
            }
            if (required != '>' && required != '<' && required != '=') {
                return "标准值输入格式有问题!";
            }
        }*/
        /*新增原材料检验单*/
        RawInspect rawInspect = new RawInspect();
        BeanUtils.copyProperties(rawInspectVo, rawInspect);
@@ -75,8 +65,14 @@
                    String required = rawInsProduct.getRequired();//标准值
                    String internal = rawInsProduct.getInternal();//内控值
                    String testValue = rawInsProduct.getTestValue();//检测值
                    char req = required.charAt(0);
                    List<Integer> list = Arrays.stream(testValue.split(",")).map(s -> {
                        int values = checkValues(required, internal, s);
                        int values=2;
                        if (req == '>' || req == '<' || req == '=') {
                            values = checkValues(required, internal, s);
                        }else {
                            values = conValues(required, internal, s);
                        }
                        return values;
                    }).collect(Collectors.toList());
                    if (list.contains(0)) {
@@ -149,7 +145,8 @@
    /*判断检测值是否满足标准值和内控值的要求,如果不满足则检验结论为不合格*/
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
    //如果是±的操作
    private int conValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        double standVar = Double.parseDouble(standardValueStr);
        double controlVar = Double.parseDouble(controlValueStr);
        double detecVar = Double.parseDouble(detectionValueStr);
@@ -159,14 +156,17 @@
            return 1;
        }
        return 0;
        /*boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
    }
    //如果是> , < ,=的操作
    private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) {
        boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr);
        boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr);
        if (isStandardValueSatisfied && isControlValueSatisfied) {
            return 1;
        } else {
            return 0;
        }*/
        }
    }
    private boolean isValueSatisfied(String valueStr, String detectionValueStr) {
inspect-server/src/main/resources/mapper/ProcessInspectMapper.xml
@@ -19,7 +19,7 @@
        <collection property="children" resultMap="threeMap" javaType="List"/>
    </resultMap>
    <resultMap id="threeMap" type="map">
        <id property="id" column="technologyId"/>
        <id property="id" column="mtId"/>
        <result property="name" column="techname"/>
    </resultMap>
    <select id="chooseMater" resultMap="oneMap">
@@ -27,7 +27,7 @@
               code,
               specifications,
               unit,
               technology_id technologyId,
               mt.id  mtId,
               techfather,
               techname
        from mom_ocean.manual_technology mt
inventory-server/src/main/java/com/yuanchu/mom/Task/DataPullTask.java
@@ -1,6 +1,8 @@
package com.yuanchu.mom.Task;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yuanchu.mom.pojo.Sale;
import com.yuanchu.mom.pojo.SaleMaterial;
import com.yuanchu.mom.service.SaleMaterialService;
@@ -30,7 +32,7 @@
        //获取前一天凌晨时间
        String pattern = "yyyy-MM-dd HH:mm:ss";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        String dateTime = LocalDateTime.now().minusDays(1).with(LocalTime.of(0, 0, 0)).format(formatter);
        String dateTime = LocalDateTime.now().minusDays(1).with(LocalTime.of(4, 0, 0)).format(formatter);
        //获取主销售数据
        List<Map<String, Object>> order = SyncOrder.getMainOrder(dateTime);
        List<Sale> list = order.stream().map(orde -> {
@@ -46,6 +48,8 @@
            sale.setNote(String.valueOf(orde.get("comment")));//备注
            return sale;
        }).collect(Collectors.toList());
        //去重
        list.removeIf(sale -> ObjectUtils.isNotEmpty(saleService.getOne(Wrappers.<Sale>query().eq("order_number", sale.getOrderNumber()))));
        saleService.saveBatch(list);
        for (Sale sale : list) {
            List<Map<String, Object>> innerOrder = SyncOrder.getInnerOrder(dateTime, sale.getOrderNumber());
inventory-server/src/main/java/com/yuanchu/mom/service/impl/OrdersServiceImpl.java
@@ -6,17 +6,17 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.OrdersService;
import com.yuanchu.mom.service.SpecificationsService;
import com.yuanchu.mom.service.StandardService;
import com.yuanchu.mom.service.*;
import com.yuanchu.mom.utils.MyUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * è®¢å•(Order)表服务实现类
@@ -46,10 +46,22 @@
    ManufactureOrderMapper manufactureOrderMapper;
    @Resource
    ManualTechnologyMapper manualTechnologyMapper;
    ManualTechnologyService manualTechnologyService;
    @Resource
    TechnologyMapper technologyMapper;
    @Resource
    ProductMapper productMapper;
    @Resource
    MbomMapper mbomMapper;
    @Resource
    ManualProductService manualProductService;
    @Resource
    ManualMbomService manualMbomService;
    //查询所有订单列表
@@ -97,17 +109,54 @@
        queryWrapper.eq(Technology::getVersion,version);
        queryWrapper.orderByAsc(Technology::getFather);
        List<Technology> technologyList = technologyMapper.selectList(queryWrapper);
        for (Technology technology : technologyList) {
        List<ManualTechnology> manualTechnologyList = technologyList.stream().map(technology -> {
            ManualTechnology manualTechnology = ManualTechnology.builder()
                    .techname(technology.getName())
                    .techfather(technology.getFather())
                    .deviceGroup(technology.getDeviceGroup())
                    .manufactureOrderId(manufactureOrder.getId())
                    .productionQuota(technology.getProductionQuota())
                    .technologyId(technology.getId())
                    .techname(technology.getName()) //工艺
                    .techfather(technology.getFather()) //工序
                    .deviceGroup(technology.getDeviceGroup()) //生产设备组
                    .manufactureOrderId(manufactureOrder.getId()) //生产订单id
                    .productionQuota(technology.getProductionQuota()) //生产效率
                    .technologyId(technology.getId()) //标准bom中工艺路线id
                    .build();
            //新增编制工序表
            manualTechnologyMapper.insert(manualTechnology);
            return manualTechnology;
        }).collect(Collectors.toList());
        /*新增编制工艺表*/
        manualTechnologyService.saveBatch(manualTechnologyList);
        //根据标准bom的工艺路线id查询标准bom中的技术指标
        for (ManualTechnology manualTechnology : manualTechnologyList) {
            List<Product> productList = productMapper.selProByVerSpe(manualTechnology.getTechnologyId());
            List<ManualProduct> manualProducts = new ArrayList<>();
            for (Product product : productList) {
                ManualProduct manualProduct = ManualProduct.builder()
                        .manualTechnologyId(manualTechnology.getId()) //关联 ç”Ÿäº§è®¢å•id
                        .name(product.getName())
                        .father(product.getFather())
                        .unit(product.getUnit())
                        .required(product.getRequired())
                        .internal(product.getInternal())
                        .build();
                manualProducts.add(manualProduct);
            }
            /*新增编制技术指标表*/
            manualProductService.saveBatch(manualProducts);
        }
        //根据标准bom的工艺路线id查询标准bom中的物料清单
        for (ManualTechnology manualTechnology : manualTechnologyList) {
            List<Mbom> mbomList = mbomMapper.selectList(Wrappers.<Mbom>query().eq("technology_id",manualTechnology.getTechnologyId()));
            List<ManualMbom> manualMboms = new ArrayList<>();
            for (Mbom mbom : mbomList) {
                ManualMbom manualMbom = ManualMbom.builder()
                        .manualTechnologyId(manualTechnology.getId()) //关联 ç”Ÿäº§è®¢å•id
                        .name(mbom.getName())
                        .unit(mbom.getUnit())
                        .num(mbom.getNum())
                        .qualityTraceability(mbom.getQualityTraceability())
                        .specifications(mbom.getSpecifications())
                        .build();
                manualMboms.add(manualMbom);
            }
            /*新增编制物料清单表*/
            manualMbomService.saveBatch(manualMboms);
        }
    }
@@ -123,7 +172,7 @@
        //获取规格名称和型号名称
        String[] split = specification.split("-");
        String stName = split[0];
        String spName = split[1];
        String spName = split[1]+split[2];
        //获取规格id
        Standard standard = standardService.getOne(Wrappers.<Standard>query()
                .eq("name", stName)
production-server/src/main/java/com/yuanchu/mom/mapper/ManualMbomMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.ManualMbom;
/**
 * ç¼–制物料清单表(ManualMbom)表数据库访问层
 *
 * @author zss
 * @since 2023-09-21 13:20:48
 */
public interface ManualMbomMapper extends BaseMapper<ManualMbom> {
}
production-server/src/main/java/com/yuanchu/mom/mapper/ManualProductMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.ManualProduct;
import java.util.List;
/**
 * ç¼–制技术指标表(ManualProduct)表数据库访问层
 *
 * @author zss
 * @since 2023-09-21 13:21:07
 */
public interface ManualProductMapper extends BaseMapper<ManualProduct> {
    //根据编制工艺id查询所有
    List<ManualProduct> selByMtid(Integer mtId);
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManualMbom.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
/**
 * ç¼–制物料清单表(ManualMbom)表实体类
 *
 * @author zss
 * @since 2023-09-21 13:20:48
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Builder
@TableName("manual_mbom")
public class ManualMbom implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     **/
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * åŽŸææ–™åç§°
     **/
    private String name;
    /**
     * å•位
     **/
    private String unit;
    /**
     * æ•°é‡
     **/
    private Integer num;
    /**
     * è´¨é‡è¿½æº¯å·
     **/
    private String qualityTraceability;
    /**
     * (原材料的)规格型号
     **/
    private String specifications;
    /**
     * å…³è” ç¼–制工艺表id
     **/
    private Integer manualTechnologyId;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManualProduct.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.io.Serializable;
/**
 * ç¼–制技术指标表(ManualProduct)表实体类
 *
 * @author zss
 * @since 2023-09-21 13:21:07
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Builder
@TableName("manual_product")
public class ManualProduct implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     **/
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * é¡¹ç›®åç§°
     **/
    private String name;
    /**
     * é¡¹ç›®çˆ¶ç±»
     **/
    private String father;
    /**
     * å•位
     **/
    private String unit;
    /**
     * æ ‡å‡†å€¼
     **/
    private String required;
    /**
     * å†…控值
     **/
    private String internal;
    /**
     * å…³è” ç¼–制工艺表id
     **/
    private Integer manualTechnologyId;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime;
}
production-server/src/main/java/com/yuanchu/mom/pojo/ManualTechnology.java
@@ -14,7 +14,7 @@
 * ç¼–制工序表(ManualTechnology)表实体类
 *
 * @author zss
 * @since 2023-08-17 14:16:46
 * @since 2023-09-21 12:51:31
 */
@Data
@Accessors(chain = true)
@@ -61,7 +61,6 @@
    private Integer technologyId;
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    @TableLogic(value = "1", delval = "0")
    private Integer state;
    @TableField(fill = FieldFill.INSERT)
production-server/src/main/java/com/yuanchu/mom/service/ManualMbomService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.ManualMbom;
/**
 * ç¼–制物料清单表(ManualMbom)表服务接口
 *
 * @author zss
 * @since 2023-09-21 13:37:26
 */
public interface ManualMbomService extends IService<ManualMbom> {
}
production-server/src/main/java/com/yuanchu/mom/service/ManualProductService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.ManualProduct;
import java.util.List;
/**
 * ç¼–制技术指标表(ManualProduct)表服务接口
 *
 * @author zss
 * @since 2023-09-21 13:37:17
 */
public interface ManualProductService extends IService<ManualProduct> {
    /**
     * æ ¹æ®ç¼–制工艺id查询所有
     * @param mtId
     * @return
     */
    List<ManualProduct> selByMtid(Integer mtId);
}
production-server/src/main/java/com/yuanchu/mom/service/ManualTechnologyService.java
@@ -5,7 +5,6 @@
import com.yuanchu.mom.pojo.dto.ManualTechnologyDto;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualMbomServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ManualMbomMapper;
import com.yuanchu.mom.pojo.ManualMbom;
import com.yuanchu.mom.service.ManualMbomService;
import org.springframework.stereotype.Service;
/**
 * ç¼–制物料清单表(ManualMbom)表服务实现类
 *
 * @author zss
 * @since 2023-09-21 14:00:06
 */
@Service
public class ManualMbomServiceImpl extends ServiceImpl<ManualMbomMapper, ManualMbom> implements ManualMbomService {
}
production-server/src/main/java/com/yuanchu/mom/service/impl/ManualProductServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ManualProductMapper;
import com.yuanchu.mom.pojo.ManualProduct;
import com.yuanchu.mom.service.ManualProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
 * ç¼–制技术指标表(ManualProduct)表服务实现类
 *
 * @author zss
 * @since 2023-09-21 14:00:40
 */
@Service
public class ManualProductServiceImpl extends ServiceImpl<ManualProductMapper, ManualProduct> implements ManualProductService {
    @Resource
    ManualProductMapper manualProductMapper;
    //根据编制工艺id查询所有
    @Override
    public List<ManualProduct> selByMtid(Integer mtId) {
        return manualProductMapper.selByMtid(mtId);
    }
}
production-server/src/main/resources/mapper/ManualProductMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yuanchu.mom.mapper.ManualProductMapper">
    <!--根据编制工艺id查询所有-->
    <select id="selByMtid" resultType="com.yuanchu.mom.pojo.ManualProduct">
        select *
        from mom_ocean.manual_product
        where state = 1
          and manual_technology_id = #{mtId}
    </select>
</mapper>
standard-server/src/main/java/com/yuanchu/mom/controller/MaterialController.java
@@ -39,10 +39,20 @@
        return Result.success(materialService.selectTreeByMaterial());
    }
    @ApiOperation(value = "新增-->选择产品大类")
    @GetMapping("/chooseFather")
    public Result chooseFather() {
        return Result.success(materialService.chooseFather());
    }
    @ApiOperation("(1,2级)新增-->物料,标准,型号")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "spId", value = "复制选择的型号id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "ver", value = "复制选择的版本", dataTypeClass = Integer.class)
    })
    @PostMapping("/add")
    public Result<?> addMaterial(@Validated @RequestBody MaterialDto materialDto) {
        return Result.success(materialService.addMaterial(materialDto));
    public Result<?> addMaterial(@Validated @RequestBody MaterialDto materialDto,Integer spId,Integer ver) {
        return Result.success(materialService.addMaterial(materialDto,spId,ver));
    }
    @ApiOperation(value = "右侧数据展示-->选择版本")
standard-server/src/main/java/com/yuanchu/mom/controller/SpecificationsController.java
@@ -5,6 +5,8 @@
import com.yuanchu.mom.pojo.dto.StandardDto;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -27,9 +29,13 @@
    private SpecificationsService specificationsService;
    @ApiOperation("(4级)新增-->型号")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "spId", value = "复制选择的型号id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "ver", value = "复制选择的版本", dataTypeClass = Integer.class)
    })
    @PostMapping("/add")
    public Result<?> addSpecifications(@Validated @RequestBody SpecificationsDto specificationsDto) {
        return Result.success(specificationsService.addSpecifications(specificationsDto));
    public Result<?> addSpecifications(@Validated @RequestBody SpecificationsDto specificationsDto,Integer spId,Integer ver) {
        return Result.success(specificationsService.addSpecifications(specificationsDto,spId,ver));
    }
}
standard-server/src/main/java/com/yuanchu/mom/controller/StandardController.java
@@ -5,6 +5,8 @@
import com.yuanchu.mom.pojo.dto.StandardDto;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -27,9 +29,13 @@
    private StandardService standardService;
    @ApiOperation("(3级)新增-->标准,型号")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "spId", value = "复制选择的型号id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "ver", value = "复制选择的版本", dataTypeClass = Integer.class)
    })
    @PostMapping("/add")
    public Result<?> addStandard(@Validated @RequestBody StandardDto standardDto) {
        return Result.success(standardService.addStandard(standardDto));
    public Result<?> addStandard(@Validated @RequestBody StandardDto standardDto,Integer spId,Integer ver) {
        return Result.success(standardService.addStandard(standardDto,spId,ver));
    }
}
standard-server/src/main/java/com/yuanchu/mom/controller/TechnologyController.java
@@ -29,7 +29,7 @@
    @Autowired
    private TechnologyService technologyService;
    @ApiOperation("右上角新增-->工艺路线-->选择设备组")
    @ApiOperation("右上角新增-->工艺路线-->选择生产设备组")
    @GetMapping("/chooseDevice")
    public Result<?> chooseDevice() {
        return Result.success(technologyService.chooseDevice());
standard-server/src/main/java/com/yuanchu/mom/mapper/MbomMapper.java
@@ -31,5 +31,8 @@
    //根据物料清单id批量删除
    void delAllMbom(String ids);
    //根据工艺路线id查询物料清单
    List<Mbom> seleByTechId(Integer technologyId);
}
standard-server/src/main/java/com/yuanchu/mom/mapper/TechniqueMapper.java
@@ -39,10 +39,10 @@
    void delAllTeq(String ids);
    //根据工艺路线id查询所有版本
    List<Integer> selectVerByTeId(Integer technologyId);
    //List<Integer> selectVerByTeId(Integer technologyId);
    //查询该工艺下最新版本在一个检验项目下可以使用哪些设备
    List<Map<String, Object>> selDevByVerTecIdFaNam(Integer technologyId, String father, String name, Integer ver);
    //List<Map<String, Object>> selDevByVerTecIdFaNam(Integer technologyId, String father, String name, Integer ver);
    //根据id查看详情
    List<Map<String, Object>> selTeqById(Integer id);
standard-server/src/main/java/com/yuanchu/mom/mapper/TechnologyMapper.java
@@ -33,4 +33,7 @@
    //查询该型号工艺下最新版本的工艺id
    Integer selTech(String techfather, String techname, Integer version, Integer specificationId);
    //查询该型号下版本下的所有数据
    List<Technology> selAllByVerSpId(Integer spId, Integer ver);
}
standard-server/src/main/java/com/yuanchu/mom/pojo/Mbom.java
@@ -54,11 +54,6 @@
    private Integer num;
    /**
     * ä¾›åº”商
     **/
    private String supplier;
    /**
     * è´¨é‡è¿½æº¯å·
     **/
    private String qualityTraceability;
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MaterialDto.java
@@ -15,7 +15,7 @@
    private Integer type;
    @JsonSerialize
    @NotNull(message = "产品大类(4大类)不能为空")
    @NotBlank(message = "产品大类不能为空")
    private String father;
    @JsonSerialize
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/MbomDto2.java
@@ -26,12 +26,6 @@
    private Integer num;
    /**
     * ä¾›åº”商
     **/
    @NotBlank(message = "供应商不能为空!")
    private String supplier;
    /**
     * è´¨é‡è¿½æº¯å·
     **/
    @NotBlank(message = "质量追溯号不能为空!")
standard-server/src/main/java/com/yuanchu/mom/pojo/dto/ProductDto.java
@@ -28,7 +28,6 @@
    /**
     * å•位
     */
    @NotBlank(message = "单位不能为空!")
    private String unit;
    /**
standard-server/src/main/java/com/yuanchu/mom/service/MaterialService.java
@@ -14,6 +14,11 @@
*/
public interface MaterialService extends IService<Material> {
    /**
     *新增-->选择产品大类
     * @return
     */
    List<String> chooseFather();
    /**
     * æ ‡å‡†MOM-->左侧五级树展示
@@ -26,7 +31,7 @@
     * @param materialDto
     * @return
     */
    String addMaterial(MaterialDto materialDto);
    String addMaterial(MaterialDto materialDto,Integer spId,Integer ver);
    /**
@@ -36,4 +41,6 @@
     * @return
     */
    Integer addVersion(Integer specificationsId, Integer version);
}
standard-server/src/main/java/com/yuanchu/mom/service/SpecificationsService.java
@@ -23,6 +23,6 @@
     *   (4级)新增-->型号
     * @param specificationsDto
     */
    String addSpecifications(SpecificationsDto specificationsDto);
    String addSpecifications(SpecificationsDto specificationsDto,Integer spId,Integer ver);
}
standard-server/src/main/java/com/yuanchu/mom/service/StandardService.java
@@ -15,5 +15,5 @@
     * (3级)新增-->标准,型号
     * @param standardDto
     */
    String addStandard(StandardDto standardDto);
    String addStandard(StandardDto standardDto,Integer spId,Integer ver);
}
standard-server/src/main/java/com/yuanchu/mom/service/TechnologyService.java
@@ -32,7 +32,7 @@
    List<Map<String,Object>> selectAllTec(Integer specificationsId, Integer version,String message);
    /**
     * å³ä¸Šè§’新增-->工艺路线-->选择设备组
     * å³ä¸Šè§’新增-->工艺路线-->选择生产设备组
     * @return
     */
    List<Map<String, Object>> chooseDevice();
standard-server/src/main/java/com/yuanchu/mom/service/impl/MaterialServiceImpl.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.*;
@@ -13,6 +14,7 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -53,15 +55,6 @@
    MbomModelMapper mbomModelMapper;
    @Resource
    TechniqueService techniqueService;
    @Resource
    TechniqueModelMapper techniqueModelMapper;
    @Resource
    DeviceMapper deviceMapper;
    @Resource
    TechnologyMapper technologyMapper;
    @Resource
@@ -70,8 +63,12 @@
    @Resource
    MbomMapper mbomMapper;
    @Resource
    TechniqueMapper techniqueMapper;
    //新增-->选择产品大类
    @Override
    public List<String> chooseFather() {
        return technologyTemplateMapper.chooseType();
    }
    //标准MOM-->左侧五级树展示
    @Override
@@ -82,7 +79,7 @@
    //(1,2级)新增-->物料,标准,型号
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String addMaterial(MaterialDto materialDto) {
    public String addMaterial(MaterialDto materialDto, Integer spId, Integer ver) {
        //校验添加物料是否重复
        List<Material> materialList = materialMapper.selectList(Wrappers.<Material>query()
                .eq("type", materialDto.getType())
@@ -109,86 +106,111 @@
        specifications.setName(materialDto.getSpecifications());
        specifications.setStandardId(standard.getId());
        specificationsMapper.insert(specifications);
        /*新增标准BOM-->工艺路线(批量添加)*///0:橡胶连接器;1:金属连接器;2:湿插拔电连接器;3:分支组件
        Integer type = null;
        if (materialDto.getFather().equals("橡胶连接器")){
            type=0;
        }else if (materialDto.getFather().equals("金属连接器")){
            type=1;
        }else if(materialDto.getFather().equals("湿插拔电连接器")){
            type=2;
        }else if(materialDto.getFather().equals("分支组件")){
            type=3;
        }else return "添加物料【" + materialDto.getName() + "】成功";
        List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", type));
        List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
            Technology technology = new Technology();
            technology.setSpecificationsId(specifications.getId());
            technology.setFather(technologyTemplate.getFather());
            technology.setName(technologyTemplate.getName());
            technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
            return technology;
        /**
         * æ ¹æ®é€‰æ‹©çš„æƒ…况,判断是拉取基础数据的数据,还是某一个产品下某一个型号的数据
         */
        //如果spId传的参数是0,则拉取基础数据的数据
        if (spId == 0) {
            /*新增标准BOM-->工艺路线(批量添加)*/
            List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", material.getFather()));
            if (ObjectUtils.isEmpty(technologyTemplateList)) {
                return "添加物料【" + materialDto.getName() + "】成功";
            }
            List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
                Technology technology = new Technology();
                technology.setSpecificationsId(specifications.getId());
                technology.setFather(technologyTemplate.getFather());
                technology.setName(technologyTemplate.getName());
                technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
                return technology;
            }).collect(Collectors.toList());
            technologyService.saveBatch(technologyList);
            /*新增标准BOM-->技术指标(批量添加)*/
            //新增的工艺路线id集合
            List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
            //基础数据中工艺路线id集合
            List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
            //两者长度一定一样
            List<Product> productList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (TechnicalModel technicalModel : technicalModelList) {
                    Product product = new Product();
                    product.setFather(technicalModel.getFather());
                    product.setName(technicalModel.getName());
                    product.setUnit(technicalModel.getUnit());
                    product.setTechnologyId(technologyIds.get(i));
                    productList.add(product);
                }
            }
            productService.saveBatch(productList);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (MbomModel mbomModel : mbomModelList) {
                    Mbom mbom = new Mbom();
                    mbom.setUnit(mbomModel.getUnit());
                    mbom.setName(mbomModel.getName());
                    mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                    mbom.setSpecifications(mbomModel.getSpecifications());
                    mbom.setTechnologyId(technologyIds.get(i));
                    mbomList.add(mbom);
                }
            }
            mbomService.saveBatch(mbomList);
            return "添加物料【" + materialDto.getName() + "】成功";
        }
        //如果spId!=0,等于选择的具体型号,则添加该型号版本的数据
        /*新增标准BOM-->工艺路线(批量添加)*/
        List<Technology> technologyList = technologyMapper.selAllByVerSpId(spId, ver);
        List<Technology> technologys = technologyList.stream().map(technology -> {
            Technology tec = new Technology();
            tec.setSpecificationsId(specifications.getId());
            tec.setName(technology.getName());
            tec.setFather(technology.getFather());
            tec.setDeviceGroup(technology.getDeviceGroup());
            tec.setProductionQuota(technology.getProductionQuota());
            return tec;
        }).collect(Collectors.toList());
        technologyService.saveBatch(technologyList);
        /*新增标准BOM-->技术指标(批量添加)*/
        //新增的工艺路线id集合
        List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
        //基础数据中工艺路线id集合
        List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
        technologyService.saveBatch(technologys);
        //两者长度一定一样
        List<Product> productList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechnicalModel technicalModel : technicalModelList) {
                Product product = new Product();
                product.setFather(technicalModel.getFather());
                product.setName(technicalModel.getName());
                product.setUnit(technicalModel.getUnit());
                product.setTechnologyId(technologyIds.get(i));
                productList.add(product);
        for (int i = 0; i < technologyList.size(); i++) {
            /*新增标准BOM-->技术指标(批量添加)*/
            List<Product> productList = productMapper.selProByVerSpe(technologyList.get(i).getId());
            List<Product> products = new ArrayList<>();
            for (Product product : productList) {
                Product pro = new Product();
                pro.setTechnologyId(technologys.get(i).getId());
                pro.setName(product.getName());
                pro.setFather(product.getFather());
                pro.setUnit(product.getUnit());
                pro.setRequired(product.getRequired());
                pro.setInternal(product.getInternal());
                products.add(pro);
            }
        }
        productService.saveBatch(productList);
        /*新增标准BOM-->物料清单(批量添加)*/
        List<Mbom> mbomList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (MbomModel mbomModel : mbomModelList) {
                Mbom mbom = new Mbom();
                mbom.setUnit(mbomModel.getUnit());
                mbom.setName(mbomModel.getName());
                mbom.setSupplier(mbomModel.getSupplier());
                mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                mbom.setSpecifications(mbomModel.getSpecifications());
                mbom.setTechnologyId(technologyIds.get(i));
                mbomList.add(mbom);
            productService.saveBatch(products);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = mbomMapper.seleByTechId(technologyList.get(i).getId());
            List<Mbom> mboms = new ArrayList<>();
            for (Mbom mbom : mbomList) {
                Mbom mbo = new Mbom();
                mbo.setTechnologyId(technologys.get(i).getId());
                mbo.setName(mbom.getName());
                mbo.setUnit(mbom.getUnit());
                mbo.setUnit(mbom.getUnit());
                mbo.setNum(mbom.getNum());
                mbo.setQualityTraceability(mbom.getQualityTraceability());
                mbo.setSpecifications(mbom.getSpecifications());
                mboms.add(mbo);
            }
            mbomService.saveBatch(mboms);
        }
        mbomService.saveBatch(mbomList);
        /*新增标准BOM-->生产工艺(批量添加)*/
        List<Technique> techniqueList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechniqueModel> techniqueModelList = techniqueModelMapper.selectList(Wrappers.<TechniqueModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechniqueModel techniqueModel : techniqueModelList) {
                //查询设备名称
                Device device = deviceMapper.selectById(techniqueModel.getDeviceId());
                //查询基础生产工艺中每个设备的具体项目
                TechnicalModel technicalModel = technicalModelMapper.selectById(techniqueModel.getTechnicalModelId());
                Technique technique = new Technique();
                technique.setTechnologyId(technologyIds.get(i));
                technique.setDevice(device.getName());
                technique.setProductFather(technicalModel.getFather());
                technique.setProduct(technicalModel.getName());
                technique.setUnit(technicalModel.getUnit());
                techniqueList.add(technique);
            }
        }
        techniqueService.saveBatch(techniqueList);
        return "添加物料【" + materialDto.getName() + "】成功";
    }
    //添加同一个型号工艺路线,技术指标,物料清单,生产工艺的版本
    //添加同一个型号工艺路线,技术指标,物料清单的版本
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer addVersion(Integer specificationsId, Integer version) {
@@ -217,7 +239,7 @@
                product.setUnit(pro.getUnit());
                product.setRequired(pro.getRequired());
                product.setInternal(pro.getInternal());
                product.setVersion(pro.getVersion()+1);
                product.setVersion(pro.getVersion() + 1);
                product.setTechnologyId(technologyIds.get(i));
                productList.add(product);
            }
@@ -231,32 +253,15 @@
                Mbom mbom = new Mbom();
                mbom.setUnit(mb.getUnit());
                mbom.setName(mb.getName());
                mbom.setSupplier(mb.getSupplier());
                mbom.setQualityTraceability(mb.getQualityTraceability());
                mbom.setSpecifications(mb.getSpecifications());
                mbom.setVersion(mb.getVersion()+1);
                mbom.setVersion(mb.getVersion() + 1);
                mbom.setNum(mb.getNum());
                mbom.setTechnologyId(technologyIds.get(i));
                mbomList.add(mbom);
            }
        }
        mbomService.saveBatch(mbomList);
        /*新增标准BOM-->生产工艺(批量添加)*/
        List<Technique> techniqueList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<Technique> techniques = techniqueMapper.selectList(Wrappers.<Technique>query().eq("technology_id", techTemIds.get(i)));
            for (Technique teque : techniques) {
                Technique technique = new Technique();
                technique.setTechnologyId(technologyIds.get(i));
                technique.setDevice(teque.getDevice());
                technique.setProductFather(teque.getProductFather());
                technique.setProduct(teque.getProduct());
                technique.setUnit(teque.getUnit());
                technique.setVersion(teque.getVersion()+1);
                techniqueList.add(technique);
            }
        }
        techniqueService.saveBatch(techniqueList);
        return technologyList.get(0).getVersion();
    }
standard-server/src/main/java/com/yuanchu/mom/service/impl/ProductServiceImpl.java
@@ -1,8 +1,6 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.TechniqueMapper;
import com.yuanchu.mom.mapper.TechnologyMapper;
import com.yuanchu.mom.pojo.Product;
import com.yuanchu.mom.pojo.dto.ProductDto;
@@ -11,7 +9,6 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@@ -29,9 +26,6 @@
    @Resource
    TechnologyMapper technologyMapper;
    @Resource
    TechniqueMapper techniqueMapper;
    //根据型号id查询项目(技术指标)
    @Override
@@ -67,20 +61,6 @@
    @Override
    public String addProduct(ProductDto productDto) {
        Product product = new Product();
        String required = productDto.getRequired();
        String internal = productDto.getInternal();
        if (ObjectUtils.isNotEmpty(required)) {
            char requ = required.charAt(0);
            if (requ != '>' && requ != '<' && requ != '=') {
                return "标准值输入格式有问题!";
            }
        }
        if (ObjectUtils.isNotEmpty(internal)) {
            char inter = internal.charAt(0);
            if (inter != '>' && inter != '<' && inter != '=') {
                return "内控值输入格式有问题!";
            }
        }
        BeanUtils.copyProperties(productDto, product);
        productMapper.insert(product);
        return "新增成功!";
@@ -89,19 +69,6 @@
    //填写标准值与内控值,鼠标移开保存
    @Override
    public String write(Integer id, String required, String internal) {
        //校验标准值,内控值格式
        if (ObjectUtils.isNotEmpty(internal)) {
            char inter = internal.charAt(0);
            if (inter != '>' && inter != '<' && inter != '=') {
                return "内控值输入格式有问题!";
            }
        }
        if (ObjectUtils.isNotEmpty(required)) {
            char requ = required.charAt(0);
            if (requ != '>' && requ != '<' && requ != '=') {
                return "标准值输入格式有问题!";
            }
        }
        Product product = new Product();
        product.setId(id);
        product.setRequired(required);
@@ -119,8 +86,6 @@
        product.setId(id);
        product.setState(0);
        productMapper.updateById(product);
        //删除生产工艺
        techniqueMapper.delByProId(id);
    }
    //批量删除
@@ -129,11 +94,9 @@
    public void delAllPro(String ids) {
        //批量删除技术指标
        productMapper.delAllPro(ids);
        //删除生产工艺
        techniqueMapper.delAll(ids);
    }
    //查询标准BOM技术指标中该型号工艺下最新版本的检验项目
    //根据工艺路线id查询技术指标
    @Override
    public List<Product> selProByVerSpe(Integer technologyId) {
        return productMapper.selProByVerSpe(technologyId);
standard-server/src/main/java/com/yuanchu/mom/service/impl/SpecificationsServiceImpl.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -53,24 +54,24 @@
    MbomModelMapper mbomModelMapper;
    @Resource
    TechniqueService techniqueService;
    ProductMapper productMapper;
    @Resource
    TechniqueModelMapper techniqueModelMapper;
    MbomMapper mbomMapper;
    @Resource
    DeviceMapper deviceMapper;
    TechnologyMapper technologyMapper;
    //(4级)新增-->型号
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String addSpecifications(SpecificationsDto specificationsDto) {
    public String addSpecifications(SpecificationsDto specificationsDto, Integer spId, Integer ver) {
        //校验添加该标准下的型号是否重复
        List<String> specificationsNameList = specificationsMapper.selectList(Wrappers.<Specifications>query().eq("standard_id", specificationsDto.getId())).stream().map(specifications -> {
            String specificationsName = specifications.getName();
            return specificationsName;
        }).collect(Collectors.toList());
        if (specificationsNameList.contains(specificationsDto.getSpecifications())){
        if (specificationsNameList.contains(specificationsDto.getSpecifications())) {
            return "该标准下有该型号";
        }
        /*新增型号表*/
@@ -78,86 +79,110 @@
        specifications.setStandardId(specificationsDto.getId());
        specifications.setName(specificationsDto.getSpecifications());
        specificationsMapper.insert(specifications);
        /**
         * æ ¹æ®é€‰æ‹©çš„æƒ…况,判断是拉取基础数据的数据,还是某一个产品下某一个型号的数据
         */
        //如果spId传的参数是0,则拉取基础数据的数据
        if (spId == 0) {
            /*新增标准BOM-->工艺路线(批量添加)*/
            //根据标准id查询物料大类
            Material material = materialMapper.selFath(specificationsDto.getId());
            List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", material.getFather()));
            if (ObjectUtils.isEmpty(technologyTemplateList)) {
                return "添加型号【" + specificationsDto.getSpecifications() + "】成功!";
            }
            List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
                Technology technology = new Technology();
                technology.setSpecificationsId(specifications.getId());
                technology.setFather(technologyTemplate.getFather());
                technology.setName(technologyTemplate.getName());
                technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
                return technology;
            }).collect(Collectors.toList());
            technologyService.saveBatch(technologyList);
            /*新增标准BOM-->技术指标(批量添加)*/
            //新增的工艺路线id集合
            List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
            //基础数据中工艺路线id集合
            List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
            //两者长度一定一样
            List<Product> productList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (TechnicalModel technicalModel : technicalModelList) {
                    Product product = new Product();
                    product.setFather(technicalModel.getFather());
                    product.setName(technicalModel.getName());
                    product.setUnit(technicalModel.getUnit());
                    product.setTechnologyId(technologyIds.get(i));
                    productList.add(product);
                }
            }
            productService.saveBatch(productList);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (MbomModel mbomModel : mbomModelList) {
                    Mbom mbom = new Mbom();
                    mbom.setUnit(mbomModel.getUnit());
                    mbom.setName(mbomModel.getName());
                    mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                    mbom.setSpecifications(mbomModel.getSpecifications());
                    mbom.setTechnologyId(technologyIds.get(i));
                    mbomList.add(mbom);
                }
            }
            mbomService.saveBatch(mbomList);
            return "添加型号【" + specificationsDto.getSpecifications() + "】成功!";
        }
        //如果spId!=0,等于选择的具体型号,则添加该型号版本的数据
        /*新增标准BOM-->工艺路线(批量添加)*/
        //根据标准id查询物料大类
        Material material = materialMapper.selFath(specificationsDto.getId());
        Integer type = null;
        if (material.getFather().equals("橡胶连接器")){
            type=0;
        }else if (material.getFather().equals("金属连接器")){
            type=1;
        }else if(material.getFather().equals("湿插拔电连接器")){
            type=2;
        }else if(material.getFather().equals("分支组件")){
            type=3;
        }else return "添加型号【" + specificationsDto.getSpecifications() + "】成功";
        List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type",type));
        List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
            Technology technology = new Technology();
            technology.setSpecificationsId(specifications.getId());
            technology.setFather(technologyTemplate.getFather());
            technology.setName(technologyTemplate.getName());
            technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
            return technology;
        List<Technology> technologyList = technologyMapper.selAllByVerSpId(spId, ver);
        List<Technology> technologys = technologyList.stream().map(technology -> {
            Technology tec = new Technology();
            tec.setSpecificationsId(specifications.getId());
            tec.setName(technology.getName());
            tec.setFather(technology.getFather());
            tec.setDeviceGroup(technology.getDeviceGroup());
            tec.setProductionQuota(technology.getProductionQuota());
            return tec;
        }).collect(Collectors.toList());
        technologyService.saveBatch(technologyList);
        /*新增标准BOM-->技术指标(批量添加)*/
        //新增的工艺路线id集合
        List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
        //基础数据中工艺路线id集合
        List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
        technologyService.saveBatch(technologys);
        //两者长度一定一样
        List<Product> productList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechnicalModel technicalModel : technicalModelList) {
                Product product = new Product();
                product.setFather(technicalModel.getFather());
                product.setName(technicalModel.getName());
                product.setUnit(technicalModel.getUnit());
                product.setTechnologyId(technologyIds.get(i));
                productList.add(product);
        for (int i = 0; i < technologyList.size(); i++) {
            /*新增标准BOM-->技术指标(批量添加)*/
            List<Product> productList = productMapper.selProByVerSpe(technologyList.get(i).getId());
            List<Product> products = new ArrayList<>();
            for (Product product : productList) {
                Product pro = new Product();
                pro.setTechnologyId(technologys.get(i).getId());
                pro.setName(product.getName());
                pro.setFather(product.getFather());
                pro.setUnit(product.getUnit());
                pro.setRequired(product.getRequired());
                pro.setInternal(product.getInternal());
                products.add(pro);
            }
        }
        productService.saveBatch(productList);
        /*新增标准BOM-->物料清单(批量添加)*/
        List<Mbom> mbomList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (MbomModel mbomModel : mbomModelList) {
                Mbom mbom = new Mbom();
                mbom.setUnit(mbomModel.getUnit());
                mbom.setName(mbomModel.getName());
                mbom.setSupplier(mbomModel.getSupplier());
                mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                mbom.setSpecifications(mbomModel.getSpecifications());
                mbom.setTechnologyId(technologyIds.get(i));
                mbomList.add(mbom);
            productService.saveBatch(products);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = mbomMapper.seleByTechId(technologyList.get(i).getId());
            List<Mbom> mboms = new ArrayList<>();
            for (Mbom mbom : mbomList) {
                Mbom mbo = new Mbom();
                mbo.setTechnologyId(technologys.get(i).getId());
                mbo.setName(mbom.getName());
                mbo.setUnit(mbom.getUnit());
                mbo.setUnit(mbom.getUnit());
                mbo.setNum(mbom.getNum());
                mbo.setQualityTraceability(mbom.getQualityTraceability());
                mbo.setSpecifications(mbom.getSpecifications());
                mboms.add(mbo);
            }
            mbomService.saveBatch(mboms);
        }
        mbomService.saveBatch(mbomList);
        /*新增标准BOM-->生产工艺(批量添加)*/
        List<Technique> techniqueList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechniqueModel> techniqueModelList = techniqueModelMapper.selectList(Wrappers.<TechniqueModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechniqueModel techniqueModel : techniqueModelList) {
                //查询设备名称
                Device device = deviceMapper.selectById(techniqueModel.getDeviceId());
                //查询基础生产工艺中每个设备的具体项目
                TechnicalModel technicalModel = technicalModelMapper.selectById(techniqueModel.getTechnicalModelId());
                Technique technique = new Technique();
                technique.setTechnologyId(technologyIds.get(i));
                technique.setDevice(device.getName());
                technique.setProductFather(technicalModel.getFather());
                technique.setProduct(technicalModel.getName());
                technique.setUnit(technicalModel.getUnit());
                techniqueList.add(technique);
            }
        }
        techniqueService.saveBatch(techniqueList);
        return "添加型号【"+ specificationsDto.getSpecifications() +"】成功!";
        return "添加型号【" + specificationsDto.getSpecifications() + "】成功!";
    }
}
standard-server/src/main/java/com/yuanchu/mom/service/impl/StandardServiceImpl.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.*;
@@ -50,18 +51,18 @@
    MbomModelMapper mbomModelMapper;
    @Resource
    TechniqueService techniqueService;
    ProductMapper productMapper;
    @Resource
    TechniqueModelMapper techniqueModelMapper;
    MbomMapper mbomMapper;
    @Resource
    DeviceMapper deviceMapper;
    TechnologyMapper technologyMapper;
    //(3级)新增-->标准,型号
    @Override
    @Transactional(rollbackFor = Exception.class)
    public String addStandard(StandardDto standardDto) {
    public String addStandard(StandardDto standardDto,Integer spId,Integer ver) {
        //校验添加该物料下的标准是否重复
        List<String> standNameList = standardMapper.selectList(Wrappers.<Standard>query().eq("material_id", standardDto.getId())).stream().map(standard -> {
            String standardName = standard.getName();
@@ -80,84 +81,109 @@
        specifications.setStandardId(standard.getId());
        specifications.setName(standardDto.getSpecifications());
        specificationsMapper.insert(specifications);
        /**
         * æ ¹æ®é€‰æ‹©çš„æƒ…况,判断是拉取基础数据的数据,还是某一个产品下某一个型号的数据
         */
        //如果spId传的参数是0,则拉取基础数据的数据
        if (spId == 0) {
            /*新增标准BOM-->工艺路线(批量添加)*/
            //查询物料的大类(根据物料id)
            Material material = materialMapper.selectById(standardDto.getId());
            List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", material.getFather()));
            if (ObjectUtils.isEmpty(technologyTemplateList)) {
                return "添加标准【" + standardDto.getStandard() + "】成功!";
            }
            List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
                Technology technology = new Technology();
                technology.setSpecificationsId(specifications.getId());
                technology.setFather(technologyTemplate.getFather());
                technology.setName(technologyTemplate.getName());
                technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
                return technology;
            }).collect(Collectors.toList());
            technologyService.saveBatch(technologyList);
            /*新增标准BOM-->技术指标(批量添加)*/
            //新增的工艺路线id集合
            List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
            //基础数据中工艺路线id集合
            List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
            //两者长度一定一样
            List<Product> productList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (TechnicalModel technicalModel : technicalModelList) {
                    Product product = new Product();
                    product.setFather(technicalModel.getFather());
                    product.setName(technicalModel.getName());
                    product.setUnit(technicalModel.getUnit());
                    product.setTechnologyId(technologyIds.get(i));
                    productList.add(product);
                }
            }
            productService.saveBatch(productList);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = new ArrayList<>();
            for (int i = 0; i < technologyIds.size(); i++) {
                List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
                for (MbomModel mbomModel : mbomModelList) {
                    Mbom mbom = new Mbom();
                    mbom.setUnit(mbomModel.getUnit());
                    mbom.setName(mbomModel.getName());
                    mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                    mbom.setSpecifications(mbomModel.getSpecifications());
                    mbom.setTechnologyId(technologyIds.get(i));
                    mbomList.add(mbom);
                }
            }
            mbomService.saveBatch(mbomList);
            return "添加标准【" + standardDto.getStandard() + "】成功!";
        }
        //如果spId!=0,等于选择的具体型号,则添加该型号版本的数据
        /*新增标准BOM-->工艺路线(批量添加)*/
        //查询物料的大类(根据物料id)
        Material material = materialMapper.selectById(standardDto.getId());
        Integer type = null;
        if (material.getFather().equals("橡胶连接器")){
            type=0;
        }else if (material.getFather().equals("金属连接器")){
            type=1;
        }else if(material.getFather().equals("湿插拔电连接器")){
            type=2;
        }else if(material.getFather().equals("分支组件")){
            type=3;
        }else return "添加标准【" + standardDto.getStandard() + "】成功";
        List<TechnologyTemplate> technologyTemplateList = technologyTemplateMapper.selectList(Wrappers.<TechnologyTemplate>query().eq("type", type));
        List<Technology> technologyList = technologyTemplateList.stream().map(technologyTemplate -> {
            Technology technology = new Technology();
            technology.setSpecificationsId(specifications.getId());
            technology.setFather(technologyTemplate.getFather());
            technology.setName(technologyTemplate.getName());
            technology.setDeviceGroup(technologyTemplate.getDeviceGroup());
            return technology;
        List<Technology> technologyList = technologyMapper.selAllByVerSpId(spId, ver);
        List<Technology> technologys = technologyList.stream().map(technology -> {
            Technology tec = new Technology();
            tec.setSpecificationsId(specifications.getId());
            tec.setName(technology.getName());
            tec.setFather(technology.getFather());
            tec.setDeviceGroup(technology.getDeviceGroup());
            tec.setProductionQuota(technology.getProductionQuota());
            return tec;
        }).collect(Collectors.toList());
        technologyService.saveBatch(technologyList);
        /*新增标准BOM-->技术指标(批量添加)*/
        //新增的工艺路线id集合
        List<Integer> technologyIds = technologyList.stream().map(Technology::getId).collect(Collectors.toList());
        //基础数据中工艺路线id集合
        List<Integer> techTemIds = technologyTemplateList.stream().map(TechnologyTemplate::getId).collect(Collectors.toList());
        technologyService.saveBatch(technologys);
        //两者长度一定一样
        List<Product> productList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechnicalModel> technicalModelList = technicalModelMapper.selectList(Wrappers.<TechnicalModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechnicalModel technicalModel : technicalModelList) {
                Product product = new Product();
                product.setFather(technicalModel.getFather());
                product.setName(technicalModel.getName());
                product.setUnit(technicalModel.getUnit());
                product.setTechnologyId(technologyIds.get(i));
                productList.add(product);
        for (int i = 0; i < technologyList.size(); i++) {
            /*新增标准BOM-->技术指标(批量添加)*/
            List<Product> productList = productMapper.selProByVerSpe(technologyList.get(i).getId());
            List<Product> products = new ArrayList<>();
            for (Product product : productList) {
                Product pro = new Product();
                pro.setTechnologyId(technologys.get(i).getId());
                pro.setName(product.getName());
                pro.setFather(product.getFather());
                pro.setUnit(product.getUnit());
                pro.setRequired(product.getRequired());
                pro.setInternal(product.getInternal());
                products.add(pro);
            }
        }
        productService.saveBatch(productList);
        /*新增标准BOM-->物料清单(批量添加)*/
        List<Mbom> mbomList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<MbomModel> mbomModelList = mbomModelMapper.selectList(Wrappers.<MbomModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (MbomModel mbomModel : mbomModelList) {
                Mbom mbom = new Mbom();
                mbom.setUnit(mbomModel.getUnit());
                mbom.setName(mbomModel.getName());
                mbom.setSupplier(mbomModel.getSupplier());
                mbom.setQualityTraceability(mbomModel.getQualityTraceability());
                mbom.setSpecifications(mbomModel.getSpecifications());
                mbom.setTechnologyId(technologyIds.get(i));
                mbomList.add(mbom);
            productService.saveBatch(products);
            /*新增标准BOM-->物料清单(批量添加)*/
            List<Mbom> mbomList = mbomMapper.seleByTechId(technologyList.get(i).getId());
            List<Mbom> mboms = new ArrayList<>();
            for (Mbom mbom : mbomList) {
                Mbom mbo = new Mbom();
                mbo.setTechnologyId(technologys.get(i).getId());
                mbo.setName(mbom.getName());
                mbo.setUnit(mbom.getUnit());
                mbo.setUnit(mbom.getUnit());
                mbo.setNum(mbom.getNum());
                mbo.setQualityTraceability(mbom.getQualityTraceability());
                mbo.setSpecifications(mbom.getSpecifications());
                mboms.add(mbo);
            }
            mbomService.saveBatch(mboms);
        }
        mbomService.saveBatch(mbomList);
        /*新增标准BOM-->生产工艺(批量添加)*/
        List<Technique> techniqueList = new ArrayList<>();
        for (int i = 0; i < technologyIds.size(); i++) {
            List<TechniqueModel> techniqueModelList = techniqueModelMapper.selectList(Wrappers.<TechniqueModel>query().eq("tech_tem_id", techTemIds.get(i)));
            for (TechniqueModel techniqueModel : techniqueModelList) {
                //查询设备名称
                Device device = deviceMapper.selectById(techniqueModel.getDeviceId());
                //查询基础生产工艺中每个设备的具体项目
                TechnicalModel technicalModel = technicalModelMapper.selectById(techniqueModel.getTechnicalModelId());
                Technique technique = new Technique();
                technique.setTechnologyId(technologyIds.get(i));
                technique.setDevice(device.getName());
                technique.setProductFather(technicalModel.getFather());
                technique.setProduct(technicalModel.getName());
                technique.setUnit(technicalModel.getUnit());
                techniqueList.add(technique);
            }
        }
        techniqueService.saveBatch(techniqueList);
        return "添加标准【"+ standardDto.getStandard() +"】成功!";
        return "添加标准【" + standardDto.getStandard() + "】成功!";
    }
}
standard-server/src/main/java/com/yuanchu/mom/service/impl/TechnologyServiceImpl.java
@@ -1,6 +1,6 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yuanchu.mom.mapper.*;
@@ -11,12 +11,10 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -41,10 +39,6 @@
    @Resource
    MbomMapper mbomMapper;
    @Resource
    TechniqueMapper techniqueMapper;
    //根据型号id查询版本
    @Override
    public List<Integer> selectVerByTec(Integer specificationsId) {
@@ -57,7 +51,7 @@
        return technologyMapper.selectAllTec(specificationsId, version, message);
    }
    //右上角新增-->工艺路线-->选择设备组
    //右上角新增-->工艺路线-->选择生产设备组
    @Override
    public List<Map<String, Object>> chooseDevice() {
        return deviceMapper.chooseDevGroup();
@@ -109,8 +103,6 @@
        productMapper.delProByTecId(id);
        //删除物料清单表
        mbomMapper.delMbomByTecId(id);
        //删除生产工艺表
        techniqueMapper.delTeqByTecId(id);
    }
    //批量删除
@@ -123,8 +115,6 @@
        productMapper.delAllByTechId(ids);
        //批量删除物料清单表
        mbomMapper.delAllByTecId(ids);
        //批量删除生产工艺表
        techniqueMapper.delAllByTecId(ids);
    }
    //选择设备组,鼠标移开保存
standard-server/src/main/resources/mapper/MbomMapper.xml
@@ -59,6 +59,14 @@
                                  and specifications_id = #{specificationsId})
    </select>
    <!--根据工艺路线id查询物料清单-->
    <select id="seleByTechId" resultType="com.yuanchu.mom.pojo.Mbom">
        select *
        from mom_ocean.mbom
        where state = 1
          and technology_id = #{technologyId}
    </select>
    <!--根据工艺路线id删除物料清单-->
    <update id="delMbomByTecId">
        update mom_ocean.mbom
standard-server/src/main/resources/mapper/TechniqueMapper.xml
@@ -111,15 +111,15 @@
                                  and specifications_id = #{specificationsId})
    </select>
    <!--根据工艺路线id查询所有版本-->
    <select id="selectVerByTeId" resultType="java.lang.Integer">
   <!-- <select id="selectVerByTeId" resultType="java.lang.Integer">
        select distinct version
        from mom_ocean.technique
        where state = 1
          and technology_id = #{technologyId}
    </select>
    </select>-->
    <!--查询该工艺下最新版本在一个检验项目下可以使用哪些设备-->
    <select id="selDevByVerTecIdFaNam" resultType="java.util.Map">
    <!--<select id="selDevByVerTecIdFaNam" resultType="java.util.Map">
        select device.id, device
        from mom_ocean.technique
                 left join mom_ocean.device on name = device
@@ -129,7 +129,7 @@
          and product_father = #{father}
          and product = #{name}
          and version = #{ver}
    </select>
    </select>-->
    <!--根据id查看详情-->
    <select id="selTeqById" resultType="java.util.Map">
standard-server/src/main/resources/mapper/TechnologyMapper.xml
@@ -74,6 +74,15 @@
          and version = #{version}
    </select>
    <!--查询该型号下版本下的所有数据-->
    <select id="selAllByVerSpId" resultType="com.yuanchu.mom.pojo.Technology">
        select *
        from mom_ocean.technology
        where state = 1
          and specifications_id = #{spId}
          and version = #{ver}
    </select>
    <!--批量删除-->
    <update id="delAllTech">
        update mom_ocean.technology