엑셀업로드 에러 수정정
This commit is contained in:
@@ -1004,26 +1004,28 @@ public class AmaranthApprovalApiClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* AES128 CBC PKCS5Padding 암호화 (loginId 또는 empSeq)
|
||||
* 문서: 현재날짜(YYYYMMDDHHmmss)▦값 → AES 암호화 → Base64
|
||||
* Key = API상품연동설정 메뉴에서 확인 가능 (정확히 16바이트)
|
||||
* AES128 CBC PKCS5Padding 암호화 (empSeq)
|
||||
* 평문: 현재날짜(YYYYMMDDHHmmss)▦값 → AES 암호화 → Base64
|
||||
* Key = groupSeq 앞 16바이트, IV = Key와 동일
|
||||
* 타임스탬프는 반드시 한국시간(KST) 사용
|
||||
*/
|
||||
private String encryptValue(String value) throws Exception {
|
||||
// 현재 날짜시간 (YYYYMMDDHHmmss)
|
||||
String currentDateTime = new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date());
|
||||
// 한국시간(KST) 기준 타임스탬프 생성 (Docker 서버가 UTC일 경우 대비)
|
||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
|
||||
sdf.setTimeZone(java.util.TimeZone.getTimeZone("Asia/Seoul"));
|
||||
String currentDateTime = sdf.format(new java.util.Date());
|
||||
|
||||
// 암호화할 평문: 현재날짜시간▦값 (반드시 특수문자 ▦ 사용)
|
||||
String plainText = currentDateTime + "\u25A6" + value;
|
||||
|
||||
System.out.println("[AES] plainText: " + plainText);
|
||||
System.out.println("[AES] timestamp(KST): " + currentDateTime);
|
||||
System.out.println("[AES] AES_KEY: " + AES_KEY + " (길이: " + AES_KEY.length() + ")");
|
||||
|
||||
// 문서 샘플코드: Key.getBytes()를 직접 사용 (Key, IV 동일)
|
||||
byte[] keyData = AES_KEY.getBytes("UTF-8");
|
||||
|
||||
// AES128은 16바이트 키 필요 - 키가 16바이트가 아니면 조정
|
||||
if(keyData.length != 16){
|
||||
System.out.println("[AES] 키 길이가 16바이트가 아님: " + keyData.length + "바이트 → 16바이트로 조정");
|
||||
// AES-128: 16바이트 키 (groupSeq 앞 16바이트)
|
||||
if(keyData.length != 16) {
|
||||
System.out.println("[AES] 키 길이 조정: " + keyData.length + "바이트 → 16바이트");
|
||||
byte[] key16 = new byte[16];
|
||||
System.arraycopy(keyData, 0, key16, 0, Math.min(keyData.length, 16));
|
||||
keyData = key16;
|
||||
|
||||
@@ -3975,17 +3975,17 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
|
||||
</if>
|
||||
) VALUES
|
||||
(
|
||||
#{BOM_REPORT_OBJID},
|
||||
#{OBJID},
|
||||
#{PARENT_OBJID},
|
||||
#{CHILD_OBJID},
|
||||
#{PARENT_PART_NO},
|
||||
#{PART_NO},
|
||||
<!-- (SELECT PART_NO FROM BOM_PART_QTY WHERE 1=1 AND CHILD_OBJID = #{PARENT_OBJID} AND BOM_REPORT_OBJID = #{BOM_REPORT_OBJID}),
|
||||
#{PART_OBJID}, -->
|
||||
#{QTY},
|
||||
#{ITEM_QTY},
|
||||
#{QTY_TEMP},
|
||||
#{BOM_REPORT_OBJID},
|
||||
#{OBJID},
|
||||
#{PARENT_OBJID},
|
||||
#{CHILD_OBJID},
|
||||
#{PARENT_PART_NO},
|
||||
#{PART_NO},
|
||||
<!-- (SELECT PART_NO FROM BOM_PART_QTY WHERE 1=1 AND CHILD_OBJID = #{PARENT_OBJID} AND BOM_REPORT_OBJID = #{BOM_REPORT_OBJID}),
|
||||
#{PART_OBJID}, -->
|
||||
COALESCE(NULLIF(#{QTY}, ''), '0')::NUMERIC,
|
||||
COALESCE(NULLIF(#{ITEM_QTY}, ''), '0')::NUMERIC,
|
||||
COALESCE(NULLIF(#{QTY_TEMP}, ''), '0')::NUMERIC,
|
||||
NOW(),
|
||||
#{WRITER},
|
||||
nextval('seq_bom_qty'),
|
||||
@@ -7545,46 +7545,46 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
|
||||
,UNIT_LENGTH
|
||||
,UNIT_QTY
|
||||
) VALUES (
|
||||
#{PART_OBJID}::NUMERIC
|
||||
,#{PART_NO}
|
||||
,#{PART_NAME}
|
||||
,#{UNIT}
|
||||
,#{QTY}
|
||||
,#{SPEC}
|
||||
,#{MATERIAL}
|
||||
,#{THICKNESS}
|
||||
,#{WIDTH}
|
||||
,#{HEIGHT}
|
||||
,#{OUT_DIAMETER}
|
||||
,#{IN_DIAMETER}
|
||||
,#{LENGTH}
|
||||
,#{REMARK}
|
||||
,'create'
|
||||
,now()
|
||||
,#{CONNECTUSERID}
|
||||
,'1'
|
||||
,#{PART_TYPE}
|
||||
,#{PRODUCT_MGMT_OBJID}
|
||||
,#{SUPPLY_CODE}
|
||||
,#{MAKER}
|
||||
,#{CONTRACT_OBJID}
|
||||
,#{POST_PROCESSING}
|
||||
,#{HEAT_TREATMENT_HARDNESS}
|
||||
,#{HEAT_TREATMENT_METHOD}
|
||||
,#{SURFACE_TREATMENT}
|
||||
,#{ACCTFG}
|
||||
,#{ODRFG}
|
||||
,#{UNIT_DC}
|
||||
,#{UNITMANG_DC}
|
||||
,#{UNITCHNG_NB}::NUMERIC
|
||||
,COALESCE(#{LOT_FG}, '0')
|
||||
,COALESCE(#{USE_YN}, '1')
|
||||
,COALESCE(#{QC_FG}, '0')
|
||||
,COALESCE(#{SETITEM_FG}, '0')
|
||||
,COALESCE(#{REQ_FG}, '0')
|
||||
,#{UNIT_LENGTH}
|
||||
,#{UNIT_QTY}
|
||||
)
|
||||
#{PART_OBJID}::NUMERIC
|
||||
,#{PART_NO}
|
||||
,#{PART_NAME}
|
||||
,#{UNIT}
|
||||
,COALESCE(NULLIF(#{QTY}, ''), '0')::NUMERIC
|
||||
,#{SPEC}
|
||||
,#{MATERIAL}
|
||||
,NULLIF(#{THICKNESS}, '')
|
||||
,NULLIF(#{WIDTH}, '')
|
||||
,NULLIF(#{HEIGHT}, '')
|
||||
,NULLIF(#{OUT_DIAMETER}, '')
|
||||
,NULLIF(#{IN_DIAMETER}, '')
|
||||
,NULLIF(#{LENGTH}, '')
|
||||
,#{REMARK}
|
||||
,'create'
|
||||
,now()
|
||||
,#{CONNECTUSERID}
|
||||
,'1'
|
||||
,#{PART_TYPE}
|
||||
,#{PRODUCT_MGMT_OBJID}
|
||||
,#{SUPPLY_CODE}
|
||||
,#{MAKER}
|
||||
,#{CONTRACT_OBJID}
|
||||
,#{POST_PROCESSING}
|
||||
,#{HEAT_TREATMENT_HARDNESS}
|
||||
,#{HEAT_TREATMENT_METHOD}
|
||||
,#{SURFACE_TREATMENT}
|
||||
,#{ACCTFG}
|
||||
,#{ODRFG}
|
||||
,#{UNIT_DC}
|
||||
,#{UNITMANG_DC}
|
||||
,COALESCE(NULLIF(#{UNITCHNG_NB}, ''), '0')::NUMERIC
|
||||
,COALESCE(#{LOT_FG}, '0')
|
||||
,COALESCE(#{USE_YN}, '1')
|
||||
,COALESCE(#{QC_FG}, '0')
|
||||
,COALESCE(#{SETITEM_FG}, '0')
|
||||
,COALESCE(#{REQ_FG}, '0')
|
||||
,NULLIF(#{UNIT_LENGTH}, '')
|
||||
,NULLIF(#{UNIT_QTY}, '')
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 계약제품, 업체명으로 BOM에 등록된 부품정보 조회 -->
|
||||
|
||||
@@ -1787,8 +1787,13 @@ public class ApprovalService {
|
||||
}
|
||||
|
||||
String empSeq = CommonUtils.checkNull(person.getEmpseq());
|
||||
System.out.println("=== Amaranth SSO - 사용자 정보 ===");
|
||||
System.out.println("userId: " + person.getUserId());
|
||||
System.out.println("userName: " + person.getUserName());
|
||||
System.out.println("empSeq: [" + empSeq + "]");
|
||||
|
||||
if(empSeq.isEmpty()){
|
||||
return "{\"resultCode\":-1,\"resultMsg\":\"empSeq 정보가 없습니다. 관리자에게 문의하세요.\"}";
|
||||
return "{\"resultCode\":-1,\"resultMsg\":\"empSeq 정보가 없습니다. (userId: " + person.getUserId() + ") 관리자에게 문의하세요.\"}";
|
||||
}
|
||||
|
||||
// 파라미터 추출
|
||||
|
||||
@@ -5023,16 +5023,25 @@ public class PartMngService extends BaseService {
|
||||
insertMap.put("PARENT_PART_NO", PARENT_PART_NO);
|
||||
insertMap.put("PART_NO", PART_NO);
|
||||
insertMap.put("PART_NAME", CommonUtils.checkNull((String)insertMap.get("PART_NAME")));
|
||||
insertMap.put("QTY", CommonUtils.checkNull((String)insertMap.get("QTY")));
|
||||
insertMap.put("UNIT", CommonUtils.checkNull((String)insertMap.get("UNIT")));
|
||||
insertMap.put("SPEC", CommonUtils.checkNull((String)insertMap.get("SPEC")));
|
||||
insertMap.put("MATERIAL", CommonUtils.checkNull((String)insertMap.get("MATERIAL")));
|
||||
insertMap.put("THICKNESS", CommonUtils.checkNull((String)insertMap.get("THICKNESS")));
|
||||
insertMap.put("WIDTH", CommonUtils.checkNull((String)insertMap.get("WIDTH")));
|
||||
insertMap.put("HEIGHT", CommonUtils.checkNull((String)insertMap.get("HEIGHT")));
|
||||
insertMap.put("OUT_DIAMETER", CommonUtils.checkNull((String)insertMap.get("OUT_DIAMETER")));
|
||||
insertMap.put("IN_DIAMETER", CommonUtils.checkNull((String)insertMap.get("IN_DIAMETER")));
|
||||
insertMap.put("LENGTH", CommonUtils.checkNull((String)insertMap.get("LENGTH")));
|
||||
String qtyVal = CommonUtils.checkNull((String)insertMap.get("QTY"));
|
||||
insertMap.put("QTY", StringUtils.isBlank(qtyVal) ? "0" : qtyVal);
|
||||
insertMap.put("ITEM_QTY", StringUtils.isBlank(qtyVal) ? "0" : qtyVal);
|
||||
insertMap.put("QTY_TEMP", StringUtils.isBlank(qtyVal) ? "0" : qtyVal);
|
||||
insertMap.put("UNIT", CommonUtils.checkNull((String)insertMap.get("UNIT")));
|
||||
insertMap.put("SPEC", CommonUtils.checkNull((String)insertMap.get("SPEC")));
|
||||
insertMap.put("MATERIAL", CommonUtils.checkNull((String)insertMap.get("MATERIAL")));
|
||||
String thicknessVal = CommonUtils.checkNull((String)insertMap.get("THICKNESS"));
|
||||
insertMap.put("THICKNESS", StringUtils.isBlank(thicknessVal) ? null : thicknessVal);
|
||||
String widthVal = CommonUtils.checkNull((String)insertMap.get("WIDTH"));
|
||||
insertMap.put("WIDTH", StringUtils.isBlank(widthVal) ? null : widthVal);
|
||||
String heightVal = CommonUtils.checkNull((String)insertMap.get("HEIGHT"));
|
||||
insertMap.put("HEIGHT", StringUtils.isBlank(heightVal) ? null : heightVal);
|
||||
String outDiameterVal = CommonUtils.checkNull((String)insertMap.get("OUT_DIAMETER"));
|
||||
insertMap.put("OUT_DIAMETER", StringUtils.isBlank(outDiameterVal) ? null : outDiameterVal);
|
||||
String inDiameterVal = CommonUtils.checkNull((String)insertMap.get("IN_DIAMETER"));
|
||||
insertMap.put("IN_DIAMETER", StringUtils.isBlank(inDiameterVal) ? null : inDiameterVal);
|
||||
String lengthVal = CommonUtils.checkNull((String)insertMap.get("LENGTH"));
|
||||
insertMap.put("LENGTH", StringUtils.isBlank(lengthVal) ? null : lengthVal);
|
||||
insertMap.put("PART_TYPE", CommonUtils.checkNull((String)insertMap.get("PART_TYPE")));
|
||||
insertMap.put("REMARK", CommonUtils.checkNull((String)insertMap.get("REMARK")));
|
||||
insertMap.put("SUPPLY_CODE", CommonUtils.checkNull((String)insertMap.get("SUPPLY_CODE")));
|
||||
@@ -5047,7 +5056,8 @@ public class PartMngService extends BaseService {
|
||||
// ERP 연동 필드
|
||||
insertMap.put("UNIT_DC", CommonUtils.checkNull((String)insertMap.get("UNIT_DC")));
|
||||
insertMap.put("UNITMANG_DC", CommonUtils.checkNull((String)insertMap.get("UNITMANG_DC")));
|
||||
insertMap.put("UNITCHNG_NB", CommonUtils.checkNull((String)insertMap.get("UNITCHNG_NB")));
|
||||
String unitchngNbVal = CommonUtils.checkNull((String)insertMap.get("UNITCHNG_NB"));
|
||||
insertMap.put("UNITCHNG_NB", StringUtils.isBlank(unitchngNbVal) ? "0" : unitchngNbVal);
|
||||
String lotFgVal = CommonUtils.checkNull((String)insertMap.get("LOT_FG"));
|
||||
insertMap.put("LOT_FG", StringUtils.isBlank(lotFgVal) ? "0" : lotFgVal);
|
||||
String useYnVal = CommonUtils.checkNull((String)insertMap.get("USE_YN"));
|
||||
@@ -5058,9 +5068,11 @@ public class PartMngService extends BaseService {
|
||||
insertMap.put("SETITEM_FG", StringUtils.isBlank(setitemFgVal) ? "0" : setitemFgVal);
|
||||
String reqFgVal = CommonUtils.checkNull((String)insertMap.get("REQ_FG"));
|
||||
insertMap.put("REQ_FG", StringUtils.isBlank(reqFgVal) ? "0" : reqFgVal);
|
||||
// 개당길이, 개당소요량
|
||||
insertMap.put("UNIT_LENGTH", CommonUtils.checkNull((String)insertMap.get("UNIT_LENGTH")));
|
||||
insertMap.put("UNIT_QTY", CommonUtils.checkNull((String)insertMap.get("UNIT_QTY")));
|
||||
// 개당길이, 개당소요량
|
||||
String unitLengthVal = CommonUtils.checkNull((String)insertMap.get("UNIT_LENGTH"));
|
||||
insertMap.put("UNIT_LENGTH", StringUtils.isBlank(unitLengthVal) ? null : unitLengthVal);
|
||||
String unitQtyVal = CommonUtils.checkNull((String)insertMap.get("UNIT_QTY"));
|
||||
insertMap.put("UNIT_QTY", StringUtils.isBlank(unitQtyVal) ? null : unitQtyVal);
|
||||
insertMap.put("STATUS", "deploy"); // 엑셀 업로드 시 deploy 상태로 저장
|
||||
insertMap.put("WRITER", CommonUtils.checkNull((String)paramMap.get("CONNECTUSERID")));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user