Fixiaobai
2023-11-09 3059430a0db3f75426e435c06090358646fc3792
Changes11
已修改13个文件
129 ■■■■ 文件已修改
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/CompanyController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/ParamController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/excel/DivisionData.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/DivisionServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PostServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-poc/src/main/java/com/chinaztt/mes/service/impl/PocServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/java/com/chinaztt/mes/technology/controller/StructureController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/java/com/chinaztt/mes/technology/entity/Structure.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/java/com/chinaztt/mes/technology/entity/StructureComponent.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/BomServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-technology/src/main/resources/mapper/StructureMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/CompanyController.java
@@ -19,23 +19,22 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaztt.mes.basic.entity.Company;
import com.chinaztt.mes.basic.service.CompanyService;
import com.chinaztt.mes.common.wrapper.QueryWrapperUtil;
import com.chinaztt.ztt.admin.api.entity.SysDictItem;
import com.chinaztt.ztt.admin.api.feign.RemoteDictService;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.log.annotation.SysLog;
import com.chinaztt.mes.basic.entity.Company;
import com.chinaztt.mes.basic.service.CompanyService;
import com.chinaztt.ztt.common.security.annotation.Inner;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@@ -228,4 +227,5 @@
        companyService.getFile(id, response);
    }
}
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java
@@ -175,4 +175,6 @@
    public List<Factory> loadFactory() {
        return factoryService.list();
    }
}
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/ParamController.java
@@ -59,6 +59,19 @@
    private final ParamService paramService;
    private DictUtils dictUtils;
    @ApiOperation(value = "分页模板查询", notes = "分页查询")
    @GetMapping("/pageInModel")
    @PreAuthorize("@pms.hasPermission('technology_param_view','product_workbench')")
    public R getParamPageInModel(Page page, ParamDTO param) {
        QueryWrapper<Param> gen = QueryWrapperUtil.gen(param);
        gen.lambda().eq(Param::getParentId,0L);
        return R.ok(paramService.page(page, gen));
    }
    /**
     * 分页查询
     *
@@ -92,7 +105,7 @@
                oneMap.put("paramItem",pojo.get("parameterItem"));
                oneMap.put("paramItemTwo","");
                oneMap.put("paramItemThree","");
                oneMap.put("oneId",pojo.get("id"));
                oneMap.put("oneId",StringUtils.defaultString( String.valueOf(pojo.get("id")),""));
                oneMap.put("paramType",StringUtils.defaultString((String) pojo.get("type"),""));
                oneMap.put("paramFormat",StringUtils.defaultString((String) pojo.get("parameterFormat"),""));
                oneMap.put("unit",StringUtils.defaultString((String) pojo.get("unit"),""));
@@ -122,9 +135,9 @@
                    Map<String,Object> allMap = new HashMap<>();
                    allMap.put("code",pojo.get("code"));
                    allMap.put("paramItem",StringUtils.defaultString((String) pojo.get("parameterItem"),""));
                    allMap.put("oneId",pojo.get("id"));
                    allMap.put("twoId",second.get("id"));
                    allMap.put("threeId",t.getId());
                    allMap.put("oneId",StringUtils.defaultString( String.valueOf(pojo.get("id")),""));
                    allMap.put("twoId",StringUtils.defaultString( String.valueOf(second.get("id")) ,""));
                    allMap.put("threeId",StringUtils.defaultString(String.valueOf(t.getId()),""));
                    allMap.put("paramItemTwo",StringUtils.defaultString((String) second.get("parameterItem"),""));
                    allMap.put("paramItemThree",StringUtils.defaultString(t.getParameterItem(),""));
                    allMap.put("paramType",StringUtils.defaultString(t.getType(),""));
mes-basic/src/main/java/com/chinaztt/mes/basic/excel/DivisionData.java
@@ -1,8 +1,6 @@
package com.chinaztt.mes.basic.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.Unique;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -25,4 +23,8 @@
     */
    @ExcelProperty("公司名称")
    private String companyName;
    @ExcelProperty("工厂名称")
    private String factoryName;
}
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/DivisionServiceImpl.java
@@ -23,15 +23,18 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaztt.mes.basic.entity.Company;
import com.chinaztt.mes.basic.entity.Division;
import com.chinaztt.mes.basic.entity.Factory;
import com.chinaztt.mes.basic.excel.DivisionData;
import com.chinaztt.mes.basic.mapper.CompanyMapper;
import com.chinaztt.mes.basic.mapper.DivisionMapper;
import com.chinaztt.mes.basic.mapper.FactoryMapper;
import com.chinaztt.mes.basic.service.DivisionService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 部门
@@ -43,7 +46,7 @@
@AllArgsConstructor
public class DivisionServiceImpl extends ServiceImpl<DivisionMapper, Division> implements DivisionService {
       private CompanyMapper companyMapper;
        private FactoryMapper factoryMapper;
    /**
     * Description: 分页
     *
@@ -60,11 +63,13 @@
    @Override
    public void importWorkstationExcel(List<DivisionData> list) {
        list.forEach(System.out::println);
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
        List<Company> companyList = companyMapper.selectList(null);
         for (DivisionData data :list){
        List<Factory> factories = factoryMapper.selectList(null);
        for (DivisionData data :list){
             QueryWrapper<Division>QueryWrapper = new QueryWrapper<>();
             QueryWrapper.lambda().eq(Division::getDivisionNo,data.getDivisionNo());
             Division division1 = baseMapper.selectOne(QueryWrapper);
@@ -78,6 +83,11 @@
                 division.setCompanyId(companyList.get(i).getId());
                }
            }
            List<Factory> collect = factories.stream().filter(f -> f.getFactoryName().equals(data.getFactoryName())).collect(Collectors.toList());
            if(collect.size() > 0){
                division.setFactoryId(collect.get(0).getId());
                division.setFactoryName(collect.get(0).getFactoryName());
            }
            if (division.getCompanyId()==null){
                log.error("公司:" + data.getCompanyName() + "不存在");
                continue ;
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PostServiceImpl.java
@@ -85,7 +85,8 @@
            }
            Post post = new Post();
            BeanUtils.copyProperties(data, post);
            post.setPostName(data.getWorkShops()+"-"+data.getPostName());
            //TODO: data.getDivisionName()+"-"+   岗位组合 部门+岗位
            post.setPostName(data.getPostName());
            for (int i = 0; i <companies.size() ; i++) {
                if (companies.get(i).getCompanyName().equals(data.getCompanyName())){
                    post.setCompanyId(companies.get(i).getId());
mes-poc/src/main/java/com/chinaztt/mes/service/impl/PocServiceImpl.java
@@ -1,12 +1,8 @@
package com.chinaztt.mes.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.chinaztt.mes.basic.dto.ParamDTO;
import com.chinaztt.mes.basic.entity.*;
import com.chinaztt.mes.basic.mapper.*;
import com.chinaztt.mes.basic.util.DictUtils;
import com.chinaztt.mes.common.numgen.NumberGenerator;
import com.chinaztt.mes.dto.ParamReveiveDTO;
import com.chinaztt.mes.dto.ProductTreeDTO;
@@ -23,11 +19,8 @@
import com.chinaztt.mes.plan.service.CustomerOrderService;
import com.chinaztt.mes.plan.service.CustomerService;
import com.chinaztt.mes.plan.service.ManufacturingOrderService;
import com.chinaztt.mes.plan.service.MasterProductionScheduleService;
import com.chinaztt.mes.plan.state.auditstate.constant.AuditStateStringValues;
import com.chinaztt.mes.plan.state.orderstate.constant.CustomerOrderStateStringValues;
import com.chinaztt.mes.production.dto.OperationTaskDTO;
import com.chinaztt.mes.production.entity.OperationTask;
import com.chinaztt.mes.production.mapper.OperationTaskMapper;
import com.chinaztt.mes.production.service.OperationTaskService;
import com.chinaztt.mes.service.PocService;
@@ -42,15 +35,11 @@
import com.chinaztt.mes.technology.state.bom.constant.BomStates;
import com.chinaztt.mes.technology.state.document.constant.DocumentStateStringValues;
import com.chinaztt.mes.technology.state.routing.constant.RoutingStates;
import com.chinaztt.ztt.admin.api.entity.SysDictItem;
import com.sun.corba.se.spi.orbutil.threadpool.Work;
import lombok.AllArgsConstructor;
import lombok.CustomLog;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.print.Doc;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
mes-technology/src/main/java/com/chinaztt/mes/technology/controller/StructureController.java
@@ -32,9 +32,11 @@
import com.chinaztt.ztt.admin.api.feign.RemoteDictService;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.log.annotation.SysLog;
import com.chinaztt.ztt.common.security.util.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -60,6 +62,8 @@
    private final StructureService structureService;
    private final DictUtils dictUtils;
    private RedisTemplate redisTemplate;
    /**
     * 横着导入的导入方式
     *
@@ -68,6 +72,10 @@
     */
    @PostMapping("/uploadExt")
    public R uploadExt(@RequestParam("file") MultipartFile file) {
        String key = "syncStructure_lock" + SecurityUtils.getUser().getId();
        if (redisTemplate.hasKey(key)) {
            throw new RuntimeException("有导入任务正在处理");
        }
        ExcelReader excelReader = null;
        try {
            excelReader = EasyExcel.read(file.getInputStream(), StructureData.class, new StructureUploadListener(structureService)).build();
mes-technology/src/main/java/com/chinaztt/mes/technology/entity/Structure.java
@@ -149,4 +149,6 @@
    private String dryingTemperature;
    private String packingInfo;
    private String custom;
}
mes-technology/src/main/java/com/chinaztt/mes/technology/entity/StructureComponent.java
@@ -111,4 +111,5 @@
    private String specs;
    private String partModel;
}
mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/BomServiceImpl.java
@@ -286,6 +286,7 @@
        StructureTree root = getRootNode(partId);
        //通过产品结构查工序
        Map<Long, Integer> cache = new HashMap<>(80);
        getStructureByPartId(root, partId, cache, version, alternativeNo, bomType, bomLayers);
        return root;
    }
