| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- package cn.com.goldenwater.dcproj.service.impl.travel;
- import cn.com.goldenwater.core.service.AbstractCrudService;
- import cn.com.goldenwater.dcproj.constValue.SplitValue;
- import cn.com.goldenwater.dcproj.dao.BisInspAllDao;
- import cn.com.goldenwater.dcproj.dao.BisInspTravelPlanDao;
- import cn.com.goldenwater.dcproj.dao.BisInspTravelPlanPointDao;
- import cn.com.goldenwater.dcproj.dao.GeneralInfoDao;
- import cn.com.goldenwater.dcproj.model.AttInteBase;
- import cn.com.goldenwater.dcproj.model.BisInspAll;
- import cn.com.goldenwater.dcproj.model.BisInspTravelPlan;
- import cn.com.goldenwater.dcproj.model.BisInspTravelPlanPoint;
- import cn.com.goldenwater.dcproj.param.BisInspTravelPlanParam;
- import cn.com.goldenwater.dcproj.param.BisInspTravelPlanPointParam;
- import cn.com.goldenwater.dcproj.service.BisInspTravelPlanService;
- import cn.com.goldenwater.id.util.UuidUtil;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
- import freemarker.template.TemplateException;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.io.*;
- import java.nio.charset.StandardCharsets;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @author lhc
- * @date 2019-9-17
- */
- @Service
- @Transactional
- public class BisInspTravelPlanServiceImpl extends AbstractCrudService<BisInspTravelPlan, BisInspTravelPlanParam> implements BisInspTravelPlanService {
- @Autowired
- private BisInspTravelPlanDao bisInspTravelPlanDao;
- @Autowired
- private BisInspTravelPlanPointDao bisInspTravelPlanPointDao;
- @Autowired
- private GeneralInfoDao generalInfoDao;
- @Autowired
- private BisInspAllDao bisInspAllDao;
- @Value("${export.templatePath}" + "/")
- private String templatePath;
- private static final String TEMP_FILE_NAME = "travel.ftl";
- @Value("${export.basePath.docx}" + "/")
- private String tempFilePath;
- private Configuration configuration;
- public BisInspTravelPlanServiceImpl(BisInspTravelPlanDao bisInspTravelPlanDao) {
- super(bisInspTravelPlanDao);
- this.bisInspTravelPlanDao = bisInspTravelPlanDao;
- configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
- configuration.setDefaultEncoding("utf-8");
- }
- @Override
- public List<BisInspTravelPlan> getMyTravelPlan(String persId) {
- return bisInspTravelPlanDao.getMyTravelPlan(persId);
- }
- @Override
- public List<BisInspTravelPlan> getTravelByPlanId(String planId) {
- return bisInspTravelPlanDao.getTravelByPlanId(planId);
- }
- @Override
- public Integer sharePoint(String persId, String travelPlanId) {
- Integer row = 0;
- //获取行程下的点标注
- BisInspTravelPlanPointParam bisInspTravelPlanPointParam = new BisInspTravelPlanPointParam();
- bisInspTravelPlanPointParam.setTravelPlanId(travelPlanId);
- List<BisInspTravelPlanPoint> bisInspTravelPlanPoints = bisInspTravelPlanPointDao.findList(bisInspTravelPlanPointParam);
- //插入标注点到收藏点
- SimpleDateFormat sdf = new SimpleDateFormat(SplitValue.TIME_SPLIT_SEC);
- for (BisInspTravelPlanPoint bisInspTravelPlanPoint : bisInspTravelPlanPoints
- ) {
- AttInteBase attInteBase = new AttInteBase();
- attInteBase.setId(UuidUtil.uuid());
- attInteBase.setLgtd(bisInspTravelPlanPoint.getLgtd());
- attInteBase.setLttd(bisInspTravelPlanPoint.getLttd());
- attInteBase.setInteName(bisInspTravelPlanPoint.getName());
- attInteBase.setInteTime(sdf.format(new Date()));
- attInteBase.setPersid(persId);
- generalInfoDao.insertInte(attInteBase);
- row++;
- }
- //更新路书已经被收藏
- BisInspTravelPlan bisInspTravelPlan = new BisInspTravelPlan();
- bisInspTravelPlan.setId(travelPlanId);
- bisInspTravelPlan.setIsCollect("1");
- bisInspTravelPlanDao.update(bisInspTravelPlan);
- return row;
- }
- @Override
- public String getTravelPlanInfo(String travelPlanId) throws IOException {
- BisInspTravelPlan bisInspTravelPlan = bisInspTravelPlanDao.getTravelPlanInfo(travelPlanId);
- Map<String, Object> dataMap = new HashMap<>();
- String fileName = UuidUtil.uuid() + ".doc";
- String filePath = tempFilePath + "/" + fileName;
- //获取信息的业务逻辑
- dataMap = this.getDataMap(dataMap, bisInspTravelPlan);
- /*
- 替换模板
- dataMap 要填入模本的数据文件
- 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以从servlet,classpath,数据库装载,
- 这里我们的模板是放在template包下面
- */
- configuration.setDirectoryForTemplateLoading(new File(templatePath));
- // 通过模板名称获取模板
- Template template = configuration.getTemplate(TEMP_FILE_NAME);
- // 开始装载并输出
- if (template != null) {
- //输出文档路径及名称
- File outFile = new File(filePath);
- Writer out = null;
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(outFile);
- OutputStreamWriter oWriter = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
- //这个地方对流的编码不可或缺,使用main()单独调用时,应该可以,但是如果是web请求导出时导出后word文档就会打不开,并且包XML文件错误。主要是编码格式不正确,无法解析。
- //out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
- out = new BufferedWriter(oWriter);
- //向模板里替换数据
- template.process(dataMap, out);
- } catch (FileNotFoundException | TemplateException e) {
- e.printStackTrace();
- } finally {
- if (out != null) {
- out.close();
- }
- if (fos != null) {
- fos.close();
- }
- }
- }
- //输出文件到指定路径
- return fileName;
- //return bisInspTravelPlan;
- }
- @Override
- public Integer cancelTravelPlan(String travelPlanId) throws IOException {
- /**
- * 取出路书关联的督查组,设置督查组关联路书状态为未关联,再更新路书的计划id和名称为空
- *
- */
- BisInspTravelPlan bisInspTravelPlan = bisInspTravelPlanDao.get(travelPlanId);
- if (StringUtils.isNotBlank(bisInspTravelPlan.getPlanId())) {
- BisInspAll bisInspAll = new BisInspAll();
- bisInspAll.setId(bisInspTravelPlan.getPlanId());
- bisInspAll.setIsTravel("0");
- bisInspAllDao.update(bisInspAll);
- }
- return bisInspTravelPlanDao.cancelTravelPlan(travelPlanId);
- }
- private Map<String, Object> getDataMap(Map<String, Object> dataMap, BisInspTravelPlan bisInspTravelPlan) {
- dataMap.put("title", bisInspTravelPlan.getTitle());
- dataMap.put("dayList", bisInspTravelPlan.getBisInspTravelPlanDayList());
- dataMap.put("sttm", bisInspTravelPlan.getSttm());
- dataMap.put("entm", bisInspTravelPlan.getEntm());
- /*List<Map<String, Object>> planDayList = new ArrayList<Map<String, Object>>();
- for (BisInspTravelPlanDay bisInspTravelPlanDay : bisInspTravelPlan.getBisInspTravelPlanDayList()
- ) {
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("dayTitle", bisInspTravelPlanDay.getTitle());
- planDayList.add(map);
- List<Map<String, Object>> planPointList = new ArrayList<Map<String, Object>>();
- for (BisInspTravelPlanPoint bisInspTravelPlanPoint : bisInspTravelPlanDay.getBisInspTravelPlanPoints()) {
- Map<String, Object> mapPoint = new HashMap<String, Object>();
- mapPoint.put("pointTitle", bisInspTravelPlanPoint.getName());
- mapPoint.put("sttm", bisInspTravelPlanPoint.getSttm() == null ? "" : bisInspTravelPlanPoint.getSttm().toString());
- mapPoint.put("entm", bisInspTravelPlanPoint.getEntm() == null ? "" : bisInspTravelPlanPoint.getEntm().toInstant());
- planPointList.add(mapPoint);
- }
- dataMap.put("pointList", planPointList);
- }
- dataMap.put("dayList", planDayList);
- */
- return dataMap;
- }
- @Override
- public int update(BisInspTravelPlan bisInspTravelPlan) {
- bisInspTravelPlan.setUptm(new Date());
- //如果督查组不为空则设置 计划列表对象关联到路书
- if (null != bisInspTravelPlan.getPlanId()) {
- BisInspAll bisInspAll = new BisInspAll();
- bisInspAll.setId(bisInspTravelPlan.getPlanId());
- bisInspAll.setIsTravel("1");
- bisInspAllDao.update(bisInspAll);
- }
- return bisInspTravelPlanDao.update(bisInspTravelPlan);
- }
- @Override
- public int delete(String id) {
- return bisInspTravelPlanDao.delete(id);
- }
- @Override
- public int insert(BisInspTravelPlan bisInspTravelPlan) {
- /**
- * 设置时间及其他参数
- */
- bisInspTravelPlan.setIntm(new Date());
- bisInspTravelPlan.setUptm(new Date());
- bisInspTravelPlan.setId(UuidUtil.uuid());
- bisInspTravelPlan.setDataStat("0");
- if (null == bisInspTravelPlan.getSttm()) {
- bisInspTravelPlan.setSttm(new Date());
- }
- if (null == bisInspTravelPlan.getDayCount()) {
- bisInspTravelPlan.setDayCount(1);
- }
- return bisInspTravelPlanDao.insert(bisInspTravelPlan);
- }
- }
|