package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.community.CommunityDto; import com.java110.dto.fee.FeeAttrDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.importData.ImportOwnerRoomDto; import com.java110.dto.importData.Vtil; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.room.RoomDto; import com.java110.intf.community.ICommunityInnerServiceSMO; import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.fee.IFeeAttrInnerServiceSMO; import com.java110.intf.fee.IMeterWaterInnerServiceSMO; import com.java110.intf.fee.IPayFeeV1InnerServiceSMO; import com.java110.intf.user.IOwnerInnerServiceSMO; import com.java110.job.importData.DefaultImportData; import com.java110.job.importData.IImportDataAdapt; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.meter.MeterWaterPo; import com.java110.po.meter.PhoneBillFlow; import com.java110.utils.exception.CmdException; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @Service("importPhoneBillFeeV2QueueData") public class ImportPhoneBillFeeV2QueueDataAdapt extends DefaultImportData implements IImportDataAdapt { @Autowired private IRoomInnerServiceSMO roomInnerServiceSMOImpl; @Autowired private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl; @Autowired private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; @Autowired private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl; @Autowired private SqlSessionTemplate sqlSessionTemplate; @Autowired private ICommunityInnerServiceSMO communityInnerServiceSMOImpl; // @Autowired // private IPayFeeMonth payFeeMonthImpl; @Override public void importData(List assetImportLogDetailDtos) { for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) { try { doImportData(assetImportLogDetailDto); updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); } catch (Exception e) { e.printStackTrace(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); PhoneBillFlow po = BeanConvertUtil.covertBean(data, PhoneBillFlow.class); CommunityDto communityDto = new CommunityDto(); communityDto.setCommunityCode(po.getCommunityCode()); communityDto.setName(po.getCommunityName()); List communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto); if (communityDtos.isEmpty()) { throw new IllegalArgumentException("小区不存在:" + communityDto.getName() + "(" + communityDto.getCommunityCode() + ")"); } else if (communityDtos.size() > 1) { throw new IllegalArgumentException("存在多个小区:" + communityDto.getName() + "(" + communityDto.getCommunityCode() + ")"); } else { po.setCommunityId(communityDtos.get(0).getCommunityId()); } validateRoom(po); po.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_waterId)); po.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); if (po.getRemark3() != null){ po.setRemark1(Vtil.defaultValue(po.getRemark1()) + po.getRemark3()); } addFee(po, data, assetImportLogDetailDto.getLogId(), assetImportLogDetailDto); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } private void addFee(PhoneBillFlow po, JSONObject reqJson, String batchId, AssetImportLogDetailDto assetImportLogDetailDto) { PayFeePo payFeePo = BeanConvertUtil.covertBean(reqJson, PayFeePo.class); payFeePo.setCommunityId(po.getCommunityId()); payFeePo.setFeeId(po.getFeeId()); payFeePo.setAmount(po.getPayableAmount()); if (payFeePo.getAmount().isEmpty()){ payFeePo.setAmount("-1"); } // payFeePo.setSecondaryFeeTypeCd("888800010157"); payFeePo.setUserId(Vtil.defaultValue(po.getUserId())); payFeePo.setFeeTypeCd(Vtil.defaultValue(po.getFeeTypeCd(), "630000009")); payFeePo.setConfigId(Vtil.defaultValue(po.getConfigId(), "922026012136272690")); payFeePo.setPayerObjId(po.getRoomId()); payFeePo.setBatchId(batchId); payFeePo.setStartTime(po.getYear() + "-" + Vtil.getMonth(po.getMonth()) + "-" + "01"); payFeePo.setEndTime(Vtil.processDateEnhanced(DateUtil.getDateFromStringB(payFeePo.getStartTime()), "end", DateUtil.DATE_FORMATE_STRING_B, null ,"").split(" ")[0]); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setbId("-1"); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setUserId("-1");; String id = po.getId(); po.setId(null); Object o = ((HashMap) sqlSessionTemplate.selectList("phoneBillFlowServiceDaoImpl.queryPhoneBillFlowsCount", BeanConvertUtil.beanCovertMap(po)).get(0)).get("count"); if (Integer.parseInt(Vtil.defaultValue(o, "1")) != 0) { throw new IllegalArgumentException("重复的话费"); } po.setId(id); // reqJson.put("feeId", payFeePo.getFeeId()); // String id = payFeePo.getFeeId(); // payFeePo.setFeeId(null); int i = payFeeV1InnerServiceSMOImpl.queryPayFeesCountByPo(payFeePo); // if (i > 0) { // throw new IllegalArgumentException("重复的话费"); // } // payFeePo.setFeeId(id); sqlSessionTemplate.insert("phoneBillFlowServiceDaoImpl.savePhoneBillFlowInfo", BeanConvertUtil.beanCovertMap(po)); int flag = payFeeV1InnerServiceSMOImpl.savePayFee(payFeePo); if (flag < 1) { throw new CmdException("保存数据失败"); } FeeAttrPo feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME); feeAttrPo.setValue(payFeePo.getEndTime()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } //todo 保存 房屋名称 feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME); feeAttrPo.setValue(po.getFloorNum() + "-" + po.getUnitNum() + "-" + po.getRoomNum()); feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } OwnerDto ownerDto = new OwnerDto(); ownerDto.setCommunityId(po.getCommunityId()); ownerDto.setRoomId(reqJson.getString("objId")); List ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto); if (ownerDtos != null && ownerDtos.size() > 0) { feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getLink()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getName()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); if (flag < 1) { throw new CmdException("保存数据失败"); } } } @Autowired private IImportOwnerRoomInnerServiceSMO importOwnerRoomInnerServiceSMOImpl; private void validateRoom(PhoneBillFlow po) { RoomDto roomDto = new RoomDto(); roomDto.setRoadName(po.getRoadName()); roomDto.setFloorNum(Vtil.defaultValueToNumber(po.getFloorNum())); roomDto.setCommunityId(po.getCommunityId()); roomDto.setUnitNum(Vtil.defaultValueToNumber(po.getUnitNum())); roomDto.setRoomNum(Vtil.defaultValueToNumber(po.getRoomNum())); if (roomDto.getRoomNum().isEmpty()) { roomDto.setRoomNumIsNull("yes"); } List roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { po.setRoomId("1"); po.setRemark3("\n\n房屋:" + roomDto.getCommunityId() + "-" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() + "不存在,该费用存入公司账户"); // ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋 // importOwnerRoomDto.setUserId(po.getUserId()); // importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId)); // importOwnerRoomDto.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId)); // importOwnerRoomDto.setUserId(po.getUserId()); // importOwnerRoomDto.setLayerCount("0"); // importOwnerRoomDto.setLayer("0"); // importOwnerRoomDto.setLift("未知"); // importOwnerRoomDto.setSection("10102"); // importOwnerRoomDto.setOwnerTypeCd("1001"); // importOwnerRoomDto.setPersonType(OwnerDto.PERSON_TYPE_PERSON); // importOwnerRoomDto.setPersonRole(OwnerDto.PERSON_ROLE_OWNER); // importOwnerRoomDto.setRoomSubType(RoomDto.ROOM_SUB_TYPE_HOUSE); // importOwnerRoomDto.setCommunityId(po.getCommunityId());//小区编号 // //--------- // // importOwnerRoomDto.setRoadName(roomDto.getRoadName());//路名 // importOwnerRoomDto.setFloorNum(roomDto.getFloorNum());//弄 // importOwnerRoomDto.setUnitNum(roomDto.getUnitNum());//门 // importOwnerRoomDto.setRoomNum(roomDto.getRoomNum());//室 // importOwnerRoomDto.setDoorRoomNum(roomDto.getUnitNum() + "-" + roomDto.getRoomNum());//门市号 // importOwnerRoomDto.setPropertyAddress( // roomDto.getRoadName() + roomDto.getFloorNum() + roomDto.getUnitNum() + roomDto.getRoomNum() // );//业主地址 // importOwnerRoomDto.setBuiltUpArea("0");//面积 // importOwnerRoomDto.setRoomArea("0");//面积 // importOwnerRoomDto.setRoomRent("0");//面积 // importOwnerRoomDto.setSellState(RoomDto.STATE_FREE);//房屋状态 // importOwnerRoomDto.setRoomState(Vtil.defaultValue(importOwnerRoomDto.getOwnerName()).equals("") ? "2004" : "2001"); // int i = importOwnerRoomInnerServiceSMOImpl.saveOwnerRoom(importOwnerRoomDto); // // if (i == 0) { // throw new IllegalArgumentException("房屋添加错误"); // } // po.setRoomId(importOwnerRoomDto.getRoomId()); } else if (roomDtos.size() > 1) { throw new IllegalArgumentException("存在重复的房屋,详见导入详情"); } else { po.setRoomId(roomDtos.get(0).getRoomId()); } } }