package com.lf.server.service.show; import com.lf.server.entity.ctrl.DownloadReqEntity; 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 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 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 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 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 selectFlows(Integer applyid) { return applyMapper.selectFlows(applyid); } @Override public Integer insert(ApplyEntity entity) { return applyMapper.insert(entity); } @Override public Integer inserts(List list) { return applyMapper.inserts(list); } @Override public Integer delete(int id) { return applyMapper.delete(id); } @Override public Integer deletes(List ids) { return applyMapper.deletes(ids); } @Override public Integer update(ApplyEntity entity) { return applyMapper.update(entity); } @Override public Integer updates(List 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 list = getFlowEntities(apply.getId(), ue, dr); rows = flowService.inserts(list); return rows; } /** * 获取数据申请实体类 */ private ApplyEntity getApplyEntity(UserEntity ue, DownloadReqEntity dr) throws Exception { // String dbPwd = Md5Helper.reverse(Md5Helper.generate(dr.getPwd())) String aesPwd = AesHelper.encrypt(dr.getPwd()); ApplyEntity apply = new ApplyEntity(); apply.setUserid(ue.getId()); apply.setDepids(StringHelper.join(dr.getDepcodes(), ",")); apply.setTabs(StringHelper.join(dr.getTabs(), ",")); 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()); return apply; } /** * 获取申请流程实体类集合 */ private List getFlowEntities(Integer applyId, UserEntity ue, DownloadReqEntity dr) { List list = new ArrayList<>(); for (String depcode : dr.getDepcodes()) { UserEntity user = selectUserByDepcode(depcode); if (null == user) { continue; } FlowEntity flow = new FlowEntity(); flow.setApplyid(applyId); flow.setDepcode(user.getDepcode()); 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 entities = Arrays.asList(entity.getEntities().split(",")); String pwd = AesHelper.decrypt(entity.getPwd()); dataLibService.createZipFile(ue, entities, null, null, entity.getWkt(), pwd); } catch (Exception ex) { log.error(ex.getMessage(), ex); } } }