mes-basic/src/main/java/com/chinaztt/mes/basic/controller/CrewController.java
@@ -1,9 +1,12 @@ package com.chinaztt.mes.basic.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.dto.CrewDTO; import com.chinaztt.mes.basic.entity.Crew; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.excel.CrewData; import com.chinaztt.mes.basic.excel.CrewUploadListener; import com.chinaztt.mes.basic.service.CrewService; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.ztt.common.core.util.R; @@ -13,6 +16,9 @@ import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** @@ -160,4 +166,19 @@ return R.ok(crewService.deleteStaff(crewDTO)); } /** * excelä¸ä¼ * * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file) { try { EasyExcel.read(file.getInputStream(), CrewData.class, new CrewUploadListener(crewService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } } mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PostController.java
@@ -1,8 +1,13 @@ package com.chinaztt.mes.basic.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.entity.Post; import com.chinaztt.mes.basic.excel.PostData; import com.chinaztt.mes.basic.excel.PostUploadListener; import com.chinaztt.mes.basic.excel.StaffData; import com.chinaztt.mes.basic.excel.StaffUploadListener; import com.chinaztt.mes.basic.service.PostService; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.ztt.common.core.util.R; @@ -12,6 +17,9 @@ import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** @@ -117,4 +125,19 @@ return R.ok(postService.list(queryWrapper)); } /** * excelä¸ä¼ * * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file) { try { EasyExcel.read(file.getInputStream(), PostData.class, new PostUploadListener(postService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } } mes-basic/src/main/java/com/chinaztt/mes/basic/controller/StaffController.java
@@ -17,12 +17,17 @@ package com.chinaztt.mes.basic.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.entity.Division; import com.chinaztt.mes.basic.entity.Factory; import com.chinaztt.mes.basic.entity.Location; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.excel.DivisionData; import com.chinaztt.mes.basic.excel.DivisionUploadListener; import com.chinaztt.mes.basic.excel.StaffData; import com.chinaztt.mes.basic.excel.StaffUploadListener; import com.chinaztt.mes.basic.service.DivisionService; import com.chinaztt.mes.basic.service.StaffService; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; @@ -34,7 +39,9 @@ import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; @@ -168,4 +175,19 @@ return R.ok(staffService.list(Wrappers.query(staff))); } /** * excelä¸ä¼ * * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file) { try { EasyExcel.read(file.getInputStream(), StaffData.class, new StaffUploadListener(staffService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } } mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Crew.java
@@ -36,17 +36,23 @@ @EqualsAndHashCode(callSuper = true) @ApiModel(value = "人åçç»ç»´æ¤è¡¨") public class Crew extends Model<Crew> { private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L; /** * id */ @TableId @ApiModelProperty(value="id") private Long id; /** * çç»åç§° */ @ApiModelProperty(value="çç»åç§°") private String crewName; } /** * id */ @TableId @ApiModelProperty(value = "id") private Long id; /** * çç»åç§° */ @ApiModelProperty(value = "çç»åç§°") private String crewName; /** * è½¦é´ */ @ApiModelProperty(value = "车é´") private String workShop; } mes-basic/src/main/java/com/chinaztt/mes/basic/enums/FileEnums.java
@@ -6,7 +6,10 @@ */ public enum FileEnums { warehouse("warehouse","ä»åº"), location("location","åºä½") location("location","åºä½"), division("division","é¨é¨"), staff("staff","åå·¥"), post("post","å²ä½") ; FileEnums(String name, String fileName) { mes-basic/src/main/java/com/chinaztt/mes/basic/excel/CrewData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class CrewData { /** * çç»åç§° */ @ExcelProperty("çç»åç§°") private String crewName; /** * è½¦é´ */ @ExcelProperty( "车é´") private String workShop; /** * 人åç¼å· */ @ExcelProperty("人åç¼å·") private String staffNo; /** * 人ååç§° */ @ExcelProperty("人ååç§°") private String staffName; } mes-basic/src/main/java/com/chinaztt/mes/basic/excel/CrewUploadListener.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.chinaztt.mes.basic.service.CrewService; import com.chinaztt.mes.basic.service.PostService; import java.util.ArrayList; import java.util.List; public class CrewUploadListener extends AnalysisEventListener<CrewData> { private static final int BATCH_COUNT = 1000; List<CrewData> list = new ArrayList<>(); private CrewService crewService; public CrewUploadListener(CrewService crewService) { this.crewService = crewService; } @Override public void invoke(CrewData data, AnalysisContext analysisContext) { list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { crewService.importWorkstationExcel(list); } } mes-basic/src/main/java/com/chinaztt/mes/basic/excel/PostData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class PostData { /** * å²ä½ç¼å· */ @ExcelProperty("å²ä½ç¼å·") private String postNo; /** * å²ä½åç§° */ @ExcelProperty( "å²ä½åç§°") private String postName; /** * å ¬å¸ */ @ExcelProperty("å ¬å¸") private String companyName; /** * å·¥å */ @ExcelProperty("å·¥å") private String factoryName; /** * é¨é¨ */ @ExcelProperty("é¨é¨") private String divisionName; /** * è½¦é´ */ @ExcelProperty("车é´") private String workShops; } mes-basic/src/main/java/com/chinaztt/mes/basic/excel/PostUploadListener.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.chinaztt.mes.basic.service.PostService; import com.chinaztt.mes.basic.service.StaffService; import java.util.ArrayList; import java.util.List; public class PostUploadListener extends AnalysisEventListener<PostData> { private static final int BATCH_COUNT = 1000; List<PostData> list = new ArrayList<>(); private PostService postService; public PostUploadListener(PostService postService) { this.postService = postService; } @Override public void invoke(PostData data, AnalysisContext analysisContext) { list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { postService.importWorkstationExcel(list); } } mes-basic/src/main/java/com/chinaztt/mes/basic/excel/StaffData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; @Data public class StaffData { /** * åå·¥ç¼å· */ @ExcelProperty("åå·¥ç¼å·") private String staffNo; /** * å§å */ @ExcelProperty( "å§å") private String staffName; /** * æå±å ¬å¸ */ @ExcelProperty("æå±å ¬å¸") private String companyName; /** * æå±å·¥å */ @ExcelProperty("æå±å·¥å") private String factoryName; /** * æå±é¨é¨ */ @ExcelProperty("æå±é¨é¨") private String divisionName; /** * å²ä½åç§° */ @ExcelProperty("å²ä½åç§°") private String post; /** * äººåæ§è´¨ */ @ExcelProperty("äººåæ§è´¨") private String personNature; } mes-basic/src/main/java/com/chinaztt/mes/basic/excel/StaffUploadListener.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ package com.chinaztt.mes.basic.excel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.chinaztt.mes.basic.service.DivisionService; import com.chinaztt.mes.basic.service.StaffService; import java.util.ArrayList; import java.util.List; public class StaffUploadListener extends AnalysisEventListener<StaffData> { private static final int BATCH_COUNT = 1000; List<StaffData> list = new ArrayList<>(); private StaffService staffService; public StaffUploadListener(StaffService staffService) { this.staffService = staffService; } @Override public void invoke(StaffData data, AnalysisContext analysisContext) { list.add(data); if (list.size() >= BATCH_COUNT) { save(); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { save(); } private void save() { staffService.importWorkstationExcel(list); } } mes-basic/src/main/java/com/chinaztt/mes/basic/service/CrewService.java
@@ -8,6 +8,7 @@ import com.chinaztt.mes.basic.entity.Crew; import com.chinaztt.mes.basic.entity.Part; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.excel.CrewData; import java.util.List; @@ -64,4 +65,10 @@ * @return */ List<Staff> getStaff(CrewDTO crewDTO); /** * å¯¼å ¥excelæ°æ® * @param list */ void importWorkstationExcel(List<CrewData> list); } mes-basic/src/main/java/com/chinaztt/mes/basic/service/PostService.java
@@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.chinaztt.mes.basic.entity.Post; import com.chinaztt.mes.basic.excel.PostData; import java.util.List; /** * å²ä½è¡¨ @@ -11,4 +14,9 @@ */ public interface PostService extends IService<Post> { /** * excelå¯¼å ¥ * @param list */ void importWorkstationExcel(List<PostData> list); } mes-basic/src/main/java/com/chinaztt/mes/basic/service/StaffService.java
@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.excel.StaffData; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -54,4 +55,10 @@ * @date: 2020/8/28 11:06 */ IPage<List<Staff>> toResource(Page page,Staff staff); /** * å¯¼å ¥excelçæ°æ® * @param list */ void importWorkstationExcel(List<StaffData> list); } mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/CrewServiceImpl.java
@@ -3,24 +3,27 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaztt.mes.basic.dto.CrewDTO; import com.chinaztt.mes.basic.entity.Crew; import com.chinaztt.mes.basic.entity.JoinCrewStaff; import com.chinaztt.mes.basic.entity.Part; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.entity.*; import com.chinaztt.mes.basic.excel.CrewData; import com.chinaztt.mes.basic.excel.PostData; import com.chinaztt.mes.basic.mapper.CrewMapper; import com.chinaztt.mes.basic.mapper.JoinCrewStaffMapper; import com.chinaztt.mes.basic.mapper.StaffMapper; import com.chinaztt.mes.basic.service.CrewService; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; /** * 人åçç»ç»´æ¤è¡¨ @@ -82,6 +85,37 @@ return staffMapper.selectStaffById(crewDTO.getId()); } //å¯¼å ¥excelæ°æ® @Override public void importWorkstationExcel(List<CrewData> list) { if (CollectionUtil.isEmpty(list)) { return; } List<Staff> staff = staffMapper.selectList(null); Crew crew = new Crew(); for (CrewData data : list) { //æ°å¢çç»è¡¨ if (ObjectUtils.isNotEmpty(data.getCrewName())) { crew.setCrewName(data.getCrewName()); crew.setWorkShop(data.getWorkShop()); baseMapper.insert(crew); } JoinCrewStaff joinCrewStaff = new JoinCrewStaff(); joinCrewStaff.setCrewId(crew.getId()); for (int i = 0; i < staff.size(); i++) { if (staff.get(i).getStaffNo().equals(data.getStaffNo())) { joinCrewStaff.setStaffId(staff.get(i).getId()); } } if (joinCrewStaff.getStaffId() == null) { log.error("人å:" + data.getStaffNo() + "ä¸åå¨"); continue; } //æ°å¢äººåçç»ç»´æ¤è¡¨ joinCrewStaffMapper.insert(joinCrewStaff); } } public void saveJoin(CrewDTO crewDTO) { if (CollectionUtil.isNotEmpty(crewDTO.getStaffList())) { List<Staff> staffList = joinCrewStaffMapper.selectStaffByCrewId(crewDTO.getId()); mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PostServiceImpl.java
@@ -5,11 +5,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.chinaztt.mes.basic.entity.Post; import com.chinaztt.mes.basic.entity.*; import com.chinaztt.mes.basic.excel.PostData; import com.chinaztt.mes.basic.excel.StaffData; 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.mapper.PostMapper; import com.chinaztt.mes.basic.service.PostService; import com.chinaztt.mes.common.numgen.NumberGenerator; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +32,10 @@ @Transactional(rollbackFor = Exception.class) public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements PostService { private NumberGenerator<Post> postNumberGenerator; private DivisionMapper divisionMapper; private PostMapper postMapper; private CompanyMapper companyMapper; private FactoryMapper factoryMapper; @Override public boolean save(Post post) { @@ -51,4 +61,48 @@ } } } //excelå¯¼å ¥æ°æ® @Override public void importWorkstationExcel(List<PostData> list) { if (CollectionUtil.isEmpty(list)) { return; } List<Company> companies = companyMapper.selectList(null); List<Factory> factories = factoryMapper.selectList(null); List<Division> divisions = divisionMapper.selectList(null); for (PostData data : list) { Post post = new Post(); BeanUtils.copyProperties(data, post); post.setPostName(data.getWorkShops()+"-"+data.getPostName()); for (int i = 0; i <companies.size() ; i++) { if (companies.get(i).getCompanyName().equals(data.getCompanyName())){ post.setCompanyId(companies.get(i).getId()); } } if (post.getCompanyId()==null){ log.error("å ¬å¸:" + data.getCompanyName() + "ä¸åå¨"); continue ; } for (int i = 0; i <factories.size() ; i++) { if (factories.get(i).getFactoryName().equals(data.getFactoryName())){ post.setFactoryId(factories.get(i).getId()); } } if (post.getFactoryId()==null){ log.error("å·¥å:" + data.getFactoryName() + "ä¸åå¨"); continue ; } for (int i = 0; i < divisions.size(); i++) { if (divisions.get(i).getDivisionName().equals(data.getDivisionName())) { post.setDivisionId(divisions.get(i).getId()); } } if (post.getDivisionId() == null) { log.error("é¨é¨:" + data.getDivisionName() + "ä¸åå¨"); continue; } baseMapper.insert(post); } } } mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/StaffServiceImpl.java
@@ -16,15 +16,18 @@ */ package com.chinaztt.mes.basic.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaztt.mes.basic.entity.Staff; import com.chinaztt.mes.basic.mapper.StaffMapper; import com.chinaztt.mes.basic.entity.*; import com.chinaztt.mes.basic.excel.StaffData; import com.chinaztt.mes.basic.mapper.*; import com.chinaztt.mes.basic.service.StaffService; import com.chinaztt.ztt.common.data.datascope.DataScope; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -39,21 +42,24 @@ @AllArgsConstructor public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements StaffService { private DivisionMapper divisionMapper; private PostMapper postMapper; private CompanyMapper companyMapper; private FactoryMapper factoryMapper; /** * Description: å页 * * @param page * @param ew * @return IPage<List<Staff>> * @author: luh * @date: 2020/8/18 11:06 */ /** * Description: å页 * * @param page * @param ew * @return IPage<List < Staff>> * @author: luh * @date: 2020/8/18 11:06 */ @Override public IPage<List<Staff>> getStaffPage(Page page, QueryWrapper<Staff> ew) { return baseMapper.getStaffPage(page,ew); return baseMapper.getStaffPage(page, ew); } /** @@ -61,14 +67,65 @@ * * @param page * @param staff * @return IPage<List<Staff> * @return IPage<List < Staff> * @author: fenglang * @date: 2020/8/28 11:06 */ @Override public IPage<List<Staff>> toResource(Page page, Staff staff) { return baseMapper.toResource(page,staff); return baseMapper.toResource(page, staff); } //å¯¼å ¥excelæ°æ® @Override public void importWorkstationExcel(List<StaffData> list) { if (CollectionUtil.isEmpty(list)) { return; } List<Division> divisions = divisionMapper.selectList(null); List<Post> posts = postMapper.selectList(null); List<Company> companies = companyMapper.selectList(null); List<Factory> factories = factoryMapper.selectList(null); for (StaffData staffData : list) { Staff staff = new Staff(); BeanUtils.copyProperties(staffData, staff); for (int i = 0; i < divisions.size(); i++) { if (divisions.get(i).getDivisionName().equals(staffData.getDivisionName())) { staff.setDivisionId(divisions.get(i).getId()); } } if (staff.getDivisionId() == null) { log.error("é¨é¨:" + staffData.getDivisionName() + "ä¸åå¨"); continue; } for (int i = 0; i < posts.size(); i++) { if (posts.get(i).getPostName().equals(staffData.getPost())) { staff.setPostId(posts.get(i).getId()); } } if (staff.getPostId() == null) { log.error("å²ä½:" + staffData.getPost() + "ä¸åå¨"); continue; } for (int i = 0; i <companies.size() ; i++) { if (companies.get(i).getCompanyName().equals(staffData.getCompanyName())){ staff.setCompanyId(companies.get(i).getId()); } } if (staff.getCompanyId()==null){ log.error("å ¬å¸:" + staffData.getCompanyName() + "ä¸åå¨"); continue ; } for (int i = 0; i <factories.size() ; i++) { if (factories.get(i).getFactoryName().equals(staffData.getFactoryName())){ staff.setFactoryId(factories.get(i).getId()); } } if (staff.getFactoryId()==null){ log.error("å·¥å:" + staffData.getFactoryName() + "ä¸åå¨"); continue ; } baseMapper.insert(staff); } } }