From 79e81a02076cdd1e828eb06029cd51eb37522f42 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 18 九月 2025 09:11:37 +0800
Subject: [PATCH] 首页下载问题修复

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 157 insertions(+), 9 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java
index 38b9c52..8e402d3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/ProduceDivisionService.java
@@ -1,30 +1,77 @@
 package org.springblade.mdm.basesetting.producedivision.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision;
+import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
 import org.springblade.mdm.basesetting.producedivision.mapper.ProduceDivisionMapper;
+import org.springblade.mdm.basesetting.producedivision.vo.DivisionExcel;
+import org.springblade.mdm.basesetting.producedivision.vo.ImportResult;
 import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionVO;
 import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionViewVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 public class ProduceDivisionService extends BizServiceImpl<ProduceDivisionMapper, ProduceDivision> {
+	@Autowired
+	private MdmUserService tUserService;
+	@Autowired
+	private QinzheFgbService qinzheFgbService;
 
+	/**
+	 * 鏂板鍒嗗伐琛�
+	 * @param vo
+	 */
 	@Transactional
-	public void savePlan(ProduceDivisionVO vo){
-		//TODO
+	public void saveDivision(ProduceDivisionVO vo){
+		/*
+		if(drawingNoExists(vo.getpro,null)){
+			throw new ServiceException("鍥惧彿宸插瓨鍦細"+vo.getDrawingNo());
+		}*/
 		ProduceDivision plan = new ProduceDivision();
 		BeanUtil.copyProperties(vo, plan);
 		this.save(plan);
 	}
 
-	public boolean updatePlan(ProduceDivisionVO vo) {
+	/**
+	 * 鍒ゆ柇鍥惧彿鏄惁宸插瓨鍦�
+	 * @param drawingNo 鍥惧彿
+	 * @param excludeId 鎺掗櫎id
+	 * @return 鏄惁瀛樺湪
+	 */
+	/*
+	boolean drawingNoExists(String drawingNo,Long excludeId){
+		return this.lambdaQuery()
+			.eq(ProduceDivision::getDrawingNo, drawingNo)
+			.ne(excludeId!=null,ProduceDivision::getId,excludeId).count()>0;
+	}*/
+
+	/**
+	 * 淇敼鍒嗗伐琛�
+	 * @param vo 鏁版嵁VO
+	 * @return 鏄惁鎴愬姛
+	 */
+	public boolean updateDivision(ProduceDivisionVO vo) {
+		if(vo.getId() == null){
+			throw new ServiceException("id涓嶈兘鏈┖");
+		}
+		/*
+		if(drawingNoExists(vo.getDrawingNo(),vo.getId())){
+			throw new ServiceException("鍥惧彿宸插瓨鍦細"+vo.getDrawingNo());
+		}*/
+
 		ProduceDivision plan = this.getById(vo.getId());
 
 		plan.setTeamLeaderId(vo.getTeamLeaderId());
@@ -39,11 +86,112 @@
 	 * @return 鍒嗛〉鏁版嵁
 	 */
 	public IPage<ProduceDivisionViewVO> pageQuery(String name, Query query) {
-
-		LambdaQueryWrapper<ProduceDivision> queryWrapper = new LambdaQueryWrapper<>();
-
-
-
 		return this.getBaseMapper().pageQuery(Condition.getPage(query),name);
 	}
+
+	/**
+	 * 鍒嗗伐i琛ㄥ鍏�
+	 * @param file
+	 */
+	@Transactional
+    public ImportResult importDivision(MultipartFile file) {
+		List<DivisionExcel> list = ExcelUtil.read(file, DivisionExcel.class);
+		return transAndSave(list);
+    }
+
+	/**
+	 * 灏嗕汉鍛樺鍚嶈浆鎹㈡湭瀵瑰簲鐢ㄦ埛鐨刬d
+	 * @param list
+	 */
+	@Transactional
+	ImportResult transAndSave(List<DivisionExcel> list){
+
+		List<ProduceDivision> entityList = new ArrayList<>();
+
+		for(DivisionExcel divisionExcel:list){
+			ProduceDivision division = new ProduceDivision();
+
+			division.setProgrammerId(tUserService.getUserIdByName(divisionExcel.getProgrammer()));
+			division.setCheckerId(tUserService.getUserIdByName(divisionExcel.getChecker()));
+			division.setSeniorId(tUserService.getUserIdByName(divisionExcel.getSenior()));
+			division.setTeamLeaderId(tUserService.getUserIdByName(divisionExcel.getTeamLeader()));
+			division.setProgrammer(divisionExcel.getProgrammer());
+			entityList.add(division);
+		}
+
+		List<ProduceDivision> notMatchList =  entityList.stream()
+			.filter(d -> d.getProgrammerId()==null || d.getCheckerId()==null || d.getSeniorId()==null || d.getTeamLeaderId()==null).toList();
+
+		List<ProduceDivision> matchList =  entityList.stream()
+			.filter(d -> d.getProgrammerId()!=null && d.getCheckerId()!=null && d.getSeniorId()!=null && d.getTeamLeaderId()!=null).toList();
+
+		for(ProduceDivision division : matchList){
+			if(!this.existsSame(division)){
+				this.save(division);
+			}
+		}
+
+		ImportResult ir = new ImportResult();
+		ir.setSuccess(matchList.size());
+		ir.setFailure(notMatchList.size());
+
+		if(ir.getFailure() > 0){
+			String msg = "";
+			StringBuilder sb = new StringBuilder();
+			sb.append("缂栫▼浜哄憳:");
+			for(ProduceDivision division:notMatchList){
+				sb.append(division.getProgrammer()).append(",");
+			}
+			msg = StringUtils.removeEnd(sb.toString(),",")+"鏈夊鍚嶆棤娉曞尮閰嶇敤鎴锋暟鎹�";
+			ir.setMessage(msg);
+		}else{
+			ir.setMessage("瀵煎叆鎴愬姛");
+		}
+		return ir;
+	}
+
+	/**
+	 * 妫�鏌ヨ褰曟槸鍚﹀凡缁忓瓨鍦� 閫氳繃4涓汉鐨刬d
+	 * @param division 鍒嗗伐琛ㄦ暟鎹�
+	 * @return 鏄惁瀛樺湪
+	 */
+	boolean existsSame(ProduceDivision division){
+		return this.lambdaQuery().eq(ProduceDivision::getProgrammerId,division.getProgrammerId())
+			.eq(ProduceDivision::getCheckerId,division.getCheckerId()).eq(ProduceDivision::getSeniorId,division.getSeniorId())
+			.eq(ProduceDivision::getTeamLeaderId,division.getTeamLeaderId()).count()>0;
+	}
+
+
+	/**
+	 * 鏍规嵁鍕ゅ摬闆朵欢鍙蜂簬涓荤缂栧埗鑾峰彇鍒嗗伐琛ㄦ暟鎹� 鍥惧彿->鍕ゅ摬鏁版嵁锛堢紪鍒讹級 ->  涓诲埗鍒嗗伐琛ㄦ暟鎹�
+	 *
+	 * @param drawingNo
+	 * @return
+	 */
+	public ProduceDivision getByDrawingNoWithQinzhe(String drawingNo){
+		QinzheFgb qinzheFgb = qinzheFgbService.getByLjh(drawingNo);
+		if(qinzheFgb == null){
+			throw new ServiceException("鏈壘鍒伴浂缁勪欢鍙�:"+drawingNo);
+		}
+
+		Long programmerId = tUserService.getUserIdByName(qinzheFgb.getZggy());
+		if(programmerId == null){
+			throw new ServiceException("鏍规嵁["+qinzheFgb.getZggy()+"]鏈壘鍒板搴旂殑绯荤粺鐢ㄦ埛锛岃妫�鏌ョ敤鎴锋槸鍚﹀瓨鍦�");
+		}
+		ProduceDivision division = lambdaQuery().eq(ProduceDivision::getProgrammerId, programmerId).list().stream().findFirst().orElse(null);
+		if(division == null){
+			throw new ServiceException("浜哄憳鑱岃矗琛ㄦ棤涓荤宸ヨ壓["+qinzheFgb.getZggy()+"]瀵瑰簲鐨勬暟鎹�");
+		}
+
+		return division;
+	}
+
+	/**
+	 * 閫夋嫨涓荤宸ヨ壓鏁版嵁
+	 * @param programmer
+	 * @return
+	 */
+    public List<ProduceDivisionViewVO> queryProgrammer(String programmer) {
+		return baseMapper.queryProgrammer(programmer);
+    }
 }

--
Gitblit v1.9.3