SpmkServiceImpl.java 11.1 KB
Newer Older
1 2 3
package cn.timer.api.controller.spmk.service;

import java.util.ArrayList;
4
import java.util.Arrays;
5 6
import java.util.List;

7 8 9 10 11 12 13 14

import cn.hutool.json.JSONObject;
import cn.timer.api.bean.spmk.*;
import cn.timer.api.dao.spmk.*;

import cn.timer.api.dto.spmk.FlowChildren;
import cn.timer.api.dto.spmk.Router;
import com.alibaba.fastjson.JSON;
15
import org.apache.commons.collections4.CollectionUtils;
16 17 18 19 20 21 22
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Console;
23
import cn.hutool.core.util.ObjectUtil;
24 25
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.controller.zzgl.service.ZzglBmgwMService;
26
import cn.timer.api.dto.spmk.SpmkApproveDetailDto;
27

28 29 30

@Service
public class SpmkServiceImpl implements SpmkService{
翁国栋 committed
31

32 33
	@Autowired
	private ZzglBmgwMService zzglBmgwMService;
34 35

	@Autowired
36
	private SpmkApproveDetailMapper spmkApproveDetailMapper;
翁国栋 committed
37

38
	@Autowired
39
	private SpmkApprovalGMapper spmkApprovalGMapper;
翁国栋 committed
40

41
	@Autowired
42
	private SpmkApproveExecuteRecordMapper spmkApproveExecuteRecordMapper;
43 44 45 46

	@Autowired
	private SpmkApproveDetailSummaryMapper spmkApproveDetailSummaryMapper;

翁国栋 committed
47 48 49 50 51 52
	@Autowired
	private SpmkApproveDetailDraftsMapper spmkApproveDetailDraftsMapper;

