Files
wace_plm/src/com/pms/service/CostMgmtService.java
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

558 lines
18 KiB
Java

package com.pms.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.google.gson.JsonArray;
import com.pms.common.JsonUtil;
import com.pms.common.Message;
import com.pms.common.SqlMapConfig;
import com.pms.common.bean.PersonBean;
import com.pms.common.utils.CommonUtils;
import com.pms.common.utils.Constants;
@Service
public class CostMgmtService {
CommonService commonService = null;
@Autowired
ProjectService projectService;
@Autowired
ProductionMngService productionMngService;
@Autowired
public void setCommonService(CommonService commonService){
this.commonService = commonService;
}
public boolean saveProjectConceptBasicInfo(Map paramMap){
boolean result = false;
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
int cnt = sqlSession.update("common.getMilestoneList", paramMap);
if(cnt > 0) result = true;
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return result;
}
public List getMaterialCostMgmtList(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.materialCostMgmtListCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.materialCostMgmtList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
public List getLaborCostMgmtList(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.laborCostMgmtListCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.laborCostMgmtList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
public List laborCostTimeSheetPopup(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultList = (ArrayList)sqlSession.selectList("costMgmt.laborCostTimeSheetPopup", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
public List getOverheadCostMgmtList(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.overheadCostMgmtListCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.overheadCostMgmtList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
public List getExpenseList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.expenseListCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.expenseList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
public List getExpenseDetailList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultList = (ArrayList)sqlSession.selectList("costMgmt.expenseDetailList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
/**
* 경비신청서 지급완료
* @param request
* @param paramMap
* @return
*/
public Map expenseConfirm(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try{
/*String checkParam = CommonUtils.checkNull(paramMap.get("checkArr"));
String[] targetObjIdList = checkParam.split(",");
if(null != targetObjIdList && 0 < targetObjIdList.length){*/
HttpSession session = request.getSession();
sqlSession = SqlMapConfig.getInstance().getSqlSession();
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
String userId = person.getUserId();
/*for(int i=0;i<targetObjIdList.length;i++){*/
//String objId = CommonUtils.checkNull(targetObjIdList[i]);
//HashMap sqlParamMap = new HashMap();
//sqlParamMap.put("OBJID", objId);
//paramMap.put("PAYMENT_DATE", CommonUtils.getDateTime(new Date(), "yyyy-MM-dd"));
sqlSession.update("costMgmt.expenseConfirm",paramMap);
/*}*/
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", "확인되었습니다");
/*}*/
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", "확인에 실패하였습니다");
sqlSession.rollback();
throw e;
}finally{
sqlSession.close();
}
return resultMap;
}
public List laborCostTimeSheetDetailList(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultList = (ArrayList)sqlSession.selectList("costMgmt.laborCostTimeSheetDetailList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
public Map getExpenseMasterInfo(Map paramMap){
Map<String,Object> resultMap = new HashMap();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultMap = sqlSession.selectOne("costMgmt.selectExpenseMaster", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultMap);
}
public void saveExpenseMaster(HttpServletRequest request,Map paramMap){
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String ArrBusUserId[] = request.getParameterValues("busUsersId");
String busUsersId ="";
for(int i=0;i<ArrBusUserId.length;i++){
busUsersId += ArrBusUserId[i];
if(i<(ArrBusUserId.length-1)){
busUsersId+=",";
}
}
System.out.println("busUsersId : "+ busUsersId);
paramMap.put("busUsersId", busUsersId);
int cnt = sqlSession.update("costMgmt.mergeExpenseMaster", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
}
public void saveExpenseDetailList(HttpServletRequest request,Map paramMap){
SqlSession sqlSession = null;
try{
List<Map<String, Object>> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid")));
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
int cnt = sqlSession.delete("costMgmt.deleteExpenseDetailAll", paramMap);
for(int i=0; i<gridDataList.size(); i++){
Map insertMap = gridDataList.get(i);
if(CommonUtils.nullToEmpty((String)insertMap.get("EXPENSE_DETAIL_OBJID")).equals("")){
insertMap.put("EXPENSE_DETAIL_OBJID", CommonUtils.createObjId());
}
sqlSession.insert("costMgmt.insertExpenseDetail", gridDataList.get(i));
}
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
}
//time sheet 저장
public void timeSheetListSave(HttpServletRequest request,Map paramMap){
SqlSession sqlSession = null;
try{
String connectUserId = CommonUtils.checkNull(paramMap.get("connectUserId"));
List<Map<String, Object>> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid")));
System.out.println("gridDataList"+gridDataList);
System.out.println("gridDataListSize-=="+gridDataList.size());
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
// int cnt = sqlSession.delete("costMgmt.deleteTimeSheetAll", paramMap);
for(int i=0; i<gridDataList.size(); i++){
Map insertMap = gridDataList.get(i);
/* if(i==0){
insertMap.put("connectUserId", connectUserId);
sqlSession.delete("costMgmt.deleteTimeSheetAll", insertMap);
}*/
int num = 0;
String snum = CommonUtils.nullToEmpty((String) insertMap.get("WORK_TIME"));
if(snum == ""){
num = 0;
} else {
num = Integer.parseInt(snum);
}
if(num > 0){
if(!CommonUtils.nullToEmpty((String)insertMap.get("TIME_SHEET_OBJID")).equals("")){
sqlSession.insert("costMgmt.insertTimeSheet", insertMap);
}else {
if(!CommonUtils.nullToEmpty((String)insertMap.get("PROJECTNO")).equals("") &&
!CommonUtils.nullToEmpty((String)insertMap.get("WORK_DATE")).equals("")){
insertMap.put("TIME_SHEET_OBJID", CommonUtils.createObjId());
sqlSession.insert("costMgmt.insertTimeSheet", insertMap);
}
}
}
}
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
}
//time sheet 삭제
public void timeSheetListDelete(HttpServletRequest request,Map paramMap){
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
System.out.println("paramMap :"+paramMap);
sqlSession.delete("costMgmt.deleteTimeSheet", paramMap);
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
}
//투입원가현황
public List getInputCostStatusList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.inputCostStatusListCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.inputCostStatusList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
//경비현황
public List expenseInfo(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
String countPerPage = CommonUtils.checkNull(request.getParameter("countPerPage"), Constants.ADMIN_COUNT_PER_PAGE+"");
paramMap.put("COUNT_PER_PAGE", Integer.parseInt(countPerPage));
Map pageMap = (HashMap)sqlSession.selectOne("costMgmt.expenseInfoCnt", paramMap);
pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap);
paramMap.put("PAGE_END", CommonUtils.checkNull(pageMap.get("PAGE_END")));
paramMap.put("PAGE_START", CommonUtils.checkNull(pageMap.get("PAGE_START")));
resultList = (ArrayList)sqlSession.selectList("costMgmt.expenseInfo", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
public List getTimeSheetAddworkTime(HttpServletRequest request,Map paramMap){
List<Map> resultList = new ArrayList();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultList = (ArrayList)sqlSession.selectList("costMgmt.getTimeSheetAddworkTime", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultList;
}
/**
* 투입원가관리 목표등록 Form PopUp
* @param paramMap
* @return
*/
public Map<String,Object> getCostGoalInfo(HttpServletRequest request,Map paramMap){
Map<String,Object> resultMap = new HashMap();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultMap = (HashMap)sqlSession.selectOne("costMgmt.getCostGoalInfo", paramMap);
//String contractObjId = CommonUtils.checkNull(resultMap.get("CONTRACT_OBJID"));
String objId = "";
if(CommonUtils.isNotEmpty(resultMap)){
objId = CommonUtils.checkNull(resultMap.get("OBJID"));
}else{
resultMap = new HashMap();
}
if("".equals(objId)){
objId = CommonUtils.createObjId();
}
resultMap.put("OBJID", objId);
//resultMap.put("CONTRACT_OBJID", contractObjId);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultMap);
}
/**
* 목표가 저장
* @param paramMap
* @return
*/
public Map<String,Object> saveCostGoalInfo(HttpServletRequest request,Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN);
String writer = CommonUtils.checkNull(person.getUserId());
paramMap.put("WRITER", writer);
sqlSession.insert("costMgmt.saveCostGoalInfo", paramMap);
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", Message.SAVE_SUCCESS);
}catch(Exception e){
sqlSession.rollback();
resultMap.put("result", false);
resultMap.put("msg", Message.SAVE_FAILED);
e.printStackTrace();
}finally{
sqlSession.close();
}
return resultMap;
}
/**
* 프로젝트에 연결된 WBS Task의 목록 가져온다.
* @param sqlSession
* @param request
* @param paramMap
* @return
* @throws Exception
*/
public List getProjectWBSTaskList(HttpServletRequest request, Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
resultList = sqlSession.selectList("project.getProjectProductTaskList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
/**
* 프로젝트에 연결된 SETUP WBS Task의 목록 가져온다.
* @param sqlSession
* @param request
* @param paramMap
* @return
* @throws Exception
*/
public List getProjectSetupWBSTaskList(HttpServletRequest request, Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
resultList = sqlSession.selectList("project.getProjectSetupWBSTaskList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
/**
* 유닛별 상세
* @param paramMap
* @return
*/
public List getpurchaseUnitList(HttpServletRequest request,Map paramMap){
List<Map<String,Object>> resultList = new ArrayList();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
try{
resultList = sqlSession.selectList("costMgmt.getpurchaseUnitList", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
sqlSession.close();
}
return CommonUtils.toUpperCaseMapKey(resultList);
}
}