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.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)); sqlSessionTemplate.insert("phoneBillFlowServiceDaoImpl.savePhoneBillFlowInfo", BeanConvertUtil.beanCovertMap(po)); // addFee(po, data, assetImportLogDetailDto.getLogId(), assetImportLogDetailDto); int i = 1; } 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() + "-" + po.getMonth() + "-" + "01"); payFeePo.setEndTime(po.getYear() + "-" + po.getMonth() + "-" + DateUtil.getTotalDaysInMonth(Integer.parseInt(po.getYear()), Integer.parseInt(po.getMonth()))); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setbId("-1"); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_FINISH); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setUserId("-1"); reqJson.put("feeId", payFeePo.getFeeId()); 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); 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); 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); 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()) { throw new IllegalArgumentException("未查询到房屋:" + po.getAddress()); // 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()); } } }