package com.lf.server.service.show;
|
|
import com.lf.server.entity.all.StaticData;
|
import com.lf.server.entity.ctrl.DownloadReqEntity;
|
import com.lf.server.entity.data.MetaEntity;
|
import com.lf.server.entity.show.ApplyEntity;
|
import com.lf.server.entity.show.FlowEntity;
|
import com.lf.server.entity.sys.UserEntity;
|
import com.lf.server.helper.AesHelper;
|
import com.lf.server.helper.StringHelper;
|
import com.lf.server.mapper.show.ApplyMapper;
|
import com.lf.server.service.data.MetaService;
|
import com.lf.server.service.sys.UserService;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.sql.Timestamp;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* 数据申请
|
* @author WWW
|
*/
|
@Service
|
public class ApplyService implements ApplyMapper {
|
@Autowired
|
ApplyMapper applyMapper;
|
|
@Autowired
|
FlowService flowService;
|
|
@Autowired
|
UserService userService;
|
|
@Autowired
|
MetaService metaService;
|
|
@Autowired
|
DataLibService dataLibService;
|
|
private final static Log log = LogFactory.getLog(ApplyService.class);
|
|
@Override
|
public Integer selectCount(String uname, Integer status, Timestamp start, Timestamp end) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
|
return applyMapper.selectCount(uname, status, start, end);
|
}
|
|
@Override
|
public List<ApplyEntity> selectByPage(Integer userid, String uname, Integer status, Timestamp start, Timestamp end, Integer limit, Integer offset) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
|
return applyMapper.selectByPage(userid, uname, status, start, end, limit, offset);
|
}
|
|
@Override
|
public List<ApplyEntity> selectAll() {
|
return applyMapper.selectAll();
|
}
|
|
@Override
|
public ApplyEntity selectById(int id) {
|
return applyMapper.selectById(id);
|
}
|
|
@Override
|
public UserEntity selectUserByDepcode(String depcode) {
|
return applyMapper.selectUserByDepcode(depcode);
|
}
|
|
@Override
|
public Integer selectSubmits(Integer userid) {
|
return applyMapper.selectSubmits(userid);
|
}
|
|
@Override
|
public List<FlowEntity> selectFlows(Integer applyid) {
|
return applyMapper.selectFlows(applyid);
|
}
|
|
@Override
|
public Integer insert(ApplyEntity entity) {
|
return applyMapper.insert(entity);
|
}
|
|
@Override
|
public Integer inserts(List<ApplyEntity> list) {
|
return applyMapper.inserts(list);
|
}
|
|
@Override
|
public Integer delete(int id) {
|
return applyMapper.delete(id);
|
}
|
|
@Override
|
public Integer deletes(List<Integer> ids) {
|
return applyMapper.deletes(ids);
|
}
|
|
@Override
|
public Integer update(ApplyEntity entity) {
|
return applyMapper.update(entity);
|
}
|
|
@Override
|
public Integer updates(List<ApplyEntity> list) {
|
return applyMapper.updates(list);
|
}
|
|
@Override
|
public Integer updateForDiscard(Integer userid, Integer id) {
|
return applyMapper.updateForDiscard(userid, id);
|
}
|
|
@Override
|
public Integer updateForResubmit(Integer userid, Integer id) {
|
return applyMapper.updateForResubmit(userid, id);
|
}
|
|
@Override
|
public Integer updateForSubmit(Integer userid, Integer applyid, Integer flowId) {
|
return applyMapper.updateForSubmit(userid, applyid, flowId);
|
}
|
|
@Override
|
public Integer updateForReject(Integer userid, Integer applyid, Integer flowId) {
|
return applyMapper.updateForReject(userid, applyid, flowId);
|
}
|
|
/**
|
* 插入数据申请
|
*/
|
public Integer insertApply(UserEntity ue, DownloadReqEntity dr) throws Exception {
|
ApplyEntity apply = getApplyEntity(ue, dr);
|
int rows = applyMapper.insert(apply);
|
if (0 == rows) {
|
return 0;
|
}
|
|
List<FlowEntity> list = getFlowEntities(apply.getId(), ue, dr);
|
if (list.isEmpty()) {
|
applyMapper.delete(apply.getId());
|
throw new Exception("找不到待审核人");
|
}
|
|
return flowService.inserts(list);
|
}
|
|
/**
|
* 获取数据申请实体类
|
*/
|
private ApplyEntity getApplyEntity(UserEntity ue, DownloadReqEntity dr) throws Exception {
|
// String dbPwd = Md5Helper.reverse(Md5Helper.generate(dr.getPwd()))
|
String aesPwd = AesHelper.encrypt(dr.getPwd());
|
String gids = null == dr.getIds() || dr.getIds().isEmpty() ? null : StringHelper.join(dr.getIds(), ",");
|
|
ApplyEntity apply = new ApplyEntity();
|
apply.setUserid(ue.getId());
|
apply.setDepids(StringHelper.join(dr.getDepcodes(), ","));
|
apply.setTabs(getTabs(dr));
|
apply.setEntities(StringHelper.join(dr.getEntities(), ","));
|
apply.setWkt(dr.getWkt());
|
apply.setPwd(aesPwd);
|
apply.setStatus(0);
|
apply.setCount(dr.getDepcodes().size());
|
apply.setDescr(dr.getDescr());
|
apply.setCreateUser(ue.getId());
|
apply.setDepcode(dr.getDepcode());
|
apply.setDircodes(dr.getDirs());
|
apply.setGids(gids);
|
apply.setFilters(dr.getFilter());
|
|
return apply;
|
}
|
|
/**
|
* 获取表名
|
*/
|
private String getTabs(DownloadReqEntity dr) {
|
if (!StaticData.SYS_META.equals(dr.getEntities().get(0))) {
|
return StringHelper.join(dr.getTabs(), ",");
|
}
|
|
List<MetaEntity> list = metaService.selectMetaFiles(dr.getIds());
|
if (null == list || list.isEmpty()) {
|
return "元数据表";
|
}
|
|
StringBuilder sb = new StringBuilder();
|
for (MetaEntity me : list) {
|
sb.append(me.getName()).append(",");
|
if (sb.length() > StaticData.I1000) {
|
break;
|
}
|
}
|
if (sb.length() > 1) {
|
sb.deleteCharAt(sb.length() - 1);
|
}
|
|
return sb.toString();
|
}
|
|
/**
|
* 获取申请流程实体类集合
|
*/
|
private List<FlowEntity> getFlowEntities(Integer applyId, UserEntity ue, DownloadReqEntity dr) {
|
List<FlowEntity> list = new ArrayList<>();
|
for (String depcode : dr.getDepcodes()) {
|
UserEntity user = selectUserByDepcode(depcode);
|
if (null == user) {
|
user = userService.selectByUid(StaticData.ADMIN);
|
}
|
|
FlowEntity flow = new FlowEntity();
|
flow.setApplyid(applyId);
|
flow.setDepcode(depcode);
|
flow.setUserid(user.getId());
|
flow.setStatus(0);
|
flow.setDescr(null);
|
flow.setCreateUser(ue.getId());
|
|
list.add(flow);
|
}
|
|
return list;
|
}
|
|
/**
|
* 打包DB数据
|
*/
|
public void zipDbData(UserEntity ue, ApplyEntity entity) {
|
try {
|
List<String> entities = Arrays.asList(entity.getEntities().split(StaticData.COMMA));
|
String pwd = AesHelper.decrypt(entity.getPwd());
|
|
DownloadReqEntity dr = new DownloadReqEntity();
|
dr.setEntities(entities);
|
dr.setWkt(dr.getWkt());
|
dr.setPwd(pwd);
|
dr.setDepcode(entity.getDepcode());
|
dr.setDirs(entity.getDircodes());
|
dr.setIds(getIds(entity.getGids()));
|
dr.setFilter(entity.getFilters());
|
|
String guid = StaticData.SYS_META.equals(entity.getEntities()) ? metaService.downloadMeteReq(ue, dr) : dataLibService.downloadDbReq(ue, dr);
|
if (!StringHelper.isEmpty(guid)) {
|
entity.setGuid(guid);
|
update(entity);
|
}
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
}
|
}
|
|
/**
|
* 获取ID集合
|
*/
|
private List<Integer> getIds(String gids) {
|
if (StringHelper.isEmpty(gids)) {
|
return null;
|
}
|
|
List<Integer> list = new ArrayList<>();
|
for (String str : gids.split(StaticData.COMMA)) {
|
list.add(Integer.parseInt(str));
|
}
|
|
return list;
|
}
|
}
|