@@ -617,7 +618,7 @@
                    if (bomLayers == 999) {
                        getStructureByPartId(child, component.getPartId(), cache, "ALL", "ALL", bomType, bomLayers);
                        // 判断到第几层了,制造类型为1-已制造,计划方法为P-虚拟件
                    } else if (bomLayers > 0 && (part.getMaterialType().equals("1") && !part.getPlanningMethod().equals(
                    } else if (bomLayers > 0 && (part.getMaterialType().equals("1") && part.getPlanningMethod().equals(
                            "A"))) {
                        getStructureByPartId(child, component.getPartId(), cache, "ALL", "ALL", bomType, bomLayers);
                    }
mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java
@@ -17,6 +17,7 @@
package com.chinaztt.mes.technology.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Console;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
@@ -46,9 +47,13 @@
import com.chinaztt.mes.technology.mapper.StructureMapper;
import com.chinaztt.mes.technology.service.StructureService;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.security.util.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
@@ -58,6 +63,7 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.CompletableFuture;
/**
@@ -79,6 +85,10 @@
    private NumberGenerator<Structure> numberGenerator;
    private DictUtils dictUtils;
    private IfsFeignClient ifsFeignClient;
    private RedisTemplate redisTemplate;
    @Autowired
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    /**
     * @Author: Hans
@@ -257,7 +267,20 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void importExcel(List<StructureData> list) {
        String key = "syncStructure_lock" + SecurityUtils.getUser().getId();
        if (redisTemplate.hasKey(key)) {
            throw new RuntimeException("有导入任务正在处理");
        }
        CompletableFuture.runAsync(()->{
            asyncImport(list);
            redisTemplate.delete(key);
        },threadPoolTaskExecutor);
    }
    void asyncImport(List<StructureData> list){
        if (CollectionUtil.isEmpty(list)) {
            return;
        }
@@ -265,14 +288,17 @@
            List<Part> parts = partMapper.selectList(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getPartNo()));
            Part part = parts.get(0);
            if (part == null) {
                throw new RuntimeException("零件号:" + data.getPartNo() + "不存在");
                log.error("零件号:" + data.getPartNo() + "不存在");
                return;
            }
            Structure structure = baseMapper.selectOne(Wrappers.<Structure>lambdaQuery().eq(Structure::getPartId, part.getId()));
            if (structure == null) {
                structure = new Structure();
                BeanUtils.copyProperties(data, structure);
                structure.setPartId(part.getId());
                structure.setActive(true);
                structure.setMaster(false);
                structure.setVersion("1");
                //structure.setActive(true);
                structure.setBomTypeDb("M");
                structure.setIfsSync(false);
                structure.setAlternativeNo("*");
@@ -281,7 +307,8 @@
            List<Part> childParts = partMapper.selectList(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getSonPartNo()));
            Part childPart = childParts.get(0);
            if (childPart == null) {
                throw new RuntimeException("零件号:" + data.getSonPartNo() + "不存在");
                log.error("零件号:" + data.getSonPartNo() + "不存在");
                return;
            }
            List<Operation> operations = operationMapper.selectList(Wrappers.<Operation>lambdaQuery().eq(Operation::getName, data.getOperationName()));
            Operation operation = operations.get(0);
@@ -289,8 +316,21 @@
            component.setStructureId(structure.getId());
            component.setPartId(childPart.getId());
            component.setPlanningMethod(childPart.getPlanningMethod());
            QueryWrapper<StructureComponent> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda().select(StructureComponent::getLineItemNo).eq(StructureComponent::getStructureId,structure.getId()).orderByDesc(StructureComponent::getLineItemNo);
            List<StructureComponent> structureComponents = structureComponentMapper.selectList(queryWrapper);
            component.setQpa(new BigDecimal(1));// todo: 产品结构导入数量,还缺一个行号
            Console.log("值===》"+structureComponents);
            if(structureComponents.size()<1){
                component.setLineItemNo(1);
            }else {
                Integer lineItemNo = structureComponents.get(0).getLineItemNo();
                component.setLineItemNo(lineItemNo+1);
            }
            component.setOperationId(operation.getId());
            component.setPlanningMethod("A");
            component.setSpecs(childPart.getSpecs());
            component.setPartModel(childPart.getPartModel());
            structureComponentMapper.insert(component);
        }
    }
@@ -441,6 +481,9 @@
        Structure structure = baseMapper.selectById(component.getStructureId());
        structure.setIfsSync(false);
        validate(structure.getPartId(), component.getPartId());
        Part part = partMapper.selectById(component.getPartId());
        component.setPartModel(part.getPartModel());
        component.setSpecs(part.getSpecs());
        structureComponentMapper.insert(component);
        // 对接ifs
//        List<StructureDTO> structureDTOS = structureMapper.getStructureDtoByIds(Arrays.asList(component.getStructureId()));
mes-technology/src/main/resources/mapper/StructureMapper.xml
@@ -47,6 +47,7 @@
        <result property="dryingTime" column="drying_time"/>
        <result property="dryingTemperature" column="drying_temperature"/>
        <result property="packingInfo" column="packing_info"/>
        <result property="custom" column="custom"/>
    </resultMap>
    <resultMap id="structureComponentMap" type="com.chinaztt.mes.technology.dto.StructureComponentDTO">