	@Autowired
	private SpmkApproveDraftsMapper spmkApproveDraftsMapper;

53 54
	private static com.alibaba.fastjson.JSONObject jsonObject = new  com.alibaba.fastjson.JSONObject();

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
	/**
	 * 根据orgCode查数据库 审批模板 生成 自定义模板
	 * orgCode 企业id
	 */
	@Override
	public boolean createCustomApproval(Integer orgCode) {
		// TODO Auto-generated method stub
		List<SpmkApprovalTemplateG> listAtg = SpmkApprovalTemplateG.builder().build()
				.selectList(new QueryWrapper<SpmkApprovalTemplateG>().lambda().orderByAsc(SpmkApprovalTemplateG::getId));
		List<SpmkApprovalG> listAG = new ArrayList<SpmkApprovalG>(listAtg.size());
		for (SpmkApprovalTemplateG spmkApprovalTemplateG : listAtg) {
			SpmkApprovalG saG = SpmkApprovalG.builder().build();
			BeanUtil.copyProperties(spmkApprovalTemplateG, saG, "id","update_time");
			saG.setOrgCode(orgCode);
			listAG.add(saG);
		}
翁国栋 committed
71

72 73 74 75 76 77 78 79
		Console.log(listAG);
		SpmkCustomApproval sca = SpmkCustomApproval.builder().build();
		List<SpmkApprovalTemplate> listAt = new ArrayList<SpmkApprovalTemplate>();
		for (int i = 0,n = listAG.size(); i < n; i++) {
			boolean b = listAG.get(i).insert();
			if (b) {
				listAt = SpmkApprovalTemplate.builder().build().selectList(new QueryWrapper<SpmkApprovalTemplate>()
						.lambda()
80
						.eq(SpmkApprovalTemplate::getApprovalTemplateGId, listAtg.get(i).getId()).eq(SpmkApprovalTemplate::getIsOpen, '1').orderByAsc(SpmkApprovalTemplate::getId));
81 82 83 84 85
				for (SpmkApprovalTemplate spmkApprovalTemplate : listAt) {
					BeanUtil.copyProperties(spmkApprovalTemplate, sca, "id","approval_template_g_id","update_time","create_time");
					sca.setOrgCode(orgCode);
					sca.setApprovalGId(listAG.get(i).getId());
					sca.setIsAllvisible(1);
翁国栋 committed
86

87 88 89 90
					sca.insert();
				}
			}
		}
翁国栋 committed
91

92 93 94
		return true;
	}

95 96
	/**
	 * 根据审批汇总id 获取 审批详情
97 98 99
	 * @param asId
	 * @param empNum
	 * @return
100 101
	 */
	@Override
102
	public SpmkApproveDetailDto selectApproveDetailByAsId(Integer asId,Integer empNum) {
103
		// TODO Auto-generated method stub
104
		//SpmkApproveDetail ad = spmkApproveDetailMapper.selectOne(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, asId));
105
		//审批详情
106
		SpmkApproveDetailSummary ad = spmkApproveDetailSummaryMapper.selectOne(new QueryWrapper<SpmkApproveDetailSummary>().lambda().eq(SpmkApproveDetailSummary::getApproveSummaryId, asId));
107
		//审批汇总
ilal committed
108 109
		SpmkApproveSummary sum = null;
		if(ad != null) {
284718418@qq.com committed
110
			sum = SpmkApproveSummary.builder().build().selectOne(new QueryWrapper<SpmkApproveSummary>().lambda().select(SpmkApproveSummary::getId,SpmkApproveSummary::getEmpNum,SpmkApproveSummary::getSts,SpmkApproveSummary::getCreateTime,SpmkApproveSummary::getDigest)
ilal committed
111
					.eq(SpmkApproveSummary::getId, ad.getApproveSummaryId()));
ilal committed
112
		}
翁国栋 committed
113

114 115 116 117
		SpmkApproveDetailDto adD = SpmkApproveDetailDto.builder().build();
		if (ad == null) {
			return null;
		}
118
		//审批操作记录
119
		List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectListByAsId(asId);
120
		BeanUtil.copyProperties(ad, adD, "requestData","froms","router","flowChildren","spmkApproveExecuteRecord");
121 122 123 124 125 126 127 128 129 130
		if(ad.getRequestData() !=null) {
			adD.setRequestData(jsonObject.parseObject(ad.getRequestData(), JSONObject.class));
		}
		if(ad.getFroms()!=null) {
			adD.setFroms(jsonObject.parseArray(ad.getFroms(), JSONObject.class));
	}
		if(ad.getFlowChildren() !=null) {
			adD.setRouter(jsonObject.parseObject(ad.getRouter(), Router.class));
		}
		if(ad.getFlowChildren()!=null) {
131
			adD.setFlowChildren(jsonObject.parseArray(ad.getFlowChildren(), FlowChildren.class));
132
		}
133
		adD.setApproveExecuteRecord(listAer);
134 135 136 137 138
		/*** 标记 执行人 阅读 ***/
		if(!CollectionUtils.isEmpty(listAer)){
			this.updateSpmkExecutorReadStatus(listAer,empNum);
		}
		/*** 标记执行人阅读 结束***/
ilal committed
139 140 141
		if(sum != null) {
			adD.setEmpNum(sum.getEmpNum());
			adD.setSts(sum.getSts());
ilal committed
142
			adD.setLaunchTime(sum.getCreateTime());
284718418@qq.com committed
143
			adD.setDigest(sum.getDigest());
ilal committed
144
			SpmkExecutor exe= null;
翁国栋 committed
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

			SpmkApproveExecuteRecord exere = SpmkApproveExecuteRecord.builder().build()
					.selectOne(new QueryWrapper<SpmkApproveExecuteRecord>().lambda().select(SpmkApproveExecuteRecord::getId).eq(SpmkApproveExecuteRecord::getApproveSummaryId , sum.getId())
							.eq(SpmkApproveExecuteRecord::getSts, 1));
			if(exere != null) {
				exe = SpmkExecutor.builder().build().selectOne(new QueryWrapper<SpmkExecutor>().lambda().eq(SpmkExecutor::getApproveExecuteRecordId, exere.getId()).orderByDesc(SpmkExecutor::getId));
			}

			if(exe != null) {
				adD.setExecuteEmpNum(exe.getEmpNum());
				adD.setExecuteSts(exe.getSts());
				adD.setExeid(exe.getId());
				adD.setExereid(exere.getId());
			}
		}

		return adD;
	}

