Compare commits

..

No commits in common. "141e46f15008fd598160e5fffcceae8731b46740" and "e01fa6a8e08bb2ed0164e771e68f27d8f21e828b" have entirely different histories.

15 changed files with 98 additions and 198 deletions

View File

@ -1335,19 +1335,9 @@ public class EstimateService {
}
try {
// 견적서 상세 조회
estimateResponse = estimateMapper.selectEstimatePdfDetail(estimateRequest);
// 1차점이 2차점 견적서를 만들어 경우 - 2차점 사용자가 다운받을 무조건 정가로만 표시
String userId = estimateRequest.getUserId();
String storeLvl = estimateRequest.getStoreLvl();
if (storeLvl != null && !storeLvl.equals("1")) {
if (!Objects.equals(estimateResponse.getCreateSaleStoreId(), userId)) {
estimateRequest.setSchUnitPriceFlg("1");
}
}
// file Name 명이 없는경우
if (estimateRequest.getFileName() == null || "".equals(estimateRequest.getFileName())) {
estimateRequest.setFileName(estimateResponse.getObjectNo() + "_"
@ -1674,6 +1664,13 @@ public class EstimateService {
String templateFilePath = "pdf_download_quotation_detail_template.html";
String userId = estimateRequest.getUserId();
String storeLvl = estimateRequest.getStoreLvl();
String createStoreId = estimateRequest.getCreateStoreId();
if(storeLvl != null && storeLvl.equals("2")){
if(!Objects.equals(createStoreId, userId))
templateFilePath = "pdf_download_quotation_detail_template2.html";
}
// 템플릿 html 조회
Document doc = PdfUtil.getPdfDoc(request, templateFilePath);
@ -1721,6 +1718,16 @@ public class EstimateService {
String excelTemplateNam = "excel_download_quotation_detail_template.xlsx";
String userId = estimateRequest.getUserId();
String storeLvl = estimateRequest.getStoreLvl();
String createStoreId = estimateRequest.getCreateStoreId();
if(storeLvl != null && storeLvl.equals("2")){
if(!Objects.equals(createStoreId, userId))
excelTemplateNam = "excel_download_quotation_detail_template2.xlsx";
}
// itemGroup이 "STAND_" 아닌 항목들만 필터링하여 새로운 리스트 생성
List<ItemResponse> estimateItemList15 = estimateItemList.stream()
.filter(item -> !"STAND_".equals(item.getItemGroup()))

View File

@ -308,7 +308,4 @@ public class EstimateResponse {
@Schema(description = "영업점 Fax번호")
private String salesOfficeFax;
@Schema(description = "작성자 판매점 ID")
private String createSaleStoreId;
}

View File

@ -2288,42 +2288,31 @@ public class PwrGnrSimService {
// 상단 요약정보
elm = doc.getElementById("objectNo");
if (elm != null) {
elm.text(
StringUtils.defaultString(data.getObjectNo() + " (Plan No : " + data.getPlanNo() + ")"));
}
elm = doc.getElementById("drawingEstimateCreateDate");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getDrawingEstimateCreateDate()));
}
elm = doc.getElementById("prefName");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getPrefName()));
}
elm = doc.getElementById("areaName");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getAreaName()));
}
elm = doc.getElementById("capacity");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getCapacity()) + " kW");
}
elm = doc.getElementById("anlFrcsGnrt");
if (elm != null) {
elm.text(StringUtils.defaultString(String.valueOf(pwrGnrSimList[12])));
}
elm = doc.getElementById("snowfall");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getSnowfall()) + " cm");
}
elm = doc.getElementById("standardWindSpeedId");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getStandardWindSpeedId()));
}
elm = doc.getElementById("pwrGnrSimTypeName");
if (elm != null) {
elm.text(StringUtils.defaultString(data.getPwrGnrSimTypeName()));
}
boolean isUnchanged = Arrays.stream(pwrGnrSimList).allMatch(value -> value == "00");
if (!isUnchanged) { // 변경된값 확인
@ -2513,10 +2502,8 @@ public class PwrGnrSimService {
pwrGnrSimResponse.setFrcPwrGnrList(pwrGnrSimResponse.getHatsudenryouAllSnow());
} else if ("B".equals(estimateRequest.getPwrGnrSimType())) {
pwrGnrSimResponse.setFrcPwrGnrList(pwrGnrSimResponse.getHatsudenryouPeakcutAll());
pwrGnrSimResponse.setPwrGnrSimTypeName(message.getMessage("common.message.simulation.pwrGnrSimType.B"));
} else if ("D".equals(estimateRequest.getPwrGnrSimType())) {
pwrGnrSimResponse.setFrcPwrGnrList(pwrGnrSimResponse.getHatsudenryouPeakcutAllSnow());
pwrGnrSimResponse.setPwrGnrSimTypeName(message.getMessage("common.message.simulation.pwrGnrSimType.D"));
}
pwrGnrSimResponse.setIntFrcPwrGnrList(

View File

@ -30,9 +30,6 @@ public class PwrGnrSimResponse {
@Schema(description = "list 종류")
private String pwrGnrSimType;
@Schema(description = "list 종류명")
private String pwrGnrSimTypeName;
@Schema(description = "물건번호")
private String objectNo;

View File

@ -54,24 +54,6 @@ public interface UserMapper {
*/
int setUserSave(UserRequest userReqList) throws Exception;
/**
* 판매점의 정가가격 등록 여부 체크(2차점이상인 판매점만 해당)
*
* @param storeReq
* @return
* @throws Exception
*/
int getStoreUnitPriceChk(StoreRequest storeReq) throws Exception;
/**
* 판매점의 정가가격 등록
*
* @param storeReq
* @return
* @throws Exception
*/
int setStoreUnitPrice(StoreRequest storeReq) throws Exception;
/**
* 영업사원 삭제
*

View File

@ -74,14 +74,6 @@ public class UserService {
userMapper.setStoreInfoSave(storeRequest);
userMapper.setStoreSapCdSave(storeRequest);
userMapper.setStoreNorthModuleSave(storeRequest);
// 2차점 이상인 판매점 신규 등록시 판매점에 정가 가격 추가
if ("1".equals(storeRequest.getSecondAgentFlg())) {
if (userMapper.getStoreUnitPriceChk(storeRequest) == 0) {
// 등록된 가격이 없는경우 정가 가격 등록
userMapper.setStoreUnitPrice(storeRequest);
}
}
} catch (Exception e) {
log.error(e.getMessage());
}

View File

@ -366,64 +366,53 @@
<select id="selectEstimateRoofCertVolKw" parameterType="com.interplug.qcast.biz.estimate.dto.EstimateRequest" resultType="String">
/* sqlid : com.interplug.qcast.biz.estimate.selectEstimateRoofCertVolKw */
<![CDATA[
SELECT SUM (
CAST (ISNULL(
CASE WHEN ISNULL(B.PQ_VOL, 0) = 0
THEN (CASE WHEN B.P_VOL < B.M_VOL THEN B.P_VOL ELSE B.M_VOL END)
ELSE (CASE WHEN B.PQ_VOL < B.M_VOL THEN B.PQ_VOL ELSE B.M_VOL END)
END, 0) AS NUMERIC(18, 3))) AS CERT_VOL_KW
FROM (
SELECT DISTINCT
A.P_ITEM_ID
, (SELECT ROUND((TE.AMOUNT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
FROM T_PART_ESTIMATE TE (NOLOCK)
WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = A.P_ITEM_ID) AS P_VOL
, TRI.QCAST_CUST_PRD_ID
, (SELECT ROUND((TE.AMOUNT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
FROM T_PART_ESTIMATE TE (NOLOCK)
WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = TRI.QCAST_CUST_PRD_ID) AS PQ_VOL
, TRI.ITEM_ID AS M_ITEM_ID
, (SELECT ROUND((A.M_AMT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
FROM T_PART_ESTIMATE TE (NOLOCK)
WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = TRI.ITEM_ID) AS M_VOL
, A.M_AMT
FROM (
SELECT
TPC.OBJECT_NO
, TPC.PLAN_NO
, TPC.ITEM_ID AS P_ITEM_ID
, TPC.CIRCUIT_CFG
,(
SELECT SUM(CAST(T.Item AS INT))
FROM (
SELECT CAST('<X>' + REPLACE(TPC.CIRCUIT_CFG, ',', '</X><X>') + '</X>' AS XML) AS XMLDATA
) AS Sub
CROSS APPLY (
SELECT f.x.value('.', 'VARCHAR(MAX)') AS Item
FROM Sub.XMLDATA.nodes('/X') AS f(x)
) AS T
WHERE T.Item <> ''
) AS M_AMT
FROM T_PART_CIRCUIT_ITEM_ESTIMATE TPC (NOLOCK)
WHERE
TPC.OBJECT_NO = #{objectNo}
AND
TPC.PLAN_NO = #{planNo}
)A
LEFT OUTER JOIN (
SELECT TRI2.*, TRE.ROOF_SURFACE -- 필요한 컬럼들
FROM T_PART_ROOF_ITEM_ESTIMATE TRI2 (NOLOCK)
INNER JOIN T_PART_ROOF_ESTIMATE TRE (NOLOCK)
ON TRI2.OBJECT_NO = TRE.OBJECT_NO
AND TRI2.PLAN_NO = TRE.PLAN_NO
AND TRI2.ROOF_SURFACE_ID = TRE.ROOF_SURFACE_ID
) TRI
ON A.OBJECT_NO = TRI.OBJECT_NO
AND A.PLAN_NO = TRI.PLAN_NO
)B
]]>
/* FORMAT(ISNULL(SUM(CASE WHEN T.MODULE_VOL_KW <![CDATA[ <= ]]> T.PC_VOL_KW THEN T.MODULE_VOL_KW ELSE T.PC_VOL_KW END), 0), '#,##0.000') AS CERT_VOL_KW */
REPLACE(CONVERT(VARCHAR, SUM(CAST(ISNULL(
CASE
WHEN T.MODULE_VOL_KW <![CDATA[ <= ]]> T.PC_VOL_KW THEN T.MODULE_VOL_KW
ELSE T.PC_VOL_KW
END, 0) AS NUMERIC(18, 3))), 1), ',', '') AS CERT_VOL_KW
FROM
(
SELECT
P.OBJECT_NO
, P.PLAN_NO
, PE.ITEM_ID
, PE.AMOUNT
, PE.SPECIFICATION
, I.ITEM_NAME
, ROUND((PE.AMOUNT * CAST(ISNULL(PE.SPECIFICATION, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW
, ISNULL((
SELECT
SUM((AMOUNT * CAST(ISNULL(SPECIFICATION, 0) AS FLOAT) / 1000))
FROM T_PART_ROOF_ITEM_ESTIMATE (NOLOCK)
WHERE OBJECT_NO = PE.OBJECT_NO
AND PLAN_NO = PE.PLAN_NO
/*AND ISNULL(NULLIF(QCAST_CUST_PRD_ID, ''), PC_ITEM_ID) = PE.ITEM_ID*/
AND (
(QCAST_CUST_PRD_ID IS NOT NULL AND QCAST_CUST_PRD_ID = PC_ITEM_ID AND ISNULL(QCAST_CUST_PRD_ID, '') = PE.ITEM_ID)
OR
(QCAST_CUST_PRD_ID IS NULL AND PC_ITEM_ID = PE.ITEM_ID)
OR
(QCAST_CUST_PRD_ID IS NOT NULL AND QCAST_CUST_PRD_ID != PC_ITEM_ID AND QCAST_CUST_PRD_ID = PE.ITEM_ID))), 0) AS MODULE_VOL_KW
FROM T_PLAN P WITH (NOLOCK)
INNER JOIN T_PART_ESTIMATE PE WITH (NOLOCK)
ON P.OBJECT_NO = PE.OBJECT_NO
AND P.PLAN_NO = PE.PLAN_NO
INNER JOIN M_ITEM I WITH (NOLOCK)
ON PE.ITEM_ID = I.ITEM_ID
WHERE P.OBJECT_NO = #{objectNo}
AND P.PLAN_NO = #{planNo}
-- AND I.POWER_COM_FLG = '1' /* PCS 아이템만 */
AND (
CASE
WHEN I.POWER_COM_FLG = '1' THEN 1
WHEN I.POWER_COM_FLG != '1' AND I.ITEM_GROUP = 'STORAGE_BATTERY' AND ISNULL(I.PNOW_W, 0) > 0 THEN 1
ELSE 0
END
) = 1
) T
</select>
<select id="selectEstimateRoofList" parameterType="com.interplug.qcast.biz.estimate.dto.EstimateRequest" resultType="com.interplug.qcast.biz.estimate.dto.RoofResponse">

View File

@ -104,10 +104,8 @@
WHEN A.CLASS_TYPE = 0 THEN A.SLOPE
ELSE A.ANGLE END) AS SLOPE_ANGLE
, (CASE
WHEN A.CLASS_TYPE = 0
THEN CAST(CAST(A.SLOPE AS FLOAT) AS VARCHAR) + '寸'
ELSE CAST(CAST(A.ANGLE AS FLOAT) AS VARCHAR) + N'º'
END) AS SLOPE_ANGLE_TXT
WHEN A.CLASS_TYPE = 0 THEN CAST(CAST(A.SLOPE AS INT)AS VARCHAR) + '寸'
ELSE CAST(CAST(A.ANGLE AS INT)AS VARCHAR) + N'º' END) AS SLOPE_ANGLE_TXT
FROM T_PART_ROOF_ESTIMATE A WITH (NOLOCK)
INNER JOIN T_PART_ROOF_ITEM_ESTIMATE B WITH (NOLOCK)
ON A.OBJECT_NO = B.OBJECT_NO

View File

@ -87,9 +87,8 @@
, DISP_FAX = #{dispFax}
, DISP_MAIL = #{dispMail}
, SALE_STORE_LEVEL = #{saleStoreLevel}
, PRICE_PATTERN = (CASE WHEN ISNULL(PRICE_PATTERN, '') = '' AND #{secondAgentFlg} = '1' THEN '510' ELSE PRICE_PATTERN END)
, DEL_FLG = #{delFlg}
, LAST_EDIT_DATETIME = GETDATE()
, LAST_EDIT_DATETIME = #{lastEditDatetime}
, LAST_EDIT_USER = #{lastEditUser}
WHEN NOT MATCHED THEN
INSERT (
@ -108,7 +107,6 @@
, SECOND_AGENT_FLG
, FIRST_AGENT_ID
, PARENT_SALE_AGENT_ID
, PRICE_PATTERN
, OUTPUT_COMP_CLASS -- 출력 대비표 분류
, INDUSTRIAL_OUTPUT_COMP_CLASS -- 산업출력 대비표 출력
, FIXED_PRICE_FLG -- 정가 표시
@ -145,7 +143,6 @@
, #{secondAgentFlg}
, #{firstAgentId}
, #{parentSaleAgentId}
, (CASE WHEN #{secondAgentFlg} = '1' THEN '510' ELSE NULL END)
, 0 -- 출력 대비표 분류
, 0 -- 산업출력 대비표 출력
, 0 -- 정가 표시
@ -164,7 +161,7 @@
, #{registDatetime}
, 0
, 0 -- 적설
, GETDATE()
, #{lastEditDatetime}
, #{lastEditUser}
);
</insert>
@ -178,7 +175,7 @@
WHEN MATCHED THEN
UPDATE SET
BIZ_NO = #{bizNo}
, LAST_EDIT_DATETIME = GETDATE()
, LAST_EDIT_DATETIME = (CASE WHEN #{lastEditDatetime} != '' THEN #{lastEditDatetime} ELSE #{registDatetime} END)
WHEN NOT MATCHED THEN
INSERT (
SALE_STORE_ID
@ -187,7 +184,7 @@
) VALUES (
#{saleStoreId}
, #{bizNo}
, GETDATE()
, (CASE WHEN #{lastEditDatetime} != '' THEN #{lastEditDatetime} ELSE #{registDatetime} END)
);
</insert>
@ -210,7 +207,7 @@
, TEL = #{tel}
, FAX = #{fax}
, MAIL = #{mail}
, LAST_EDIT_DATETIME = GETDATE()
, LAST_EDIT_DATETIME = #{lastEditDatetime}
, LAST_EDIT_USER = #{lastEditUser}
-- , GROUP_ID -- '70000' , '60000'
-- , MODULE_SELECT_GROUP_ID -- 모듈 선택 그룹 ('G1','GA' ,'G2')
@ -229,8 +226,6 @@
, FAX
, MAIL
, GROUP_ID
, MODULE_SELECT_GROUP_ID
, VERSION_MANAGEMENT_ID
, DISP_COST_PRICE
, DISP_SELLING_PRICE
, REGIST_DATETIME
@ -247,47 +242,14 @@
, #{fax}
, #{mail}
, #{groupId}
, 'G1' /* 일반 공개용 */
, 'hanbaiten' /* 일반 판매점 */
, 0
, 0
, GETDATE()
, GETDATE()
, #{registDatetime}
, #{lastEditDatetime}
, #{lastEditUser}
);
</insert>
<select id="getStoreUnitPriceChk" parameterType="com.interplug.qcast.biz.user.dto.StoreRequest" resultType="Integer">
/* sqlid : com.interplug.qcast.user.getStoreUnitPriceChk */
SELECT
COUNT(1)
FROM M_SALE_STORE_PRICE
WHERE
SALE_STORE_ID = #{saleStoreId}
</select>
<insert id="setStoreUnitPrice" parameterType="com.interplug.qcast.biz.user.dto.StoreRequest" >
/* sqlid : com.interplug.qcast.user.setStoreUnitPrice */
INSERT INTO M_SALE_STORE_PRICE(
SALE_STORE_ID
, ITEM_ID
, COST_PRICE
, SALE_PRICE
, DISP_FLG
, LAST_EDIT_DATETIME
, LAST_EDIT_USER
)
SELECT #{saleStoreId}
, ITEM_ID
, COST_PRICE
, SALE_PRICE
, '1'
, GETDATE()
, #{lastEditUser}
FROM M_PRICE_PATTERN_MONEY
WHERE PRICE_PATTERN = '510'
</insert>
<insert id="setStoreNorthModuleSave" parameterType="com.interplug.qcast.biz.user.dto.StoreRequest" >
/* sqlid : com.interplug.qcast.user.setStoreNorthModuleSave */
MERGE INTO M_SALES_STORE_NORTH_MODULE AS A

View File

@ -89,7 +89,3 @@ common.message.password.init.success:\u30D1\u30B9\u30EF\u30FC\u30C9 [{0}] \u306B
common.message.no.edit.save:\u3053\u306E\u6587\u66F8\u306F\u5909\u66F4\u3067\u304D\u307E\u305B\u3093\u3002
common.message.plan.save.limit:\u8A08\u753B\u60C5\u5831\u306F\u6700\u592710\u307E\u3067\u4FDD\u5B58\u3067\u304D\u307E\u3059\u3002
common.message.plan.delete.limit:\u8A08\u753B\u60C5\u5831\u306F\u5C11\u306A\u304F\u3068\u30821\u3064\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
common.message.simulation.pwrGnrSimType.A:\u7A4D\u96EA\u8003\u616E\u306A\u3057(\u30D4\u30FC\u30AF\u30AB\u30C3\u30C8\u306A\u3057\u767A\u96FB\u91CF)
common.message.simulation.pwrGnrSimType.B:\u7A4D\u96EA\u8003\u616E\u306A\u3057(\u30D4\u30FC\u30AF\u30AB\u30C3\u30C8\u3042\u308A\u767A\u96FB\u91CF)
common.message.simulation.pwrGnrSimType.C:\u7A4D\u96EA\u8003\u616E\u3042\u308A(\u30D4\u30FC\u30AF\u30AB\u30C3\u30C8\u306A\u3057\u767A\u96FB\u91CF)
common.message.simulation.pwrGnrSimType.D:\u7A4D\u96EA\u8003\u616E\u3042\u308A(\u30D4\u30FC\u30AF\u30AB\u30C3\u30C8\u3042\u308A\u767A\u96FB\u91CF)

View File

@ -89,7 +89,3 @@ common.message.password.init.success:\uBE44\uBC00\uBC88\uD638 [{0}]\uB85C \uCD08
common.message.no.edit.save:This document cannot be changed.
common.message.plan.save.limit:You can only add up to 10 plan information.
common.message.plan.delete.limit:There must be at least one plan information.
common.message.simulation.pwrGnrSimType.A:\uC801\uC124 \uACE0\uB824 \uC5C6\uC74C(\uD53C\uD06C\uCEF7 \uC5C6\uB294 \uBC1C\uC804\uB7C9)
common.message.simulation.pwrGnrSimType.B:\uC801\uC124 \uACE0\uB824 \uC5C6\uC74C(\uD53C\uD06C\uCEF7 \uC788\uB294 \uBC1C\uC804\uB7C9)
common.message.simulation.pwrGnrSimType.C:\uC801\uC124 \uACE0\uB824 \uC788\uC74C(\uD53C\uD06C\uCEF7 \uC5C6\uB294 \uBC1C\uC804\uB7C9)
common.message.simulation.pwrGnrSimType.D:\uC801\uC124 \uACE0\uB824 \uC788\uC74C(\uD53C\uD06C\uCEF7 \uC788\uB294 \uBC1C\uC804\uB7C9)

View File

@ -536,9 +536,6 @@
</tr>
</tbody>
</table>
<div >
<span id="pwrGnrSimTypeName"></span>
</div>
<div id="pwrGnrChartImg">
<table class="chart-wrapper">
<tbody>