Compare commits

..
7 Commits
26 changed files with 263 additions and 175 deletions
@@ -12,7 +12,7 @@ public class ChgrResponseDto {
private String chgrId; private String chgrId;
private String chgrNm; private String chgrNm;
private String speedTp; private String speedTp;
private String chgrTp; private String chgrType;
private double gpsXpos; private double gpsXpos;
private double gpsYpos; private double gpsYpos;
private String locInfo; private String locInfo;
@@ -29,7 +29,7 @@ public class ChgrResponseDto {
chgr.setStNm(this.stNm); chgr.setStNm(this.stNm);
chgr.setChgrNm(this.chgrNm); chgr.setChgrNm(this.chgrNm);
chgr.setSpeedTp(this.speedTp); chgr.setSpeedTp(this.speedTp);
chgr.setChgrTp(this.chgrTp); chgr.setChgrTp(this.chgrType);
return chgr; return chgr;
} }
} }
@@ -73,7 +73,12 @@ public class ChgrService extends BaseService<Chgr,String,ChgrRepository> {
@Override @Override
protected Specification<Chgr> getSpecification(Chgr chgr) { protected Specification<Chgr> getSpecification(Chgr chgr) {
return null; Specification<Chgr> rst = null;
if(chgr == null) return null;
rst = addWhere(rst, chgr.getChgrId(), ChgrSpecification.getChgrId(chgr.getChgrId()));
rst = addWhere(rst, chgr.getStId(), ChgrSpecification.getStId(chgr.getStId()));
return rst;
} }
@Override @Override
@@ -1,4 +1,17 @@
package net.jwsi.jcms.vpp.chgr; package net.jwsi.jcms.vpp.chgr;
public class ChgrSpecification { import net.jwsi.jcms.base.BaseSpecification;
import org.springframework.data.jpa.domain.Specification;
public class ChgrSpecification extends BaseSpecification {
public static Specification<Chgr> getStId(String stId) {
return (root, query, cb) -> {
return cb.equal(root.get("stId"), stId);
};
}
public static Specification<Chgr> getChgrId(String chgrId) {
return (root, query, cb) -> {
return cb.equal(root.get("chgrId"), chgrId);
};
}
} }
@@ -72,7 +72,15 @@ public class ChgrCurrStateService extends BaseService<ChgrCurrState,ChgrCurrStat
@Override @Override
protected Specification<ChgrCurrState> getSpecification(ChgrCurrState chgrCurrState) { protected Specification<ChgrCurrState> getSpecification(ChgrCurrState chgrCurrState) {
return null; Specification<ChgrCurrState> rst = null;
if(chgrCurrState == null) return null;
rst = addWhere(rst, chgrCurrState.getChgrId(), ChgrCurrStateSpecification.getChgrId(chgrCurrState.getChgrId()));
rst = addWhere(rst, chgrCurrState.getStId(), ChgrCurrStateSpecification.getStId(chgrCurrState.getStId()));
rst = addWhere(rst, chgrCurrState.getCh1DoorStateCd(), ChgrCurrStateSpecification.getDoorState(chgrCurrState.getCh1DoorStateCd()));
rst = addWhere(rst, chgrCurrState.getCh1PlugStateCd(), ChgrCurrStateSpecification.getPlugState(chgrCurrState.getCh1PlugStateCd()));
rst = addWhere(rst, chgrCurrState.getCh1RechgStateCd(), ChgrCurrStateSpecification.getRechgState(chgrCurrState.getCh1RechgStateCd()));
return rst;
} }
@Override @Override
@@ -0,0 +1,35 @@
package net.jwsi.jcms.vpp.chgrCurrState;
import net.jwsi.jcms.base.BaseSpecification;
import org.springframework.data.jpa.domain.Specification;
public class ChgrCurrStateSpecification extends BaseSpecification {
public static Specification<ChgrCurrState> getStId(String stId) {
return (root, query, cb) -> {
return cb.equal(root.get("stId"), stId);
};
}
public static Specification<ChgrCurrState> getChgrId(String chgrId) {
return (root, query, cb) -> {
return cb.equal(root.get("chgrId"), chgrId);
};
}
public static Specification<ChgrCurrState> getDoorState(String doorState) {
return (root, query, cb) -> {
return cb.equal(root.get("ch1DoorStateCd"), doorState);
};
}
public static Specification<ChgrCurrState> getPlugState(String plugState) {
return (root, query, cb) -> {
return cb.equal(root.get("ch1PlugStateCd"), plugState);
};
}
public static Specification<ChgrCurrState> getRechgState(String rechgState) {
return (root, query, cb) -> {
return cb.equal(root.get("ch1RechgStateCd"), rechgState);
};
}
}
@@ -22,6 +22,9 @@ public class ChgrHist extends BaseStEntity {
@Column(name = "CHGR_ID", nullable = false) @Column(name = "CHGR_ID", nullable = false)
private String chgrId; // 충전기 id private String chgrId; // 충전기 id
@Column(name = "CH_ID")
private Integer chId;
@Column(name = "ST_ID", nullable = false) @Column(name = "ST_ID", nullable = false)
private String stId; // 충전소 id private String stId; // 충전소 id
@@ -23,6 +23,7 @@ public class ChgrHistController extends BaseController<ChgrHist,Integer,ChgrHist
@GetMapping("list") @GetMapping("list")
public String list() throws IllegalAccessException { public String list() throws IllegalAccessException {
chgrHistService.getChgrHist();
return path+"list"; return path+"list";
} }
@@ -5,4 +5,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface ChgrHistRepository extends BaseRecStRepository<ChgrHist,Integer> { public interface ChgrHistRepository extends BaseRecStRepository<ChgrHist,Integer> {
boolean existsByChgrIdAndChIdAndRechgEDt(String chgrId, Integer chId,String rechgEDt);
} }
@@ -52,6 +52,7 @@ public class ChgrHistResponseDto {
chgrHist.setRechgAmt(this.rechgAmt); chgrHist.setRechgAmt(this.rechgAmt);
chgrHist.setPayFnsh(this.payFnsh); chgrHist.setPayFnsh(this.payFnsh);
chgrHist.setRechGwh(this.rechgWh); chgrHist.setRechGwh(this.rechgWh);
chgrHist.setChId(this.chId);
return chgrHist; return chgrHist;
} }
} }
@@ -30,7 +30,7 @@ public class ChgrHistService extends BaseService<ChgrHist, Integer, ChgrHistRepo
@Transactional @Transactional
@Scheduled(cron = "0 */10 * * * *") @Scheduled(cron = "0 */10 * * * *")
public void getChgrHist() throws IllegalAccessException { public void getChgrHist() {
String startDt = LocalDate.now().toString(); String startDt = LocalDate.now().toString();
ApiResponse<List<ChgrHistResponseDto>> response = apiClient.fetchChgrHist(startDt, "50"); ApiResponse<List<ChgrHistResponseDto>> response = apiClient.fetchChgrHist(startDt, "50");
@@ -50,15 +50,18 @@ public class ChgrHistService extends BaseService<ChgrHist, Integer, ChgrHistRepo
.map(ChgrHistResponseDto::toEntity) .map(ChgrHistResponseDto::toEntity)
.toList(); .toList();
int insertCount = 0;
for (ChgrHist h : entityList) { for (ChgrHist h : entityList) {
Integer id = BaseService.getId(h);
if (id != null && super.repository.existsById(id)) { boolean isExist = ((ChgrHistRepository) super.repository).existsByChgrIdAndChIdAndRechgEDt(h.getChgrId(), h.getChId(),h.getRechgEDt());
super.update(h);
} else { if (!isExist) {
super.insert(h); super.insert(h);
insertCount++;
} }
} }
log.info("충전이력 수집 완료: API 응답 {}건 중 신규 저장 {}건", entityList.size(), insertCount);
} }
@Override @Override
@@ -86,7 +89,12 @@ public class ChgrHistService extends BaseService<ChgrHist, Integer, ChgrHistRepo
@Override @Override
protected Specification<ChgrHist> getSpecification(ChgrHist chgrHist) { protected Specification<ChgrHist> getSpecification(ChgrHist chgrHist) {
return null; Specification<ChgrHist> rst = null;
if(chgrHist == null) return null;
rst = addWhere(rst, chgrHist.getChgrId(), ChgrHistSpecification.getChgrId(chgrHist.getChgrId()));
rst = addWhere(rst, chgrHist.getStId(), ChgrHistSpecification.getStId(chgrHist.getStId()));
return rst;
} }
@Override @Override
@@ -0,0 +1,17 @@
package net.jwsi.jcms.vpp.chgrHist;
import net.jwsi.jcms.base.BaseSpecification;
import org.springframework.data.jpa.domain.Specification;
public class ChgrHistSpecification extends BaseSpecification {
public static Specification<ChgrHist> getStId(String stId) {
return (root, query, cb) -> {
return cb.equal(root.get("stId"), stId);
};
}
public static Specification<ChgrHist> getChgrId(String chgrId) {
return (root, query, cb) -> {
return cb.equal(root.get("chgrId"), chgrId);
};
}
}
@@ -79,8 +79,13 @@ public class ProviderService extends BaseService<Provider, String, ProviderRepos
@Override @Override
protected Specification<Provider> getSpecification(Provider srch) { protected Specification<Provider> getSpecification(Provider srch) {
if (srch == null) return null; if (srch == null) return null;
Specification<Provider> rst = null; Specification<Provider> rst = null;
rst = addWhere(rst, srch.getProviderId(), ProviderSpecification.providerId(srch.getProviderId())); rst = addWhere(rst, srch.getProviderNm(), ProviderSpecification.providerNm(srch.getProviderNm()));
rst = addWhere(rst, srch.getBizTaxId(), ProviderSpecification.bizTaxId(srch.getBizTaxId()));
rst = addWhere(rst, srch.getCeo(), ProviderSpecification.ceo(srch.getCeo()));
rst = addWhere(rst, srch.getTel(), ProviderSpecification.tel(srch.getTel()));
rst = addWhere(rst, srch.getFax(), ProviderSpecification.fax(srch.getFax()));
return rst; return rst;
} }
@@ -1,10 +1,28 @@
package net.jwsi.jcms.vpp.provider; package net.jwsi.jcms.vpp.provider;
import net.jwsi.jcms.utils.StrUtil;
import net.jwsi.jcms.vpp.rechgingList.RechgingList;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
public class ProviderSpecification { public class ProviderSpecification {
public static Specification<Provider> providerId(String providerId) { public static Specification<Provider> providerNm(String providerNm) {
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("providerId"), providerId); return (root, query, cb) -> cb.like(root.get("providerNm"), StrUtil.sqlLikeParam(providerNm));
}
public static Specification<Provider> bizTaxId(String bizTaxId) {
return (root, query, cb) -> cb.like(root.get("bizTaxId"), StrUtil.sqlLikeParam(bizTaxId));
}
public static Specification<Provider> ceo(String ceo) {
return (root, query, cb) -> cb.like(root.get("ceo"), StrUtil.sqlLikeParam(ceo));
}
public static Specification<Provider> tel(String tel) {
return (root, query, cb) -> cb.like(root.get("tel"), StrUtil.sqlLikeParam(tel));
}
public static Specification<Provider> fax(String fax) {
return (root, query, cb) -> cb.like(root.get("fax"), StrUtil.sqlLikeParam(fax));
} }
} }
@@ -48,8 +48,32 @@ public class RatePlanService extends BaseService<RatePlan, Integer, RatePlanRepo
} }
List<RatePlanResponseDto> dtoList = response.getData(); List<RatePlanResponseDto> dtoList = response.getData();
if (dtoList == null || dtoList.isEmpty()) { if (dtoList == null) {
log.info("가져온 요금제 데이터가 없습니다."); dtoList = new ArrayList<>();
}
Set<Integer> validApiIds = dtoList.stream()
.map(RatePlanResponseDto::getRatePlanId)
.collect(Collectors.toSet());
List<RatePlan> localRatePlans = ratePlanRepository.findAll();
int deleteCount = 0;
for (RatePlan localPlan : localRatePlans) {
if (!validApiIds.contains(localPlan.getRatePlanId())) {
Integer idToDelete = localPlan.getRatePlanId();
ratePlanDetailTimeRepository.deleteByRatePlanId(idToDelete);
chargerRatePlanRepository.deleteByRatePlanId(idToDelete);
ratePlanRepository.deleteById(idToDelete);
deleteCount++;
log.info("운영 DB에서 삭제된 요금제를 로컬 DB에서 제거했습니다. - ID: {}", idToDelete);
}
}
if (dtoList.isEmpty()) {
log.info("가져온 요금제 데이터가 없습니다. (로컬 동기화 및 삭제 완료. 삭제 건수: {})", deleteCount);
return; return;
} }
@@ -104,8 +128,8 @@ public class RatePlanService extends BaseService<RatePlan, Integer, RatePlanRepo
chargerRatePlanRepository.saveAll(allChargerRatePlans); chargerRatePlanRepository.saveAll(allChargerRatePlans);
} }
log.info("요금제 동기화 완료: 마스터 {}건, 상세단가 {}건, 충전기매핑 {}건", log.info("요금제 동기화 완료: 마스터 추가/수정 {}건, 삭제 {}건, 상세단가 {}건, 충전기매핑 {}건",
ratePlanEntities.size(), allDetailTimes.size(), allChargerRatePlans.size()); ratePlanEntities.size(), deleteCount, allDetailTimes.size(), allChargerRatePlans.size());
} }
public RatePlanResponseDto getRatePlanDetail(Integer ratePlanId) { public RatePlanResponseDto getRatePlanDetail(Integer ratePlanId) {
@@ -183,9 +207,17 @@ public class RatePlanService extends BaseService<RatePlan, Integer, RatePlanRepo
@Override @Override
protected Specification<RatePlan> getSpecification(RatePlan ratePlan) { protected Specification<RatePlan> getSpecification(RatePlan ratePlan) {
return null; Specification<RatePlan> rst = null;
if(ratePlan == null) return null;
rst = addWhere(rst, ratePlan.getRatePlanName(), RatePlanSpecification.getRatePlanNm(ratePlan.getRatePlanName()));
rst = addWhere(rst, ratePlan.getApprovalStatus(), RatePlanSpecification.getApprovalStatus(ratePlan.getApprovalStatus()));
rst = addWhere(rst, ratePlan.getIsActive(), RatePlanSpecification.getIsActive(ratePlan.getIsActive()));
return rst;
} }
@Override @Override
protected Page<RatePlan> _selectPage(RatePlan ratePlan) { protected Page<RatePlan> _selectPage(RatePlan ratePlan) {
return null; return null;
@@ -0,0 +1,23 @@
package net.jwsi.jcms.vpp.ratePlan;
import net.jwsi.jcms.base.BaseSpecification;
import org.springframework.data.jpa.domain.Specification;
public class RatePlanSpecification extends BaseSpecification {
public static Specification<RatePlan> getRatePlanNm(String ratePlanName) {
return (root, query, cb) -> {
return cb.like(root.get("ratePlanName"), "%"+ratePlanName+"%");
};
}
public static Specification<RatePlan> getApprovalStatus(String approvalStatus) {
return (root, query, cb) -> {
return cb.equal(root.get("approvalStatus"), approvalStatus);
};
}
public static Specification<RatePlan> getIsActive(String isActive) {
return (root, query, cb) -> {
return cb.equal(root.get("isActive"), isActive);
};
}
}
@@ -28,7 +28,7 @@ public class RechgingListService extends BaseService<RechgingList, Long, Rechgin
} }
@Transactional @Transactional
@Scheduled(cron = "0 0 0 * * *") @Scheduled(cron = "0 0/15 * * * *")
public void getRechgingList() { public void getRechgingList() {
ApiResponse<List<RechgingListDto>> response = apiClient.fetchRechgingList(); ApiResponse<List<RechgingListDto>> response = apiClient.fetchRechgingList();
@@ -89,7 +89,7 @@ public class RechgingListService extends BaseService<RechgingList, Long, Rechgin
rst = addWhere(rst, srch.getMemAuthInputNo(), RechgingListSpecification.memAuthInputNo(srch.getMemAuthInputNo())); rst = addWhere(rst, srch.getMemAuthInputNo(), RechgingListSpecification.memAuthInputNo(srch.getMemAuthInputNo()));
rst = addWhere(rst, srch.getCreditPPayTrxNo(), RechgingListSpecification.creditPPayTrxNo(srch.getCreditPPayTrxNo())); rst = addWhere(rst, srch.getCreditPPayTrxNo(), RechgingListSpecification.creditPPayTrxNo(srch.getCreditPPayTrxNo()));
rst = addWhere(rst, srch.getCreditPPayTrxDt(), RechgingListSpecification.creditPPayTrxDt(srch.getCreditPPayTrxDt())); rst = addWhere(rst, srch.getCreditPPayTrxDt(), RechgingListSpecification.creditPPayTrxDt(srch.getCreditPPayTrxDt()));
rst = addWhere(rst, srch.getRechgSdt(), RechgingListSpecification.rechgSdt(srch.getRechgSdt())); rst = addWhere(rst, srch.getRechgSdt(), RechgingListSpecification.rechgSdtBetween(srch.getRechgSdt()));
rst = addWhere(rst, srch.getPayType(), RechgingListSpecification.payType(srch.getPayType())); rst = addWhere(rst, srch.getPayType(), RechgingListSpecification.payType(srch.getPayType()));
return rst; return rst;
@@ -3,6 +3,7 @@ package net.jwsi.jcms.vpp.rechgingList;
import net.jwsi.jcms.base.BaseSpecification; import net.jwsi.jcms.base.BaseSpecification;
import net.jwsi.jcms.utils.StrUtil; import net.jwsi.jcms.utils.StrUtil;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.StringUtils;
public class RechgingListSpecification extends BaseSpecification { public class RechgingListSpecification extends BaseSpecification {
@@ -34,10 +35,22 @@ public class RechgingListSpecification extends BaseSpecification {
return (root, query, cb) -> cb.like(root.get("creditPPayTrxDt"), StrUtil.sqlLikeParam(creditPPayTrxDt)); return (root, query, cb) -> cb.like(root.get("creditPPayTrxDt"), StrUtil.sqlLikeParam(creditPPayTrxDt));
} }
public static Specification<RechgingList> rechgSdt(String rechgSdt) { public static Specification<RechgingList> rechgSdtBetween(String rechgSdt) {
return (root, query, cb) -> cb.like(root.get("rechgSdt"), StrUtil.sqlLikeParam(rechgSdt)); return (root, query, cb) -> {
// 날짜 파라미터가 없으면 검색 조건에서 제외 (null 반환)
if (!StringUtils.hasText(rechgSdt)) {
return null;
} }
// 예: "2026-07-31" -> "2026-07-31 00:00:00" ~ "2026-07-31 23:59:59"
String startDateTime = rechgSdt.trim() + " 00:00:00";
String endDateTime = rechgSdt.trim() + " 23:59:59";
return cb.between(root.get("rechgSdt"), startDateTime, endDateTime);
};
}
public static Specification<RechgingList> payType(String payType) { public static Specification<RechgingList> payType(String payType) {
return (root, query, cb) -> cb.like(root.get("payType"), StrUtil.sqlLikeParam(payType)); return (root, query, cb) -> cb.like(root.get("payType"), StrUtil.sqlLikeParam(payType));
} }
@@ -77,7 +77,8 @@ public class StationService extends BaseService<Station,String,StationRepository
protected Specification<Station> getSpecification(Station srch) { protected Specification<Station> getSpecification(Station srch) {
if(srch == null) return null; if(srch == null) return null;
Specification<Station> rst = null; Specification<Station> rst = null;
rst = addWhere(rst, srch.getStationId(), StationSpecification.stId(srch.getStationId())); rst = addWhere(rst, srch.getStNm(), StationSpecification.stNm(srch.getStNm()));
rst = addWhere(rst, srch.getAddrLdM(), StationSpecification.addrLdM(srch.getAddrLdM()));
return rst; return rst;
} }
@@ -5,7 +5,10 @@ import org.springframework.data.jpa.domain.Specification;
public class StationSpecification { public class StationSpecification {
public static Specification<Station> stId(String stId) { public static Specification<Station> stNm(String stNm) {
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("stId"), stId); return (root, query, criteriaBuilder) -> criteriaBuilder.like(root.get("stNm"),"%"+stNm+"%");
}
public static Specification<Station> addrLdM(String addrLdM) {
return (root, query, criteriaBuilder) -> criteriaBuilder.like(root.get("addrLdM"),"%"+addrLdM+"%");
} }
} }
+1 -1
View File
@@ -14,7 +14,7 @@ spring:
datasource: datasource:
jcms-db: jcms-db:
driver-class-name: org.mariadb.jdbc.Driver driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:mariadb://localhost:3306/jcmsdb jdbc-url: jdbc:mariadb://192.168.62.37:3306/jcmsdb
username: root username: root
password: jcms password: jcms
@@ -6,12 +6,6 @@
<div th:replace="~{common/fragments/searchBox :: SearchBoxFragment(~{ :: #searchBoxContent}, ~{ :: #searchBoxFooter})}"> <div th:replace="~{common/fragments/searchBox :: SearchBoxFragment(~{ :: #searchBoxContent}, ~{ :: #searchBoxFooter})}">
<div id="searchBoxContent"> <div id="searchBoxContent">
<div class="row px-2"> <div class="row px-2">
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">충전사업자 ID</span>
<input type="text" id="providerIdLike" name="providerIdLike" class="form-control" placeholder="충전사업자 ID 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:140px">충전소 ID</span> <span class="input-group-text" style="width:140px">충전소 ID</span>
@@ -24,30 +18,6 @@
<input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 ID 입력" maxlength="50"> <input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 ID 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">충전소 명</span>
<input type="text" id="stNmLike" name="stNmLike" class="form-control" placeholder="충전소 명 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">충전기 명</span>
<input type="text" id="chgrNmLike" name="chgrNmLike" class="form-control" placeholder="충전기 명 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">충전기속도</span>
<input type="text" id="speedTpLike" name="speedTpLike" class="form-control" placeholder="충전기속도 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">충전기타입</span>
<input type="text" id="chgrTpLike" name="chgrTpLike" class="form-control" placeholder="충전기타입 입력" maxlength="50">
</div>
</div>
</div> </div>
</div> </div>
<div id="searchBoxFooter"> <div id="searchBoxFooter">
@@ -8,31 +8,31 @@
<div class="row px-2"> <div class="row px-2">
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:180px">st_id</span> <span class="input-group-text" style="width:180px">충전소 아이디</span>
<input type="text" id="stIdLike" name="stIdLike" class="form-control" placeholder="st_id 입력" maxlength="50"> <input type="text" id="stIdLike" name="stIdLike" class="form-control" placeholder="충전소 아이디 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:180px">chgr_id</span> <span class="input-group-text" style="width:180px">충전기 아이디</span>
<input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="chgr_id 입력" maxlength="50"> <input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 아이디 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:180px">ch1_rechg_state_cd</span> <span class="input-group-text" style="width:180px">충전상태</span>
<select id="ch1RechgStateCdLike" name="ch1RechgStateCdLike" class="form-control"></select> <select id="ch1RechgStateCdLike" name="ch1RechgStateCdLike" class="form-control"></select>
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:180px">ch1_door_state_cd</span> <span class="input-group-text" style="width:180px">도어상태</span>
<select id="ch1DoorStateCdLike" name="ch1DoorStateCdLike" class="form-control"></select> <select id="ch1DoorStateCdLike" name="ch1DoorStateCdLike" class="form-control"></select>
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:180px">ch1_plug_state_cd</span> <span class="input-group-text" style="width:180px">플러그상태</span>
<select id="ch1PlugStateCdLike" name="ch1PlugStateCdLike" class="form-control"></select> <select id="ch1PlugStateCdLike" name="ch1PlugStateCdLike" class="form-control"></select>
</div> </div>
</div> </div>
@@ -8,52 +8,16 @@
<div class="row px-2"> <div class="row px-2">
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:160px">충전소 </span> <span class="input-group-text" style="width:160px">충전소 아이디</span>
<input type="text" id="stIdLike" name="stIdLike" class="form-control" placeholder="충전소 명 입력" maxlength="50"> <input type="text" id="stIdLike" name="stIdLike" class="form-control" placeholder="충전소 명 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:160px">충전기 </span> <span class="input-group-text" style="width:160px">충전기 아이디</span>
<input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 명 입력" maxlength="50"> <input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 명 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">결제구분</span>
<input type="text" id="payTpLike" name="payTpLike" class="form-control" placeholder="결제구분 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">충전기타입 코드</span>
<input type="text" id="plugTpLike" name="plugTpLike" class="form-control" placeholder="충전기타입 코드 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">충전 시작일시</span>
<input type="text" id="rechgSDtLike" name="rechgSDtLike" class="form-control" placeholder="충전 시작일시 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">충전 종료일시</span>
<input type="text" id="rechgEDtLike" name="rechgEDtLike" class="form-control" placeholder="충전 종료일시 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">충전시간</span>
<input type="text" id="rechgTimeLike" name="rechgTimeLike" class="form-control" placeholder="충전시간 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:160px">신용결제완료구분</span>
<input type="text" id="payFnshLike" name="payFnshLike" class="form-control" placeholder="신용결제완료구분 입력" maxlength="50">
</div>
</div>
</div> </div>
</div> </div>
<div id="searchBoxFooter"> <div id="searchBoxFooter">
@@ -96,15 +60,18 @@
if (strUtil.isNotEmpty($('#rechgEDtLike').val())) {d.rechgEDt = $('#rechgEDtLike').val();} if (strUtil.isNotEmpty($('#rechgEDtLike').val())) {d.rechgEDt = $('#rechgEDtLike').val();}
if (strUtil.isNotEmpty($('#rechgTimeLike').val())) {d.rechgTime = $('#rechgTimeLike').val();} if (strUtil.isNotEmpty($('#rechgTimeLike').val())) {d.rechgTime = $('#rechgTimeLike').val();}
if (strUtil.isNotEmpty($('#payFnshLike').val())) {d.payFnsh = $('#payFnshLike').val();} if (strUtil.isNotEmpty($('#payFnshLike').val())) {d.payFnsh = $('#payFnshLike').val();}
if (strUtil.isNotEmpty($('#chIdLike').val())) {d.chId = $('#chIdLike').val();}
return d; return d;
}, },
{ {
order: [[0, 'desc']], order: [[4, 'desc']],
columns: [ columns: [
{title: "충전소 아이디", name: "ST_ID", data: "stId", className, orderable: false}, {title: "충전소 아이디", name: "ST_ID", data: "stId", className, orderable: false},
{title: "충전기 아이디", name: "CHGR_ID", data: "chgrId", className, orderable: false}, {title: "충전기 아이디", name: "CHGR_ID", data: "chgrId", className, orderable: false},
{title: "결제구분", name: "PAY_TP", data: "payTp", className, orderable: false}, {title: "결제구분", name: "PAY_TP", data: "payTp", className, orderable: false},
{title: "충전기타입 코드", name: "CHGR_TP", data: "plugTp", className, orderable: false}, {title: "채널", name: "CH_ID", data: "chId", className, orderable: false},
{title: "충전기타입 코드", name: "PLUG_TP", data: "plugTp", className, orderable: false},
{title: "충전 시작일시", name: "RECHG_S_DT", data: "rechgSDt", className, orderable: false}, {title: "충전 시작일시", name: "RECHG_S_DT", data: "rechgSDt", className, orderable: false},
{title: "충전 종료일시", name: "RECHG_E_DT", data: "rechgEDt", className, orderable: false}, {title: "충전 종료일시", name: "RECHG_E_DT", data: "rechgEDt", className, orderable: false},
{title: "충전시간", name: "RECHG_TIME", data: "rechgTime", className, orderable: false}, {title: "충전시간", name: "RECHG_TIME", data: "rechgTime", className, orderable: false},
@@ -170,6 +137,17 @@
minLen: 0, minLen: 0,
maxLen: 50, maxLen: 50,
}), }),
new ModalInput({
inputType: ModalInputType.text,
inputId: "chId",
inputName: "chId",
inputLabel: "채널",
inputPlaceholder: "채널",
isReq: false,
isEnable: true,
minLen: 0,
maxLen: 50,
}),
new ModalInput({ new ModalInput({
inputType: ModalInputType.textarea, inputType: ModalInputType.textarea,
inputId: "payTp", inputId: "payTp",
@@ -283,12 +261,6 @@
$("#resetBtn").click(function() { $("#resetBtn").click(function() {
$("#stIdLike").val(""); $("#stIdLike").val("");
$("#chgrIdLike").val(""); $("#chgrIdLike").val("");
$("#payTpLike").val("");
$("#plugTpLike").val("");
$("#rechgSDtLike").val("");
$("#rechgEDtLike").val("");
$("#rechgTimeLike").val("");
$("#payFnshLike").val("");
datatable.ajax.reload(); datatable.ajax.reload();
}); });
</script> </script>
@@ -12,30 +12,6 @@
<input type="text" id="providerNmLike" name="providerNmLike" class="form-control" placeholder="충전사업자 명 입력" maxlength="50"> <input type="text" id="providerNmLike" name="providerNmLike" class="form-control" placeholder="충전사업자 명 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">사업자번호</span>
<input type="text" id="bizTaxIdLike" name="bizTaxIdLike" class="form-control" placeholder="사업자번호 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">대표자</span>
<input type="text" id="ceoLike" name="ceoLike" class="form-control" placeholder="대표자 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">전화번호</span>
<input type="text" id="telLike" name="telLike" class="form-control" placeholder="전화번호 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:140px">팩스번호</span>
<input type="text" id="faxLike" name="faxLike" class="form-control" placeholder="팩스번호 입력" maxlength="50">
</div>
</div>
</div> </div>
</div> </div>
<div id="searchBoxFooter"> <div id="searchBoxFooter">
@@ -281,10 +257,6 @@
$("#resetBtn").click(function() { $("#resetBtn").click(function() {
$("#providerNmLike").val(""); $("#providerNmLike").val("");
$("#bizTaxIdLike").val("");
$("#ceoLike").val("");
$("#telLike").val("");
$("#faxLike").val("");
datatable.ajax.reload(); datatable.ajax.reload();
}); });
</script> </script>
@@ -30,12 +30,12 @@
<input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 ID 입력" maxlength="50"> <input type="text" id="chgrIdLike" name="chgrIdLike" class="form-control" placeholder="충전기 ID 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <!-- <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">-->
<div class="input-group"> <!-- <div class="input-group">-->
<span class="input-group-text" style="width:300px">플러그 타입</span> <!-- <span class="input-group-text" style="width:300px">플러그 타입</span>-->
<input type="text" id="plugTypeLike" name="plugTypeLike" class="form-control" placeholder="플러그 타입 입력" maxlength="50"> <!-- <input type="text" id="plugTypeLike" name="plugTypeLike" class="form-control" placeholder="플러그 타입 입력" maxlength="50">-->
</div> <!-- </div>-->
</div> <!-- </div>-->
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:300px">회원카드번호</span> <span class="input-group-text" style="width:300px">회원카드번호</span>
@@ -48,16 +48,16 @@
<input type="text" id="creditPPayTrxNoLike" name="creditPPayTrxNoLike" class="form-control" placeholder="신용카드 승인번호 입력" maxlength="50"> <input type="text" id="creditPPayTrxNoLike" name="creditPPayTrxNoLike" class="form-control" placeholder="신용카드 승인번호 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <!-- <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">-->
<div class="input-group"> <!-- <div class="input-group">-->
<span class="input-group-text" style="width:300px">신용카드 승인일시</span> <!-- <span class="input-group-text" style="width:300px">신용카드 승인일시</span>-->
<input type="text" id="creditPPayTrxDtLike" name="creditPPayTrxDtLike" class="form-control" placeholder="신용카드 승인일시 입력" maxlength="50"> <!-- <input type="text" id="creditPPayTrxDtLike" name="creditPPayTrxDtLike" class="form-control" placeholder="신용카드 승인일시 입력" maxlength="50">-->
</div> <!-- </div>-->
</div> <!-- </div>-->
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group"> <div class="input-group">
<span class="input-group-text" style="width:300px">충전 시작일시</span> <span class="input-group-text" style="width:300px">충전 시작일시</span>
<input type="text" id="rechgSdtLike" name="rechgSdtLike" class="form-control" placeholder="충전 시작일시 입력" maxlength="50"> <input type="date" id="rechgSdtLike" name="rechgSdtLike" class="form-control" placeholder="충전 시작일시 입력" maxlength="50">
</div> </div>
</div> </div>
<!-- <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">--> <!-- <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">-->
@@ -66,12 +66,17 @@
<!-- <input type="text" id="rechgRemainTimeLike" name="rechgRemainTimeLike" class="form-control" placeholder="충전 잔여 시간 입력" maxlength="50">--> <!-- <input type="text" id="rechgRemainTimeLike" name="rechgRemainTimeLike" class="form-control" placeholder="충전 잔여 시간 입력" maxlength="50">-->
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1"> <!-- <div class="col-lg-4 col-sm-6 col-xs-12 pb-1">-->
<div class="input-group"> <!-- <div class="input-group">-->
<span class="input-group-text" style="width:300px">결제타입</span> <!-- <span class="input-group-text" style="width:300px">결제타입</span>-->
<input type="text" id="payTypeLike" name="payTypeLike" class="form-control" placeholder="결제타입 입력" maxlength="50"> <!-- <select id="payType" name="payType" class="form-select">-->
</div> <!-- <option value="">전체</option>-->
</div> <!-- <option value="회원카드">회원카드</option>-->
<!-- <option value="신용카드">신용카드</option>-->
<!-- <option value="무과금">무과금</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
</div> </div>
</div> </div>
<div id="searchBoxFooter"> <div id="searchBoxFooter">
@@ -18,24 +18,6 @@
<input type="text" id="addrLdMLike" name="addrLdMLike" class="form-control" placeholder="주소 지번 메인 입력" maxlength="50"> <input type="text" id="addrLdMLike" name="addrLdMLike" class="form-control" placeholder="주소 지번 메인 입력" maxlength="50">
</div> </div>
</div> </div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:200px">법정동 도 명</span>
<input type="text" id="pnuDoNmLike" name="pnuDoNmLike" class="form-control" placeholder="법정동 도 명 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:200px">법정동 시 명</span>
<input type="text" id="pnuSiNmLike" name="pnuSiNmLike" class="form-control" placeholder="법정동 시 명 입력" maxlength="50">
</div>
</div>
<div class="col-lg-4 col-sm-6 col-xs-12 pb-1">
<div class="input-group">
<span class="input-group-text" style="width:200px">법정동 읍면동 명</span>
<input type="text" id="pnuDongNmLike" name="pnuDongNmLike" class="form-control" placeholder="법정동 읍면동 명 입력" maxlength="50">
</div>
</div>
</div> </div>
</div> </div>
<div id="searchBoxFooter"> <div id="searchBoxFooter">