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">