Merge pull request '품질관리_260107_CS업무플로우(최신)수정사항2' (#117) from V2025121901 into main
Reviewed-on: #117
This commit was merged in pull request #117.
This commit is contained in:
@@ -335,12 +335,16 @@ function fn_save(){
|
||||
<td>${info.receipt_no}</td> -->
|
||||
<td class="input_title"><label>접수일</label></td>
|
||||
<td>${info.receipt_date}</td>
|
||||
<td class="input_title"><label>접수자</label></td>
|
||||
<td>${info.writer_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="input_title"><label>고객사</label></td>
|
||||
<td colspan="3">${info.customer_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="input_title"><label>수량</label></td>
|
||||
<td>${info.qty}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="input_title"><label>고객사</label></td>
|
||||
<td>${info.customer_name}</td>
|
||||
<td class="input_title"><label>제품구분</label></td>
|
||||
<td>${info.product_type_name}</td>
|
||||
</tr>
|
||||
@@ -409,6 +413,7 @@ function fn_save(){
|
||||
<option value="R" ${info.BLAME_DECISION eq 'R' ? 'selected' : ''}>RPS</option>
|
||||
<option value="C" ${info.BLAME_DECISION eq 'C' ? 'selected' : ''}>고객사</option>
|
||||
<option value="O" ${info.BLAME_DECISION eq 'O' ? 'selected' : ''}>외주업체</option>
|
||||
<option value="O" ${info.BLAME_DECISION eq 'E' ? 'selected' : ''}>단순문의</option>
|
||||
</select>
|
||||
</td>
|
||||
<td class="input_title"><label>상태 <span style="color:red;">*</span></label></td>
|
||||
|
||||
@@ -9,12 +9,21 @@ String menuObjId = request.getParameter("menuObjId");
|
||||
String menuName = CommonUtils.getMenuName(menuObjId, "고객 이슈 등록");
|
||||
String actionType = CommonUtils.checkNull(request.getParameter("actionType"));
|
||||
|
||||
|
||||
// info Map 가져오기
|
||||
Map info = (Map) request.getAttribute("info");
|
||||
if(info == null) info = new HashMap();
|
||||
|
||||
// OBJID가 없으면 신규 생성 (첨부파일 연결용)
|
||||
String objId = CommonUtils.checkNull(request.getAttribute("info") != null ? ((Map)request.getAttribute("info")).get("objid") : "");
|
||||
String objId = CommonUtils.checkNull(info.get("objid"));
|
||||
boolean isNew = objId.isEmpty() || "new".equals(actionType);
|
||||
if(objId.isEmpty()){
|
||||
objId = String.valueOf(CommonUtils.createObjId());
|
||||
}
|
||||
|
||||
// 접수자/작성자
|
||||
String writerName = CommonUtils.checkNull(info.get("writer_name"));
|
||||
if(writerName.isEmpty()) writerName = connectUserName;
|
||||
%>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -138,18 +147,24 @@ function fn_save(){
|
||||
<td>
|
||||
<input type="text" name="RECEIPT_DATE" id="RECEIPT_DATE" class="date_icon" required reqTitle="접수일" value="${info.receipt_date}">
|
||||
</td>
|
||||
<td class="input_title"><label>수량 <span style="color:red;">*</span></label></td>
|
||||
<td class="input_title"><label>접수자</label></td>
|
||||
<td>
|
||||
<input type="text" name="QTY" id="QTY" value="${info.qty}" required reqTitle="수량">
|
||||
<input type="text" id="ACTION_USER_NAME" value="<%=writerName%>" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr>
|
||||
<td class="input_title"><label>고객사 <span style="color:red;">*</span></label></td>
|
||||
<td>
|
||||
<td colspan="3">
|
||||
<select name="CUSTOMER_OBJID" id="CUSTOMER_OBJID" class="select2" required reqTitle="고객사" type="select" style="width:100%;">
|
||||
<option value="">선택</option>
|
||||
${code_map.customer_cd}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="input_title"><label>수량 <span style="color:red;">*</span></label></td>
|
||||
<td>
|
||||
<input type="text" name="QTY" id="QTY" value="${info.qty}" required reqTitle="수량">
|
||||
</td>
|
||||
<td class="input_title"><label>제품구분 <span style="color:red;">*</span></label></td>
|
||||
<td>
|
||||
|
||||
@@ -89,24 +89,30 @@ var columns = [
|
||||
}
|
||||
},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'접수일', field:'RECEIPT_DATE'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치구분', field:'ACTION_TYPE_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:1, title:'고객사', field:'CUSTOMER_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'제품구분', field:'PRODUCT_TYPE_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품명', field:'PRODUCT_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품번', field:'PRODUCT_NO'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'S/N', field:'SERIAL_NO'},
|
||||
{headerHozAlign:'center', hozAlign:'right', minWidth:70, widthGrow:1, title:'수량', field:'QTY',
|
||||
formatter:"money", formatterParams:{thousand:",", precision:false}
|
||||
},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:1, title:'고객사', field:'CUSTOMER_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'제품구분', field:'PRODUCT_TYPE_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'WRITER_NAME'},
|
||||
//{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'모델명', field:'MODEL_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품명', field:'PRODUCT_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품번', field:'PRODUCT_NO'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품번', field:'PART_NO'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'생산일', field:'PRODUCTION_DATE'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'판매일', field:'SALES_DATE'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'S/N', field:'SERIAL_NO'},
|
||||
|
||||
//{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'},
|
||||
//{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품번', field:'PART_NO'},
|
||||
//{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'생산일', field:'PRODUCTION_DATE'},
|
||||
//{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'판매일', field:'SALES_DATE'},
|
||||
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:80, widthGrow:1, title:'제조사', field:'MANUFACTURER'},
|
||||
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'이슈내용', field:'COMPLAINT_CONTENT'},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치구분', field:'ACTION_TYPE_NAME'},
|
||||
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치내용', field:'ACTION_CONTENT'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'조치일', field:'ACTION_DATE'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'조치자', field:'ACTION_USER_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'귀책판정', field:'BLAME_DECISION_NAME'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'상태(C/O)', field:'STATUS',
|
||||
formatter: function(cell, formatterParams, onRendered){
|
||||
@@ -118,8 +124,8 @@ var columns = [
|
||||
}
|
||||
},
|
||||
{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'비고', field:'REMARK'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'조치일', field:'ACTION_DATE'},
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'조치자', field:'ACTION_USER_NAME'},
|
||||
|
||||
|
||||
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'이미지파일', field:'IMAGE_FILE',
|
||||
formatter:fnc_subInfoValueFormatter,
|
||||
cellClick:function(e, cell){
|
||||
@@ -165,7 +171,7 @@ function fn_registDefectPopUp(){
|
||||
var selected = _tabulGrid.getSelectedData();
|
||||
|
||||
var popup_width = 800;
|
||||
var popup_height = 450;
|
||||
var popup_height = 480;
|
||||
var hiddenForm = document.hiddenForm;
|
||||
var target = "customerCsDefectPopUp";
|
||||
var url = "/quality/customerCsDefectFormPopUp.do";
|
||||
@@ -301,6 +307,7 @@ function fn_FileRegist(objId, docType, docTypeName){
|
||||
<option value="R">RPS</option>
|
||||
<option value="C">고객사</option>
|
||||
<option value="O">외주업체</option>
|
||||
<option value="E">단순문의</option>
|
||||
</select>
|
||||
</td>
|
||||
<td><label>상태</label></td>
|
||||
|
||||
@@ -792,7 +792,7 @@ public class QualityController {
|
||||
// 고객사
|
||||
code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("customer_objid")), "common.getClientMngSupplySelect"));
|
||||
// 제품구분
|
||||
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("PRODUCT_TYPE")), "common.getCodeselect"));
|
||||
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("product_type")), "common.getCodeselect"));
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -1907,6 +1907,8 @@
|
||||
, CCS.REMARK
|
||||
, CCS.ACTION_DATE
|
||||
, CCS.ACTION_USER_ID
|
||||
, CCS.WRITER
|
||||
, USER_NAME(CCS.WRITER) as WRITER_NAME
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_IMAGE' AND STATUS = 'Active') AS IMAGE_FILE
|
||||
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_ACTION' AND STATUS = 'Active') AS ATTACH_FILE
|
||||
@@ -1994,14 +1996,19 @@
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME
|
||||
, CCS.ATTACH_FILE_OBJID
|
||||
, CCS.WRITER
|
||||
, USER_NAME(CCS.WRITER) AS WRITER_NAME
|
||||
, TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE
|
||||
FROM CUSTOMER_CS CCS
|
||||
WHERE CCS.OBJID = #{OBJID}
|
||||
</select>
|
||||
|
||||
<!-- 고객 CS 시퀀스 조회 -->
|
||||
<select id="getCustomerCsSeq" resultType="int">
|
||||
SELECT NEXTVAL('SEQ_CUSTOMER_CS_RECEIPT_NO')
|
||||
<!-- 고객 CS 날짜별 순번 조회 (해당 날짜의 다음 순번 반환) -->
|
||||
<select id="getCustomerCsSeqByDate" parameterType="map" resultType="int">
|
||||
SELECT COALESCE(MAX(
|
||||
CAST(SPLIT_PART(RECEIPT_NO, '-', 3) AS INTEGER)
|
||||
), 0) + 1
|
||||
FROM CUSTOMER_CS
|
||||
WHERE RECEIPT_NO LIKE 'CS-' || #{TARGET_DATE} || '-%'
|
||||
</select>
|
||||
|
||||
<!-- 고객 CS 등록 -->
|
||||
|
||||
@@ -1547,9 +1547,12 @@ public class QualityService extends BaseService{
|
||||
paramMap.put("OBJID", objId);
|
||||
}
|
||||
|
||||
// 접수번호 생성 (CS-YYYYMMDD-SEQ)
|
||||
// 접수번호 생성 (CS-YYYYMMDD-날짜별순번)
|
||||
String today = new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date());
|
||||
String receiptNo = "CS-" + today + "-" + String.format("%03d", sqlSession.selectOne("quality.getCustomerCsSeq"));
|
||||
Map<String, Object> seqParam = new HashMap<String, Object>();
|
||||
seqParam.put("TARGET_DATE", today);
|
||||
int dailySeq = (int) sqlSession.selectOne("quality.getCustomerCsSeqByDate", seqParam);
|
||||
String receiptNo = "CS-" + today + "-" + String.format("%03d", dailySeq);
|
||||
paramMap.put("RECEIPT_NO", receiptNo);
|
||||
|
||||
sqlSession.insert("quality.insertCustomerCs", paramMap);
|
||||
|
||||
Reference in New Issue
Block a user