diff --git a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java
index d96c4628..cebc07d9 100644
--- a/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java
+++ b/src/main/java/com/interplug/qcast/biz/estimate/EstimateService.java
@@ -1412,9 +1412,9 @@ public class EstimateService {
String classTypeName = "";
if ("0".equals(roofVol.getClassType())) {
- classTypeName = roofVol.getSlope() + "寸";
+ classTypeName = new BigDecimal(StringUtils.defaultString(roofVol.getSlope(), "0")).stripTrailingZeros().toPlainString() + "寸";
} else {
- classTypeName = roofVol.getAngle() + "º";
+ classTypeName = new BigDecimal(StringUtils.defaultString(roofVol.getAngle(), "0")).stripTrailingZeros().toPlainString() + "º";
}
roofVol.setClassTypeName(classTypeName);
@@ -1424,6 +1424,15 @@ public class EstimateService {
roofInfoResponse.setModuleTotAmount(String.valueOf(moduleTotAmount));
roofInfoResponse.setModuleTotVolKw(String.valueOf(moduleTotVolKw));
+ for (RoofResponse roof : roofList) {
+ String roofClassTypeName = "";
+ if ("0".equals(roof.getClassType())) {
+ roofClassTypeName = new BigDecimal(StringUtils.defaultString(roof.getSlope(), "0")).stripTrailingZeros().toPlainString() + "寸";
+ } else {
+ roofClassTypeName = new BigDecimal(StringUtils.defaultString(roof.getAngle(), "0")).stripTrailingZeros().toPlainString() + "º";
+ }
+ roof.setClassTypeName(roofClassTypeName);
+ }
roofInfoResponse.setRoofList(roofList);
roofInfoResponse.setCircuitItemList(circuitItemList);
roofInfoResponse.setRoofVolList(roofVolList);
@@ -2597,7 +2606,7 @@ public class EstimateService {
sb.append("
" + StringUtils.defaultString(roofResponse.getRoofSurface()) + " | ");
sb.append(""
+ StringUtils.defaultString(roofResponse.getRoofMaterialName()) + " | ");
- sb.append("" + StringUtils.defaultString(roofResponse.getSlope()) + "寸 | ");
+ sb.append("" + StringUtils.defaultString(roofResponse.getClassTypeName()) + " | ");
sb.append("" + StringUtils.defaultString(roofResponse.getConstructSpecificationName())
+ " | ");
sb.append(""
@@ -2677,7 +2686,7 @@ public class EstimateService {
sb.append(" | " + StringUtils.defaultString(roofResponse.getRoofSurface()) + " | ");
sb.append(""
+ StringUtils.defaultString(roofResponse.getRoofMaterialName()) + " | ");
- sb.append("" + StringUtils.defaultString(roofResponse.getSlope()) + "寸 | ");
+ sb.append("" + StringUtils.defaultString(roofResponse.getClassTypeName()) + " | ");
sb.append("" + StringUtils.defaultString(roofResponse.getConstructSpecificationName())
+ " | ");
sb.append(""
diff --git a/src/main/java/com/interplug/qcast/biz/login/LoginController.java b/src/main/java/com/interplug/qcast/biz/login/LoginController.java
index cbb5af84..23f29f80 100644
--- a/src/main/java/com/interplug/qcast/biz/login/LoginController.java
+++ b/src/main/java/com/interplug/qcast/biz/login/LoginController.java
@@ -59,6 +59,34 @@ public class LoginController {
return loginService.getLogin(loginUser);
}
+ /**
+ * Q.CAST III에 자동 로그인하여 사용자 정보를 획득한다.
+ *
+ * @param loginUser LoginUser
+ * @return UserLoginResponse
+ * @throws Exception
+ */
+ @Operation(description = "Q.CAST III에 자동 로그인하여 사용자 정보를 획득한다.")
+ @PostMapping("/v1.0/autoLogin")
+ @ResponseStatus(HttpStatus.CREATED)
+ public UserLoginResponse autoLogin(@RequestBody LoginUser loginUser) throws Exception {
+ return loginService.getAutoLogin(loginUser);
+ }
+
+ /**
+ * Q.CAST III에서 로그아웃한다.
+ *
+ * @param loginUser LoginUser
+ * @return DefaultResponse
+ * @throws Exception
+ */
+ @Operation(description = "Q.CAST III에서 로그아웃한다.")
+ @PostMapping("/v1.0/logout")
+ @ResponseStatus(HttpStatus.CREATED)
+ public DefaultResponse logout(@RequestBody LoginUser loginUser) throws Exception {
+ return loginService.getLogout(loginUser);
+ }
+
@PostMapping("/v1.0/user")
@ResponseStatus(HttpStatus.CREATED)
public UserResponse getUser(@RequestBody LoginUser loginUser) {
diff --git a/src/main/java/com/interplug/qcast/biz/login/LoginService.java b/src/main/java/com/interplug/qcast/biz/login/LoginService.java
index c1c1b488..3391d274 100644
--- a/src/main/java/com/interplug/qcast/biz/login/LoginService.java
+++ b/src/main/java/com/interplug/qcast/biz/login/LoginService.java
@@ -1,24 +1,24 @@
package com.interplug.qcast.biz.login;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpMethod;
-import org.springframework.stereotype.Service;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.interplug.qcast.biz.login.dto.JoinUser;
-import com.interplug.qcast.biz.login.dto.LoginUser;
-import com.interplug.qcast.biz.login.dto.UserLoginResponse;
-import com.interplug.qcast.biz.login.dto.UserPassword;
-import com.interplug.qcast.biz.login.dto.UserResponse;
-import com.interplug.qcast.config.Exception.ErrorCode;
-import com.interplug.qcast.config.Exception.QcastException;
-import com.interplug.qcast.config.message.Messages;
-import com.interplug.qcast.util.DefaultResponse;
-import com.interplug.qcast.util.InterfaceQsp;
-import java.util.UUID;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Service;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.interplug.qcast.biz.login.dto.JoinUser;
+import com.interplug.qcast.biz.login.dto.LoginUser;
+import com.interplug.qcast.biz.login.dto.UserLoginResponse;
+import com.interplug.qcast.biz.login.dto.UserPassword;
+import com.interplug.qcast.biz.login.dto.UserResponse;
+import com.interplug.qcast.config.Exception.ErrorCode;
+import com.interplug.qcast.config.Exception.QcastException;
+import com.interplug.qcast.config.message.Messages;
+import com.interplug.qcast.util.DefaultResponse;
+import com.interplug.qcast.util.InterfaceQsp;
+import java.util.UUID;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@@ -50,6 +50,31 @@ public class LoginService {
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE,
message.getMessage("common.message.required.data", "Password"));
+ return callLoginApi(loginUser, "LOGIN");
+ }
+
+ /**
+ * 자동 로그인 처리
+ *
+ * @param loginUser LoginUser
+ * @return UserLoginResponse
+ * @throws Exception
+ */
+ public UserLoginResponse getAutoLogin(LoginUser loginUser) throws Exception {
+ if (loginUser.getLoginId() == null || "".equals(loginUser.getLoginId()))
+ throw new QcastException(ErrorCode.INVALID_INPUT_VALUE,
+ message.getMessage("common.message.required.data", "Login Id"));
+
+ return callLoginApi(loginUser, "AUTO_LOGIN");
+ }
+
+ private UserLoginResponse callLoginApi(LoginUser loginUser, String actLog) throws Exception {
+ loginUser.setAccsSiteCd("DESIGN");
+ loginUser.setActLog(actLog);
+
+ String sessionId = UUID.randomUUID().toString();
+ loginUser.setRequestId(sessionId);
+
UserLoginResponse userLoginResponse = null;
// QSP API Call..
@@ -58,20 +83,51 @@ public class LoginService {
// /api/user/login
String strResponse =
interfaceQsp.callApi(HttpMethod.POST, qspUrl + "/api/user/login", loginUser);
- if (!"".equals(strResponse)) {
- ObjectMapper om =
- new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
- userLoginResponse = om.readValue(strResponse, UserLoginResponse.class);
- }
-
- if (userLoginResponse != null
- && userLoginResponse.getResult() != null
- && "S".equalsIgnoreCase(userLoginResponse.getResult().getResultCode())) {
- userLoginResponse.setSessionId(UUID.randomUUID().toString());
- }
-
- return userLoginResponse;
- }
+ if (!"".equals(strResponse)) {
+ ObjectMapper om =
+ new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ userLoginResponse = om.readValue(strResponse, UserLoginResponse.class);
+ }
+
+ if (userLoginResponse != null
+ && userLoginResponse.getResult() != null
+ && "S".equalsIgnoreCase(userLoginResponse.getResult().getResultCode())) {
+ userLoginResponse.setSessionId(sessionId);
+ }
+
+ return userLoginResponse;
+ }
+
+ /**
+ * 로그아웃 처리
+ *
+ * @param loginUser LoginUser
+ * @return DefaultResponse
+ * @throws Exception
+ */
+ public DefaultResponse getLogout(LoginUser loginUser) throws Exception {
+ if (loginUser.getLoginId() == null || "".equals(loginUser.getLoginId()))
+ throw new QcastException(ErrorCode.INVALID_INPUT_VALUE,
+ message.getMessage("common.message.required.data", "Login Id"));
+
+ loginUser.setAccsSiteCd("DESIGN");
+ loginUser.setActLog("LOGOUT");
+
+ // QSP API Call..
+ // Q.CAST 로그아웃
+ // post
+ // /api/user/logout
+ DefaultResponse defaultResponse = null;
+ String strResponse =
+ interfaceQsp.callApi(HttpMethod.POST, qspUrl + "/api/user/logout", loginUser);
+ if (!"".equals(strResponse)) {
+ ObjectMapper om =
+ new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ defaultResponse = om.readValue(strResponse, DefaultResponse.class);
+ }
+
+ return defaultResponse;
+ }
public UserResponse getUser(LoginUser loginUser) {
return loginMapper.getUser(loginUser);
diff --git a/src/main/java/com/interplug/qcast/biz/login/dto/LoginUser.java b/src/main/java/com/interplug/qcast/biz/login/dto/LoginUser.java
index 89f1c6de..8529cf76 100644
--- a/src/main/java/com/interplug/qcast/biz/login/dto/LoginUser.java
+++ b/src/main/java/com/interplug/qcast/biz/login/dto/LoginUser.java
@@ -6,4 +6,7 @@ import lombok.Data;
public class LoginUser {
private String loginId; // Login Id
private String pwd; // Password
+ private String accsSiteCd; // Access Site Code (QSP, QORDER, QMUSUBI_DESIGN, QREAD, QWARRANTY, QPARTNERS)
+ private String actLog; // Action Log (LOGIN, AUTO_LOGIN, LOGOUT)
+ private String requestId; // Request ID <= Unique ID
}
diff --git a/src/main/java/com/interplug/qcast/biz/login/dto/UserResponse.java b/src/main/java/com/interplug/qcast/biz/login/dto/UserResponse.java
index a12f7929..5af4db7d 100644
--- a/src/main/java/com/interplug/qcast/biz/login/dto/UserResponse.java
+++ b/src/main/java/com/interplug/qcast/biz/login/dto/UserResponse.java
@@ -28,4 +28,6 @@ public class UserResponse {
private String custNm;
//시공사 번호
private String builderNo;
+ private String builderNm; // Builder Name
+ private String builderId; // Builder Id
}
diff --git a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
index 640de433..a62ad928 100644
--- a/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
+++ b/src/main/java/com/interplug/qcast/biz/object/ObjectService.java
@@ -349,8 +349,11 @@ public class ObjectService {
// 물건정보 등록
objectRequest.setAddress(
((!StringUtils.isEmpty(objectRequest.getAddress())) ? objectRequest.getAddress() : ""));
- objectRequest.setAddresseeCompanyName(
- objectRequest.getObjectName() + ' ' + objectRequest.getObjectNameOmit());
+ String addresseeCompanyName = objectRequest.getObjectName() + ' ' + objectRequest.getObjectNameOmit();
+ if (addresseeCompanyName.length() > 50) {
+ addresseeCompanyName = addresseeCompanyName.substring(0, 50);
+ }
+ objectRequest.setAddresseeCompanyName(addresseeCompanyName);
objectRequest.setAddresseeCompanyNameOmit(objectRequest.getObjectNameOmit());
objectRequest.setContentsPath(baseDirPath + "\\\\" + objectRequest.getObjectNo());
result += objectMapper.insertObject(objectRequest);
@@ -441,8 +444,11 @@ public class ObjectService {
// 물건정보 수정
objectRequest.setAddress(
((!StringUtils.isEmpty(objectRequest.getAddress())) ? objectRequest.getAddress() : ""));
- objectRequest.setAddresseeCompanyName(
- objectRequest.getObjectName() + ' ' + objectRequest.getObjectNameOmit());
+ String addresseeCompanyName2 = objectRequest.getObjectName() + ' ' + objectRequest.getObjectNameOmit();
+ if (addresseeCompanyName2.length() > 50) {
+ addresseeCompanyName2 = addresseeCompanyName2.substring(0, 50);
+ }
+ objectRequest.setAddresseeCompanyName(addresseeCompanyName2);
objectRequest.setAddresseeCompanyNameOmit(objectRequest.getObjectNameOmit());
objectRequest.setContentsPath(baseDirPath + "\\\\"
+ (tempChgFlg ? objectRequest.getNewObjectNo() : objectRequest.getObjectNo()));
diff --git a/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx b/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx
index b59d813e..b0b9ace1 100644
Binary files a/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx and b/src/main/resources/template/excel/excel_download_quotation_detail_template.xlsx differ
diff --git a/src/main/resources/template/excel/excel_download_quotation_detail_template2.xlsx b/src/main/resources/template/excel/excel_download_quotation_detail_template2.xlsx
index 5e1bd538..c9f5ae2d 100644
Binary files a/src/main/resources/template/excel/excel_download_quotation_detail_template2.xlsx and b/src/main/resources/template/excel/excel_download_quotation_detail_template2.xlsx differ
|