From c2b94a6757c11590190dcd1b566da57072794703 Mon Sep 17 00:00:00 2001
From: zm <2369059705qq.com>
Date: 星期三, 24 七月 2024 17:32:08 +0800
Subject: [PATCH] 项目立项优化

---
 src/main/java/com/product/contract/service/ProjectScheduleService.java |  156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 156 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/product/contract/service/ProjectScheduleService.java b/src/main/java/com/product/contract/service/ProjectScheduleService.java
new file mode 100644
index 0000000..9a0f662
--- /dev/null
+++ b/src/main/java/com/product/contract/service/ProjectScheduleService.java
@@ -0,0 +1,156 @@
+package com.product.contract.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.product.common.lang.StringUtils;
+import com.product.core.config.CoreConst;
+import com.product.core.dao.BaseDao;
+import com.product.core.entity.DataTableEntity;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.service.support.AbstractBaseService;
+import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.util.BaseUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Service
+public class ProjectScheduleService extends AbstractBaseService {
+	@Autowired
+	BaseDao baseDao;
+
+	/**
+	 * 鍚庣澶勭悊椤圭洰杩涘害鍒楄〃
+	 * @return
+	 */
+	public DataTableEntity getList() {
+		String curUserId = SpringMVCContextHolder.getCurrentUserId();
+		StringBuilder sql = new StringBuilder();
+		sql.append("SELECT c.uuid,a.uuid business_uuid,b.uuid business_sub_uuid,a.project_name project_name,b.project_task_sub,c.reporter,c.reporting_time,c.reporting_content,c.progress_rate \n");
+		sql.append("FROM product_project_business a \n");
+		sql.append("LEFT JOIN product_project_business_plan b ON a.uuid=b.project_uuid\n");
+		sql.append("LEFT JOIN product_project_schedule c on b.uuid=c.business_sub_uuid\n");
+		sql.append("WHERE  a.project_name is not null \n");
+		sql.append("AND (CONCAT(',',a.team_members,',') LIKE ? OR a.group_leader = ?) \n");
+		sql.append("ORDER BY a.project_name,b.start_date");
+		DataTableEntity dt = baseDao.listTable(sql.toString(), new String[]{"%," + curUserId + ",%", curUserId});
+		baseDao.loadPromptData(dt);
+		JSONObject projectJsob = new JSONObject(new LinkedHashMap<>());
+		for (int i = 0; i < dt.getRows(); i++) {
+			FieldSetEntity fs = dt.getFieldSetEntity(i);
+			JSONObject subJsob = projectJsob.getJSONObject(fs.getString("business_uuid"));
+			if (subJsob==null){
+				subJsob=new JSONObject(new LinkedHashMap<>());
+				JSONArray arr = new JSONArray();
+				arr.add(BaseUtil.fieldSetEntityToJson(fs));
+				subJsob.put(fs.getString("business_sub_uuid"), arr);
+				projectJsob.put(fs.getString("business_uuid"),subJsob);
+			}else {
+				JSONArray arr = subJsob.getJSONArray(fs.getString("business_sub_uuid"));
+				if (arr==null){
+					arr = new JSONArray();
+					arr.add(BaseUtil.fieldSetEntityToJson(fs));
+					subJsob.put(fs.getString("business_sub_uuid"),arr);
+				}else {
+					arr.add(BaseUtil.fieldSetEntityToJson(fs));
+				}
+			}
+		}
+		// 鑾峰彇褰撳墠鏃堕棿
+		LocalDateTime now = LocalDateTime.now();
+
+		// 瀹氫箟鏃堕棿鏍煎紡
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+		// 灏嗗綋鍓嶆椂闂存牸寮忓寲涓哄瓧绗︿覆
+		String timeString = now.format(formatter);
+
+
+		//鎬绘暟灞�
+		DataTableEntity data = new DataTableEntity();
+		for (Map.Entry<String, Object> key : projectJsob.entrySet()) {
+			//璁$畻
+			int num=0;
+			//澶ч」鐩笅鐨勬暟鎹�
+			DataTableEntity d = new DataTableEntity();
+
+			JSONObject subJsob=projectJsob.getJSONObject(key.getKey());
+			for (Map.Entry<String, Object> entry : subJsob.entrySet()) {
+				//鑾峰彇瀛愰」鐩笅鐨勬暟缁勬暟鎹�
+				JSONArray jsonArray = subJsob.getJSONArray(entry.getKey());
+				/**
+				 * 鍒ゅ畾鏄惁鏂板鏁版嵁
+				 */
+				if (jsonArray.size()==1&&jsonArray.getJSONObject(0).getString("uuid")==null){
+					num=num+1;
+					JSONObject json = jsonArray.getJSONObject(0);
+					json.put("reporter", SpringMVCContextHolder.getCurrentUser().getUser_name());
+					json.put("reporting_time", timeString);
+					json.put("number1", 1);
+
+
+				}else {
+					jsonArray.getJSONObject(0).put("number1",jsonArray.size()+1);
+					num=num+jsonArray.size()+1;
+
+					//鏂板棰楀~鍐欐暟鎹�
+					JSONObject j = new JSONObject();
+					j.put("business_uuid",jsonArray.getJSONObject(0).getString("business_uuid"));
+					j.put("business_sub_uuid",jsonArray.getJSONObject(0).getString("business_sub_uuid"));
+					j.put("project_name",jsonArray.getJSONObject(0).getString("project_name"));
+					j.put("project_task_sub",jsonArray.getJSONObject(0).getString("project_task_sub"));
+					j.put("reporter", SpringMVCContextHolder.getCurrentUser().getUser_name());
+					j.put("reporting_time", timeString);
+					jsonArray.add(j);
+				}
+				for (int i = 0; i <jsonArray.size() ; i++) {
+					JSONObject a = jsonArray.getJSONObject(i);
+					FieldSetEntity fs = new FieldSetEntity();
+					fs.setTableName("product_project_unfiled");
+					fs.setValue("uuid",a.getString("uuid"));
+					fs.setValue("business_uuid",a.getString("business_uuid"));
+					fs.setValue("business_sub_uuid",a.getString("business_sub_uuid"));
+					fs.setValue("project_name",a.getString("project_name"));
+					fs.setValue("project_task_sub",a.getString("project_task_sub"));
+					fs.setValue("reporter",a.getString("reporter"));
+					fs.setValue("reporting_time",a.getString("reporting_time"));
+					fs.setValue("reporting_content",a.getString("reporting_content"));
+					fs.setValue("progress_rate",a.getString("progress_rate"));
+					if (!StringUtils.isEmpty(a.getString("number1"))) {
+						fs.setValue("number1", a.getInteger("number1"));
+					}
+					d.addFieldSetEntity(fs);
+				}
+			}
+			d.setFieldValue(0,"number",num);
+			data.addFieldSetEntity(d);
+		}
+		return data;
+	}
+	/**
+	 * 	椤圭洰鏈綊妗e師鍥犱繚瀛�
+	 * @param dt
+	 * @return
+	 */
+	public boolean save(DataTableEntity dt){
+		boolean re=true;
+		for (int i = 0; i < dt.getRows(); i++) {
+			FieldSetEntity fs = dt.getFieldSetEntity(i);
+			if (StringUtils.isEmpty(fs.getString(CoreConst.UUID))&&(!StringUtils.isEmpty(fs.getString("reporting_content"))||!StringUtils.isEmpty(fs.getString("progress_rate")))){
+				fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid());
+				fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id());
+				fs.setValue("created_utc_datetime",new Date());
+				fs.setValue("reporter",SpringMVCContextHolder.getCurrentUser().getUser_id());
+
+				boolean a = baseDao.saveFieldSetEntity(fs);
+				if (!a) re= false;
+			}
+		}
+		return  re;
+	}
+}

--
Gitblit v1.9.2