	//草稿箱用
	public SpmkApproveDetailDto selectDraftsDetailByAsId(Integer asId) {
		// TODO Auto-generated method stub
		//SpmkApproveDetail ad = spmkApproveDetailMapper.selectOne(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, asId));
		SpmkApproveDetailDrafts ad = spmkApproveDetailDraftsMapper.selectOne(new QueryWrapper<SpmkApproveDetailDrafts>().lambda().eq(SpmkApproveDetailDrafts::getApproveSummaryId, asId));
		SpmkApproveDrafts sum = null;
		if(ad != null) {
翁国栋 committed
171
			sum = SpmkApproveDrafts.builder().build().selectOne(new QueryWrapper<SpmkApproveDrafts>().lambda().select(SpmkApproveDrafts::getId,SpmkApproveDrafts::getEmpNum,SpmkApproveDrafts::getSts,SpmkApproveDrafts::getCreateTime,SpmkApproveDrafts::getDigest)
翁国栋 committed
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
					.eq(SpmkApproveDrafts::getId, ad.getApproveSummaryId()));
		}

		SpmkApproveDetailDto adD = SpmkApproveDetailDto.builder().build();
		if (ad == null) {
			return null;
		}
		//审批操作记录
//		List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectListByAsId(asId);
		BeanUtil.copyProperties(ad, adD, "requestData","froms","router","flowChildren","spmkApproveExecuteRecord");
		if(ad.getRequestData() !=null) {
			adD.setRequestData(jsonObject.parseObject(ad.getRequestData(), JSONObject.class));
		}
		if(ad.getFroms()!=null) {
			adD.setFroms(jsonObject.parseArray(ad.getFroms(), JSONObject.class));
		}
		if(ad.getFlowChildren() !=null) {
			adD.setRouter(jsonObject.parseObject(ad.getRouter(), Router.class));
		}
		if(ad.getFlowChildren()!=null) {
			adD.setFlowChildren(jsonObject.parseArray(ad.getFlowChildren(), FlowChildren.class));
		}
//		adD.setApproveExecuteRecord(listAer);
		if(sum != null) {
			adD.setEmpNum(sum.getEmpNum());
			adD.setSts(sum.getSts());
			adD.setLaunchTime(sum.getCreateTime());
			adD.setDigest(sum.getDigest());
			SpmkExecutor exe= null;

yuquan.zhu committed
202
			SpmkApproveExecuteRecord exere = SpmkApproveExecuteRecord.builder().build()
ilal committed
203 204
					.selectOne(new QueryWrapper<SpmkApproveExecuteRecord>().lambda().select(SpmkApproveExecuteRecord::getId).eq(SpmkApproveExecuteRecord::getApproveSummaryId , sum.getId())
							.eq(SpmkApproveExecuteRecord::getSts, 1));
ilal committed
205
			if(exere != null) {
ilal committed
206
				exe = SpmkExecutor.builder().build().selectOne(new QueryWrapper<SpmkExecutor>().lambda().eq(SpmkExecutor::getApproveExecuteRecordId, exere.getId()).orderByDesc(SpmkExecutor::getId));
ilal committed
207
			}
翁国栋 committed
208

ilal committed
209 210
			if(exe != null) {
				adD.setExecuteEmpNum(exe.getEmpNum());
ilal committed
211
				adD.setExecuteSts(exe.getSts());
ilal committed
212 213
				adD.setExeid(exe.getId());
				adD.setExereid(exere.getId());
ilal committed
214
			}
ilal committed
215
		}
翁国栋 committed
216

217 218 219
		return adD;
	}

220

221 222 223 224 225 226 227
	@Override
	public List<SpmkApprovalG> selectListAg(UserBean userBean) {
		// TODO Auto-generated method stub
		List<Integer> depts = zzglBmgwMService.empNumupGetDepts(userBean.getOrgCode(), userBean.getEmpNum());
		return spmkApprovalGMapper.selectListAgInCa(userBean.getOrgCode(), userBean.getEmpNum(), depts);
	}

228 229 230

	/**
	 * 审核汇总详情数据转换
231
	 * @param
232 233
	 */
	@Override
234 235
	public String addApproveDetail() {

236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
			QueryWrapper queryWrapper = new QueryWrapper<SpmkApproveDetail>().select("id,approve_summary_id", "name", "department_name", "request_data", "froms", "router", "flow_children");
			List<SpmkApproveDetail> spmkApproveDetails = spmkApproveDetailMapper.selectList(queryWrapper);
			spmkApproveDetails.forEach(t -> {
				SpmkApproveDetailSummary spmkApproveDetailSummary = new SpmkApproveDetailSummary();
				spmkApproveDetailSummary.setApproveSummaryId(t.getApproveSummaryId());
				spmkApproveDetailSummary.setDepartmentName(t.getDepartmentName());
				spmkApproveDetailSummary.setName(t.getName());
				try {
					Object deserialize2 = ObjectUtil.deserialize(t.getFlowChildren());
					String flowChidren = JSON.toJSONString(deserialize2);
					spmkApproveDetailSummary.setFlowChildren(flowChidren);
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					try {
						Object deserialize1 = ObjectUtil.deserialize(t.getFroms());
						String froms = JSON.toJSONString(deserialize1);
						spmkApproveDetailSummary.setFroms(froms);
					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						try {
							Object deserialize = ObjectUtil.deserialize(t.getRequestData());
							String s = JSON.toJSONString(deserialize);
							spmkApproveDetailSummary.setRequestData(s);
						} catch (Exception e) {
							e.printStackTrace();
						} finally {
							try {
								Router router = ObjectUtil.deserialize(t.getRouter());
								String s = JSON.toJSONString(router);
								spmkApproveDetailSummary.setRouter(s);
							} catch (Exception e) {
								e.printStackTrace();
							} finally {
271
								spmkApproveDetailSummary.insertOrUpdate();
272 273 274 275 276 277

							}
						}
					}
				}
			});
278

279
		     return "成功";
280
	}
281

282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
	/**
	 * 标记 执行人 阅读
	 * @param listAer
	 * @param empNum
	 */
	private void updateSpmkExecutorReadStatus(List<SpmkApproveExecuteRecord> listAer, Integer empNum){
		for (SpmkApproveExecuteRecord entity:listAer ) {
			if(!CollectionUtils.isEmpty(entity.getSpmkExecutors())){
				for (SpmkExecutor se:entity.getSpmkExecutors()) {
					if(empNum.equals(se.getEmpNum()) && 0 == se.getReadStatus()){
						SpmkExecutor.builder().id(se.getId()).readStatus(1).build().updateById();
					}
				}
			}
		}
	}

299
}