package cn.com.goldenwater.dcproj.service.impl.prd; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.AttPrdCstrProjBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspAllObjDao; import cn.com.goldenwater.dcproj.dao.BisInspOprdCstrProjRgstrDao; import cn.com.goldenwater.dcproj.dto.BisInspOprdCstrProjRgstrDto; import cn.com.goldenwater.dcproj.dto.BisInspRgstrDto; import cn.com.goldenwater.dcproj.model.AttPrdCstrProjBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspOprdCstrProjRgstr; import cn.com.goldenwater.dcproj.param.BisInspOprdCstrProjRgstrParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.service.BisInspOprdCstrProjRgstrService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.FormatFieldUtil; import cn.com.goldenwater.dcproj.utils.GeoUtil; import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * @author lune * @date 2019-12-12 */ @Service @Transactional public class BisInspOprdCstrProjRgstrServiceImpl extends AbstractCrudService implements BisInspOprdCstrProjRgstrService, BisInspObjStrategy { @Autowired private BisInspOprdCstrProjRgstrDao bisInspOprdCstrProjRgstrDao; @Autowired private AttPrdCstrProjBaseDao attPrdCstrProjBaseDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; @Autowired private BisInspOprdCstrProjRgstrDao oprdCstrProjRgstrDao; public BisInspOprdCstrProjRgstrServiceImpl(BisInspOprdCstrProjRgstrDao bisInspOprdCstrProjRgstrDao) { super(bisInspOprdCstrProjRgstrDao); this.bisInspOprdCstrProjRgstrDao = bisInspOprdCstrProjRgstrDao; } @Override public int update(BisInspOprdCstrProjRgstr entity) { BisInspOprdCstrProjRgstr rgstr = get(entity.getId()); if (rgstr == null) { throw new CheckException("未找到登记表!"); } // 更新登记表 int ret = super.update(entity); // 更新基础表 entity.setObjId(rgstr.getObjId()); updateAttBase(entity); return ret; } private void updateAttBase(BisInspOprdCstrProjRgstr rgstr) { AttPrdCstrProjBase base = attPrdCstrProjBaseDao.getObjId(rgstr.getObjId()); base.setCode(rgstr.getCode()); base.setName(rgstr.getName()); base.setType(rgstr.getType()); base.setAdCode(rgstr.getAdCode()); base.setAdName(rgstr.getAdName()); base.setLocation(rgstr.getLocation()); base.setCenterX(rgstr.getCenterX()); base.setCenterY(rgstr.getCenterX()); base.setGdX(rgstr.getGdX()); base.setGdY(rgstr.getGdY()); attPrdCstrProjBaseDao.update(base); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { AttPrdCstrProjBase prdCstrProjBase = attPrdCstrProjBaseDao.get(bisInspAllObj.getCode()); BisInspOprdCstrProjRgstr oprdCstrProjRgstr = new BisInspOprdCstrProjRgstr(); oprdCstrProjRgstr.setAdCode(prdCstrProjBase.getAdCode()); oprdCstrProjRgstr.setAdName(prdCstrProjBase.getAdName()); oprdCstrProjRgstr.setPersId(persId); oprdCstrProjRgstr.setProvince(bisInspAllObj.getProvince()); oprdCstrProjRgstr.setState("0"); oprdCstrProjRgstr.setId(UuidUtil.uuid()); oprdCstrProjRgstr.setInTm(new Date()); oprdCstrProjRgstr.setUpTm(new Date()); oprdCstrProjRgstr.setObjId(bisInspAllObj.getObjId()); oprdCstrProjRgstr.setGroupId(bisInspAllObj.getId()); oprdCstrProjRgstr.setLocation(prdCstrProjBase.getLocation()); oprdCstrProjRgstr.setName(prdCstrProjBase.getName()); oprdCstrProjRgstr.setType(prdCstrProjBase.getType()); if (prdCstrProjBase.getGdX() != null && prdCstrProjBase.getGdY() != null) { Map params = GeoUtil.gcj02towgs84(prdCstrProjBase.getGdX(), prdCstrProjBase.getGdY()); oprdCstrProjRgstr.setCenterX(params.get("lon")); oprdCstrProjRgstr.setCenterY(params.get("lat")); } oprdCstrProjRgstr.setGdX(prdCstrProjBase.getGdX()); oprdCstrProjRgstr.setGdY(prdCstrProjBase.getGdY()); bisInspOprdCstrProjRgstrDao.insert(oprdCstrProjRgstr); } @Override public String getType() { return BisInspEnum.PRD.getValue(); } @Override public void cleanObjData(String objId) { BisInspOprdCstrProjRgstrParam param = new BisInspOprdCstrProjRgstrParam(); param.setObjId(objId); List list = oprdCstrProjRgstrDao.findList(param); if (list.size() > 0) { String id = list.get(0).getId(); BisInspOprdCstrProjRgstr rgstr = oprdCstrProjRgstrDao.get(id); oprdCstrProjRgstrDao.delete(id); if (rgstr != null) { this.bisInspAllObjDao.delete(rgstr.getObjId()); } } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { return findCstrPrdPage(typeParam, response); } @Override public Object findObjListByType(TypeParam typeParam) { return findCstrPrdList(typeParam); } @Override public PageInfo findCstrPrdPage(TypeParam typeParam, HttpServletResponse response) { if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } if ("1".equals(typeParam.getIsExport())) { ExportUtil.exportExcel(bisInspOprdCstrProjRgstrDao.findCstrPrdPage(typeParam), response, "节水管理与评价督查列表"); } PageHelper.startPage(typeParam); List list = bisInspOprdCstrProjRgstrDao.findCstrPrdPage(typeParam); list = changeList(list); return new PageInfo(list); } @Override public List findCstrPrdList(TypeParam typeParam) { if (StringUtils.isNotBlank(typeParam.getAdCode())) { typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD))); } List list = bisInspOprdCstrProjRgstrDao.findCstrPrdPage(typeParam); return changeList(list); } @Override public PageInfo findPcPage(BisInspOprdCstrProjRgstrParam bisInspOprdCstrProjRgstrParam) { PageHelper.startPage(bisInspOprdCstrProjRgstrParam); List list = bisInspOprdCstrProjRgstrDao.findPrdPcPage(bisInspOprdCstrProjRgstrParam); if (list.size() > 0) { for (BisInspOprdCstrProjRgstrDto b : list) { if (b.getAdFullName() != null) { if (b.getAdFullName().contains(SplitValue.HENG_SPLIT)) { String[] split = b.getAdFullName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { b.setProvince(split[0]); b.setCity(split[1]); b.setCounty(split[2]); } if (split.length == 2) { b.setProvince(split[0]); b.setCity(split[1]); b.setCounty(""); } } else { b.setProvince(b.getAdFullName()); } } } } return new PageInfo(list); } @Override public void findPcPageExport(BisInspOprdCstrProjRgstrParam bisInspOprdCstrProjRgstrParam, HttpServletResponse response) { List list = bisInspOprdCstrProjRgstrDao.findPrdPcPage(bisInspOprdCstrProjRgstrParam); list.forEach(x -> { x.setState(FormatFieldUtil.commonStateFormat(x.getState())); }); List columns = new ArrayList<>(); columns.add("id"); columns.add("adCode"); columns.add("centerX"); columns.add("centerY"); columns.add("inTm"); columns.add("upTm"); columns.add("gdX"); columns.add("gdY"); columns.add("baseId"); columns.add("rgstrId"); columns.add("objId"); columns.add("persId"); columns.add("groupId"); columns.add("province"); ExportUtil.exportExcel(list, response, "水保督查登记列表", columns, BisInspOprdCstrProjRgstrDto.class); } private List changeList(List list) { if (list.size() > 0) { for (BisInspRgstrDto rgstrDto : list) { String adFullName = rgstrDto.getAdName(); if (adFullName.contains(SplitValue.HENG_SPLIT)) { String[] split = adFullName.split(SplitValue.HENG_SPLIT); if (split.length == 3) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(split[2]); } if (split.length == 2) { rgstrDto.setProvince(split[0]); rgstrDto.setCity(split[1]); rgstrDto.setCountry(""); } } else { rgstrDto.setProvince(adFullName); } } } return list; } }