|
|
@@ -0,0 +1,215 @@
|
|
|
+package com.java110.front.smo.meterWaterImport.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.java110.core.component.BaseComponentSMO;
|
|
|
+import com.java110.core.context.IPageData;
|
|
|
+import com.java110.entity.assetImport.ImportFee;
|
|
|
+import com.java110.entity.assetImport.ImportFloor;
|
|
|
+import com.java110.entity.assetImport.ImportOwner;
|
|
|
+import com.java110.entity.assetImport.ImportParkingSpace;
|
|
|
+import com.java110.entity.assetImport.ImportRoom;
|
|
|
+import com.java110.entity.component.ComponentValidateResult;
|
|
|
+import com.java110.entity.meterImport.ImportMeter;
|
|
|
+import com.java110.front.smo.meterWaterImport.IMeterWaterImportSMO;
|
|
|
+import com.java110.utils.constant.ServiceConstant;
|
|
|
+import com.java110.utils.util.Assert;
|
|
|
+import com.java110.utils.util.ImportExcelUtils;
|
|
|
+import com.java110.utils.util.StringUtil;
|
|
|
+import org.apache.poi.ss.usermodel.Sheet;
|
|
|
+import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.http.HttpMethod;
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName AssetImportSmoImpl
|
|
|
+ * @Description TODO
|
|
|
+ * @Author wuxw
|
|
|
+ * @Date 2019/9/23 23:14
|
|
|
+ * @Version 1.0
|
|
|
+ * add by wuxw 2019/9/23
|
|
|
+ **/
|
|
|
+@Service("feeImportSMOImpl")
|
|
|
+public class MeterWaterImportSMOImpl extends BaseComponentSMO implements IMeterWaterImportSMO {
|
|
|
+ private final static Logger logger = LoggerFactory.getLogger(MeterWaterImportSMOImpl.class);
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RestTemplate restTemplate;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseEntity<String> importExcelData(IPageData pd, MultipartFile uploadFile) throws Exception {
|
|
|
+
|
|
|
+ try {
|
|
|
+ ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
|
|
|
+
|
|
|
+ //InputStream is = uploadFile.getInputStream();
|
|
|
+
|
|
|
+ Workbook workbook = null; //工作簿
|
|
|
+ //工作表
|
|
|
+ String[] headers = null; //表头信息
|
|
|
+ List<ImportMeter> importFees = new ArrayList<ImportMeter>();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ workbook = ImportExcelUtils.createWorkbook(uploadFile);
|
|
|
+
|
|
|
+ getImportFees(workbook,importFees);
|
|
|
+
|
|
|
+
|
|
|
+ // 保存数据
|
|
|
+ return dealExcelData(pd,importFees, result);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("导入失败 ", e);
|
|
|
+ return new ResponseEntity<String>("非常抱歉,您填写的模板数据有误:" + e.getMessage(), HttpStatus.BAD_REQUEST);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理ExcelData数据
|
|
|
+ *
|
|
|
+ * @param meters
|
|
|
+ */
|
|
|
+ private ResponseEntity<String> dealExcelData(IPageData pd,
|
|
|
+ List<ImportMeter> meters,
|
|
|
+ ComponentValidateResult result) {
|
|
|
+ ResponseEntity<String> responseEntity = null;
|
|
|
+
|
|
|
+ //保存车位
|
|
|
+ responseEntity = savedMeterWaterInfo(pd, meters, result);
|
|
|
+
|
|
|
+ if (responseEntity == null || responseEntity.getStatusCode() != HttpStatus.OK) {
|
|
|
+ return responseEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+ return responseEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存业主信息
|
|
|
+ *
|
|
|
+ * @param pd
|
|
|
+ * @param result
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ResponseEntity<String> savedMeterWaterInfo(IPageData pd, List<ImportMeter> meters, ComponentValidateResult result) {
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(pd.getReqData());
|
|
|
+ String communityId = jsonObject.getString("communityId");
|
|
|
+ String meterType = jsonObject.getString("meterType");
|
|
|
+ String apiUrl = "";
|
|
|
+ JSONObject paramIn = null;
|
|
|
+ ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
|
|
|
+ for (ImportMeter meter : meters) {
|
|
|
+ paramIn = new JSONObject();
|
|
|
+ apiUrl = ServiceConstant.SERVICE_API_URL + "/api/meterWater.saveMeterWater";
|
|
|
+ paramIn.put("communityId", communityId);
|
|
|
+ paramIn.put("meterType", meterType);
|
|
|
+ paramIn.put("objType",meter.getObjType());
|
|
|
+ paramIn.put("objId", meter.getObjId());
|
|
|
+ paramIn.put("preDegrees", meter.getCurDegrees());
|
|
|
+ paramIn.put("curDegrees", meter.getCurDegrees());
|
|
|
+ paramIn.put("preReadingTime", meter.getCurReadingTime());
|
|
|
+ paramIn.put("curReadingTime", meter.getCurReadingTime());
|
|
|
+ responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
|
|
|
+ if (responseEntity.getStatusCode() == HttpStatus.OK) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return responseEntity;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询存在的业主
|
|
|
+ *
|
|
|
+ * @param pd
|
|
|
+ * @param result
|
|
|
+ * @param importOwner
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private JSONObject getExistsOwner(IPageData pd, ComponentValidateResult result, ImportOwner importOwner) {
|
|
|
+ String apiUrl = "";
|
|
|
+ ResponseEntity<String> responseEntity = null;
|
|
|
+ apiUrl = ServiceConstant.SERVICE_API_URL + "/api/owner.queryOwners?page=1&row=1&communityId=" + result.getCommunityId()
|
|
|
+ + "&ownerTypeCd=1001&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel();
|
|
|
+ responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
|
|
|
+
|
|
|
+ if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject savedOwnerInfoResult = JSONObject.parseObject(responseEntity.getBody());
|
|
|
+
|
|
|
+ if (!savedOwnerInfoResult.containsKey("owners") || savedOwnerInfoResult.getJSONArray("owners").size() != 1) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject savedOwnerInfo = savedOwnerInfoResult.getJSONArray("owners").getJSONObject(0);
|
|
|
+
|
|
|
+ return savedOwnerInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void getImportFees(Workbook workbook,List<ImportMeter> meters) {
|
|
|
+ Sheet sheet = null;
|
|
|
+ sheet = ImportExcelUtils.getSheet(workbook, "水电费");
|
|
|
+ List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
|
|
|
+ ImportFloor importFloor = null;
|
|
|
+ for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
|
|
|
+ Object[] os = oList.get(osIndex);
|
|
|
+ if (osIndex == 0) { // 第一行是 头部信息 直接跳过
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtil.isNullOrNone(os[0])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ Assert.hasLength(os[0].toString(), "表类型" + (osIndex + 1) + "表类型为空");
|
|
|
+ Assert.hasLength(os[1].toString(), "类型" + (osIndex + 1) + "类型为空");
|
|
|
+ Assert.hasLength(os[2].toString(), "对象ID" + (osIndex + 1) + "对象ID为空");
|
|
|
+ Assert.hasLength(os[3].toString(), "本期读数" + (osIndex + 1) + "本期读数为空");
|
|
|
+ Assert.hasLength(os[4].toString(), "读表时间" + (osIndex + 1) + "读表时间为空");
|
|
|
+ ImportMeter meter = new ImportMeter();
|
|
|
+
|
|
|
+ //水电费类型
|
|
|
+ if ("电表".equals(os[0].toString())) {
|
|
|
+ meter.setMeterType("1010");
|
|
|
+ } else if ("水表".equals(os[0].toString())) {
|
|
|
+ meter.setMeterType("2020");
|
|
|
+ }
|
|
|
+ meter.setObjType(os[1].toString());
|
|
|
+ meter.setObjId(os[2].toString());
|
|
|
+ meter.setRemark(os[3].toString());
|
|
|
+ //本期读数
|
|
|
+ meter.setCurDegrees(os[4].toString());
|
|
|
+ meter.setCurReadingTime(os[5].toString());
|
|
|
+ meters.add(meter);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public RestTemplate getRestTemplate() {
|
|
|
+ return restTemplate;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setRestTemplate(RestTemplate restTemplate) {
|
|
|
+ this.restTemplate = restTemplate;
|
|
|
+ }
|
|
|
+}
|