package com.pms.service; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; 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.commons.lang3.StringUtils; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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; import com.pms.common.utils.MailUtil; @Service public class PurchaseOrderService { CommonService commonService = null; @Autowired ProjectService projectService; @Autowired ProductionMngService productionMngService; @Autowired InventoryMngService inventoryMngService; @Autowired public void setCommonService(CommonService commonService){ this.commonService = commonService; } /** * 발주목록 * @param paramMap * @return */ @Deprecated public List getPurchaseOrderMasterList(HttpServletRequest request,Map paramMap){ List> 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("purchaseOrder.purchaseOrderMasterListCnt", 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("purchaseOrder.purchaseOrderMasterList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * 자사정보를 가져온다. * @param request * @param paramMap * @return */ public Map getMyCompanyInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("purchaseOrder.getMyCompanyInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * 발주 Master의 정보를 가져온다. * @param request * @param paramMap * @return */ public Map getPurchaseOrderMasterInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("purchaseOrder.getPurchaseOrderMasterInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * 거래명세표에서 발주 Master의 정보를 가져온다. * @param request * @param paramMap * @return */ public Map getPurchaseOrderMasterInfoInvoice(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("purchaseOrder.getPurchaseOrderMasterInfoInvoice", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * 구매 BOM 정의 후 구매의뢰 저장 후 Part 목록을 가져온다. * @param request * @param paramMap * @return */ public List getPurchaseOrderTargetPartList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultList = (ArrayList)sqlSession.selectList("purchaseOrder.getPurchaseOrderTargetPartList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * 구매 BOM 정의 후 수입검사 등록 Part 목록을 가져온다. * @param request * @param paramMap * @return */ public List getPurchaseOrderDeliveryTargetPartList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultList = (ArrayList)sqlSession.selectList("purchaseOrder.getPurchaseOrderDeliveryTargetPartList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } /** * 구매 BOM을 통해서 지정된 발주대상 파트를 공급업체별로 발주서 생성한다. * @param request * @param paramMap * @return */ public Map saveSalesBOMPurchaseOrder(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER", writer); String partObjList[] = request.getParameterValues("OBJID"); //선택된 파트너들로 리스트를 구성한다. List partnerList = new ArrayList(); //발주서는 업체기준으로 생성하므로 공급업체 목록을 만든다. if(null != partObjList && 0 < partObjList.length){ for(String targetObjId:partObjList){ String partnerObjId = CommonUtils.checkNull(request.getParameter("PARTNER_OBJID_"+targetObjId)); if(!partnerList.contains(partnerObjId)){ partnerList.add(partnerObjId); } } } //구성한 공급업체 목록으로 반복문 for(String partnerObjId : partnerList){ Map masterSqlParamMep = new HashMap(); String masterObjId = CommonUtils.createObjId(); masterSqlParamMep.put("OBJID", masterObjId); masterSqlParamMep.put("MY_COMPANY_OBJID", Constants.COMPANY_OBJID); masterSqlParamMep.put("PARTNER_OBJID", partnerObjId); masterSqlParamMep.put("WRITER", writer); masterSqlParamMep.put("STATUS", "create"); //업체별로 발주서 마스터 생성 sqlSession.update("purchaseOrder.mergePurchaseOrderMaster", masterSqlParamMep); //동일한 공급업체일 경우 마스터 아래로 저장 for(String targetObjId:partObjList){ String targetPartnerObjId = CommonUtils.checkNull(request.getParameter("PARTNER_OBJID_"+targetObjId)); if(partnerObjId.equals(targetPartnerObjId)){ Map sqlParamMep = new HashMap(); sqlParamMep.put("OBJID", CommonUtils.createObjId()); sqlParamMep.put("PART_OBJID", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId))); sqlParamMep.put("PURCHASE_ORDER_MASTER_OBJID", masterObjId); sqlParamMep.put("ORDER_QTY", CommonUtils.checkNull(request.getParameter("QTY_"+targetObjId),"0")); sqlParamMep.put("PARTNER_PRICE", CommonUtils.checkNull(request.getParameter("PARTNER_PRICE_"+targetObjId),"0")); sqlParamMep.put("WRITER", writer); sqlParamMep.put("STATUS", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId),"create")); sqlSession.update("purchaseOrder.mergePurchaseOrderPartInfo", sqlParamMep); } } } 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; } /** * 구매의뢰 내용을 저장한다. * @param request * @param paramMap * @return */ public Map savePurchaseOrderInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER", writer); System.out.println("paramMap:"+paramMap); String PURCHASE_ORDER_MASTER_OBJID = CommonUtils.checkNull(request.getParameter("PURCHASE_ORDER_MASTER_OBJID")); String status = CommonUtils.checkNull(request.getParameter("STATUS")); if("".equals(PURCHASE_ORDER_MASTER_OBJID)){ PURCHASE_ORDER_MASTER_OBJID = CommonUtils.createObjId(); paramMap.put("STATUS", "create"); } paramMap.put("PURCHASE_ORDER_MASTER_OBJID", PURCHASE_ORDER_MASTER_OBJID); paramMap.put("OBJID", PURCHASE_ORDER_MASTER_OBJID); sqlSession.update("purchaseOrder.mergePurchaseOrderMaster", paramMap); sqlSession.update("purchaseOrder.initPurchaseOrderPart", paramMap); String partObjList[] = request.getParameterValues("OBJID"); if(null != partObjList && 0 < partObjList.length){ for(String targetObjId:partObjList){ Map sqlParamMep = new HashMap(); sqlParamMep.put("OBJID", targetObjId); sqlParamMep.put("PART_OBJID", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId))); sqlParamMep.put("PURCHASE_ORDER_MASTER_OBJID", PURCHASE_ORDER_MASTER_OBJID); sqlParamMep.put("ORDER_QTY", CommonUtils.checkNull(request.getParameter("QTY_"+targetObjId),"0")); sqlParamMep.put("PARTNER_PRICE", CommonUtils.checkNull(request.getParameter("PARTNER_PRICE_"+targetObjId),"0")); sqlParamMep.put("WRITER", writer); sqlParamMep.put("STATUS", "create"); sqlParamMep.put("REMARK", CommonUtils.checkNull(request.getParameter("REMARK_"+targetObjId))); sqlSession.update("purchaseOrder.mergePurchaseOrderPartInfo", sqlParamMep); } } 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; } public Map deletePurchaseOrderMaster(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String checkArr = CommonUtils.checkNull(paramMap.get("checkArr")); if(null != checkArr && !"".equals(checkArr)){ Map sqlParamMap = new HashMap(); sqlParamMap.put("checkArr",checkArr); sqlSession.delete("purchaseOrder.deletePurchaseOrderMaster",sqlParamMap); sqlSession.commit(); resultMap.put("result", true); resultMap.put("msg", Message.DELETE_SUCCESS); } }catch(Exception e){ resultMap.put("result", false); resultMap.put("msg", Message.DELETE_FAILED); sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } return resultMap; } /** * 구매의뢰 내용을 저장한다. * @param request * @param paramMap * @return */ public Map saveDeliveryResultInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER", writer); String partObjList[] = request.getParameterValues("OBJID"); if(null != partObjList && 0 < partObjList.length){ for(String targetObjId:partObjList){ Map sqlParamMep = new HashMap(); String remark = CommonUtils.checkNull(request.getParameter("REMARK_"+targetObjId)); int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("DELIVERY_QTY_"+targetObjId),"0")); int NON_ARRIVAL_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("NON_ARRIVAL_QTY_"+targetObjId),"0")); //int NON_ARRIVAL_QTY_RESULT = (NON_ARRIVAL_QTY-DELIVERY_QTY); //sqlParamMep.put("OBJID", CommonUtils.createObjId()); sqlParamMep.put("OBJID", CommonUtils.checkNull(request.getParameter("DH_OBJID_"+targetObjId))); sqlParamMep.put("PART_OBJID", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId))); sqlParamMep.put("LD_PART_OBJID_", CommonUtils.checkNull(request.getParameter("LD_PART_OBJID_"+targetObjId))); sqlParamMep.put("PURCHASE_ORDER_PART_OBJID", targetObjId); sqlParamMep.put("ORDER_QTY", CommonUtils.checkNull(request.getParameter("ORDER_QTY_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_QTY", DELIVERY_QTY); sqlParamMep.put("NON_ARRIVAL_QTY", NON_ARRIVAL_QTY); sqlParamMep.put("DELIVERY_PRICE", CommonUtils.checkNull(request.getParameter("DELIVERY_PRICE_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_PLACE_CD", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); sqlParamMep.put("LOCATION", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); sqlParamMep.put("DEFECT_QTY", CommonUtils.checkNull(request.getParameter("DEFECT_QTY_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_DATE_"+targetObjId))); sqlParamMep.put("DELIVERY_PLAN_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_PLAN_DATE_"+targetObjId))); sqlParamMep.put("MAKER", CommonUtils.checkNull(request.getParameter("MAKER_"+targetObjId))); sqlParamMep.put("UNIT", CommonUtils.checkNull(request.getParameter("UNIT_"+targetObjId))); sqlParamMep.put("REMARK", remark); sqlParamMep.put("WRITER", writer); sqlParamMep.put("STATUS", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId),"create")); sqlParamMep.put("INSPECT_DATE", CommonUtils.checkNull(request.getParameter("INSPECT_DATE_"+targetObjId),"")); sqlParamMep.put("DEFECT_REASON", CommonUtils.checkNull(request.getParameter("DEFECT_REASON_"+targetObjId),"")); sqlParamMep.put("DEFECT_RESP", CommonUtils.checkNull(request.getParameter("DEFECT_RESP_"+targetObjId),"")); sqlParamMep.put("RESULT", CommonUtils.checkNull(request.getParameter("RESULT_"+targetObjId),"")); sqlParamMep.put("DEFECT_NOTE", CommonUtils.checkNull(request.getParameter("DEFECT_NOTE_"+targetObjId),"")); //입고 이력 기록 if(0 < DELIVERY_QTY){ sqlSession.update("purchaseOrder.insertDeliveryHistory", sqlParamMep); //230509 "if(0 < DELIVERY_QTY){"안쪽으로 이동 //자재가 없을 경우 자재 생성 sqlSession.update("purchaseOrder.insertResourceMasterMng", sqlParamMep); //재고 처리 --------------------------------------------------- //장납기품 boolean is_ldPart = !CommonUtils.checkNull(request.getParameter("LD_PART_OBJID_"+targetObjId)).equals(""); Map lastInventoryMap = null; if(!is_ldPart){ //최종 재고 정보를 가져온다. lastInventoryMap = sqlSession.selectOne("purchaseOrder.getLastInventoryInfo",sqlParamMep); //해당구역의 재고를 초기화한다. sqlSession.update("purchaseOrder.resetInventoryRegist",sqlParamMep); }else{ //최종 재고 정보를 가져온다. lastInventoryMap = sqlSession.selectOne("purchaseOrder.getLastInventoryInfoLD",sqlParamMep); //해당구역의 재고를 초기화한다. sqlSession.update("purchaseOrder.resetInventoryRegistLD",sqlParamMep); } lastInventoryMap = CommonUtils.toUpperCaseMapKey(lastInventoryMap); String lastQty = "0"; if(null != lastInventoryMap){ lastQty = CommonUtils.checkNull(lastInventoryMap.get("QTY"),"0"); } String deliveryQty = CommonUtils.checkNull(request.getParameter("DELIVERY_QTY_"+targetObjId),"0"); int inventoryQty = (Integer.parseInt(lastQty)+Integer.parseInt(deliveryQty)); sqlParamMep.put("OBJID",CommonUtils.createObjId()); sqlParamMep.put("QTY",inventoryQty); sqlParamMep.put("REMARK", "(입고 자동입력) "+remark); //해당구역의 재고를 등록한다. if(!is_ldPart){ sqlSession.update("inventoryMng.insertDeliveryInventoryRegist",sqlParamMep); }else{ sqlSession.update("inventoryMng.insertDeliveryInventoryRegistLD",sqlParamMep); } } } } 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; } public void saveDeliveryInfo_old(HttpServletRequest request, Map paramMap) { SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] OBJIDs = request.getParameterValues("OBJID"); String[] DETAIL_GROUP = request.getParameterValues("DETAIL_GROUP"); int j=0; if(OBJIDs != null){ for(int i=0; i"+j); //int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("DELIVERY_QTY")[i],"0")); saveMap.put("OBJID" , CommonUtils.checkNull(OBJIDs[i],CommonUtils.createObjId())); //saveMap.put("PARENT_OBJID" , CommonUtils.checkNull(paramMap.get("PARENT_OBJID"))); //saveMap.put("ORDER_PART_OBJID" , CommonUtils.checkNull(paramMap.get("ORDER_PART_OBJID_"+j))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LD_PART_OBJID" , CommonUtils.checkNull(paramMap.get("LD_PART_OBJID_"+j))); //saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); //saveMap.put("GROUP_SEQ" , CommonUtils.checkNull(request.getParameterValues("GROUP_SEQ")[j])); saveMap.put("SEQ" , CommonUtils.checkNull(request.getParameterValues("SEQ")[i])); saveMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); saveMap.put("RECEIPT_DATE" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_DATE")[i])); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); //saveMap.put("ERROR_QTY" , CommonUtils.checkNull(request.getParameterValues("ERROR_QTY")[i],"0")); //saveMap.put("ERROR_REASON" , CommonUtils.checkNull(request.getParameterValues("ERROR_REASON")[i])); //saveMap.put("ATTRIBUTION" , CommonUtils.checkNull(request.getParameterValues("ATTRIBUTION")[i])); //입고 이력 기록 if(0 < Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0"))){ if(!CommonUtils.checkNull(request.getParameterValues("INVENTORY_STATUS")[i]).equals("Y")){ System.out.println("saveMap ------->"+saveMap); sqlSession.update("supplyChainMgmt.saveDeliveryInfo", saveMap); //sqlSession.update("supplyChainMgmt.saveInventoryStatusInfo", saveMap); //자재가 없을 경우 자재 생성 saveMap.put("CONTRACT_OBJID",CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID"))); saveMap.put("UNIT",CommonUtils.checkNull(paramMap.get("UNIT_CODE"))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); Map InventoryMap = null; String parentobjid = ""; //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } // 동시발주 if(CommonUtils.checkNull(paramMap.get("MULTI_YN")).equals("Y")){ Map sqlParamMap = new HashMap(); String ORDER_OBJID = CommonUtils.checkNull(paramMap.get("ORDER_OBJID")); String CONTRACT_MGMT_OBJID = CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID")); sqlParamMap.put("MULTI_MASTER_OBJID", ORDER_OBJID); sqlParamMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); sqlParamMap.put("PARENT_OBJID", parentobjid); Map sameInventoryInMap = sqlSession.selectOne("inventoryMng.getSameInventoryInQTYInfo",sqlParamMap); if(null!=sameInventoryInMap){ int inventoryQty = Integer.parseInt(CommonUtils.checkNull(sameInventoryInMap.get("INVENTORY_QTY"), "0")); //List> sameInventoryInList = new ArrayList>(); //sameInventoryInList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameInventoryInList", sqlParamMap); int RECEIPT_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); int ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("ORDER_QTY_" + j), "0")); if(inventoryQty <= ORDER_QTY){ Map historyMap = new HashMap(); int remainingReceiptQty = RECEIPT_QTY; int insertQty = Math.min(ORDER_QTY-inventoryQty, remainingReceiptQty); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", ORDER_OBJID); historyMap.put("PURCHASE_ORDER_SUB_OBJID", ORDER_OBJID); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; List> sameProjectList = new ArrayList>(); //String CONTRACT_MGMT_OBJID = CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID")); sameProjectList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameProjectMasterList", sqlParamMap); for (Map projectItem : sameProjectList) { String contract_mgmt_objid = projectItem.get("contract_mgmt_objid"); String purchase_order_sub_objid = projectItem.get("objid"); String unit = projectItem.get("unit_code"); saveMap.put("CONTRACT_OBJID", contract_mgmt_objid); saveMap.put("UNIT", unit); //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } sqlParamMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); //sqlParamMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); sameInventoryInMap = sqlSession.selectOne("inventoryMng.getSameInventoryInQTYInfo",sqlParamMap); if(null!=sameInventoryInMap){ inventoryQty = Integer.parseInt(CommonUtils.checkNull(sameInventoryInMap.get("INVENTORY_QTY"), "0")); }else{ inventoryQty = 0; } insertQty = Math.min(ORDER_QTY-inventoryQty, remainingReceiptQty); //Map historyMap = new HashMap(); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; } }else{ } }else{ int RECEIPT_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); int ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("ORDER_QTY_" + j), "0")); Map historyMap = new HashMap(); int remainingReceiptQty = RECEIPT_QTY; int insertQty = Math.min(ORDER_QTY, remainingReceiptQty); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); // Determine the quantity to insert based on remainingReceiptQty and ORDER_QTY historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", ORDER_OBJID); historyMap.put("PURCHASE_ORDER_SUB_OBJID", ORDER_OBJID); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; List> sameProjectList = new ArrayList>(); sameProjectList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameProjectMasterList", sqlParamMap); // Iterate over each item in the sameProjectList for (Map projectItem : sameProjectList) { String contract_mgmt_objid = projectItem.get("contract_mgmt_objid"); String purchase_order_sub_objid = projectItem.get("objid"); String unit = projectItem.get("unit_code"); saveMap.put("CONTRACT_OBJID", contract_mgmt_objid); saveMap.put("UNIT", unit); //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } insertQty = Math.min(ORDER_QTY, remainingReceiptQty); //Map historyMap = new HashMap(); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); // Determine the quantity to insert based on remainingReceiptQty and ORDER_QTY historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; } } }else{ Map historyMap = new HashMap(); //자재 재고 등록 historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("CONTRACT_MGMT_OBJID",CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID"))); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } } } } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } } public void saveDeliveryInfo(HttpServletRequest request, Map paramMap) { SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] OBJIDs = request.getParameterValues("OBJID"); String[] DETAIL_GROUP = request.getParameterValues("DETAIL_GROUP"); int j=0; if(OBJIDs != null){ for(int i=0; i"+j); System.out.println("IIIIIIIIIIIIIIII ------->"+i); int REAL_ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("REAL_ORDER_QTY_"+j), "0"));//1 //int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("DELIVERY_QTY")[i],"0")); saveMap.put("OBJID" , CommonUtils.checkNull(OBJIDs[i],CommonUtils.createObjId())); saveMap.put("PARENT_OBJID" , CommonUtils.checkNull(paramMap.get("PARENT_OBJID"))); saveMap.put("ORDER_PART_OBJID" , CommonUtils.checkNull(paramMap.get("ORDER_PART_OBJID_"+j))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LD_PART_OBJID" , CommonUtils.checkNull(paramMap.get("LD_PART_OBJID_"+j))); //saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); saveMap.put("GROUP_SEQ" , CommonUtils.checkNull(request.getParameterValues("GROUP_SEQ")[i])); saveMap.put("SEQ" , CommonUtils.checkNull(request.getParameterValues("SEQ")[i])); saveMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); saveMap.put("ARRIVAL_QTY" , CommonUtils.checkNull(request.getParameterValues("ARRIVAL_QTY")[i],"0")); saveMap.put("RECEIPT_INV_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_INV_QTY")[i],"0")); saveMap.put("RECEIPT_DATE" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_DATE")[i])); saveMap.put("ARRIVAL_PLAN_DATE" , CommonUtils.checkNull(request.getParameterValues("ARRIVAL_PLAN_DATE")[i])); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); saveMap.put("ORDER_QTY" , REAL_ORDER_QTY); //saveMap.put("ERROR_QTY" , CommonUtils.checkNull(request.getParameterValues("ERROR_QTY")[i],"0")); //saveMap.put("ERROR_REASON" , CommonUtils.checkNull(request.getParameterValues("ERROR_REASON")[i])); //saveMap.put("ATTRIBUTION" , CommonUtils.checkNull(request.getParameterValues("ATTRIBUTION")[i])); System.out.println("saveMap ------->"+saveMap); sqlSession.update("supplyChainMgmt.saveDeliveryInfo", saveMap); //ARRIVAL_PLAN int receiptQty = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); int receiptInvQty = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_INV_QTY")[i],"0")); //입고 이력 기록 if(0 < receiptQty){ /*if(!"Y".equals(CommonUtils.checkNull(request.getParameterValues("INVENTORY_STATUS")[i]))){*/ if(0 < (receiptQty - receiptInvQty)){ sqlSession.update("supplyChainMgmt.saveInventoryStatusInfo", saveMap); //INVENTORY_STATUS = 'Y' //자재가 없을 경우 자재 생성 saveMap.put("CONTRACT_OBJID",CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID"))); saveMap.put("UNIT",CommonUtils.checkNull(paramMap.get("UNIT_CODE"))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); Map InventoryMap = null; String parentobjid = ""; //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); //objid=358264223 if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); //parentobjid=358264223 }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } // 동시발주 if(CommonUtils.checkNull(paramMap.get("MULTI_YN")).equals("Y")){ System.out.println("동시발주 ------->"); Map sqlParamMap = new HashMap(); String ORDER_OBJID = CommonUtils.checkNull(paramMap.get("ORDER_OBJID")); String CONTRACT_MGMT_OBJID = CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID")); sqlParamMap.put("MULTI_MASTER_OBJID", ORDER_OBJID); sqlParamMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); sqlParamMap.put("PARENT_OBJID", parentobjid); Map sameInventoryInMap = sqlSession.selectOne("inventoryMng.getSameInventoryInQTYInfo",sqlParamMap); //inventoryQty=1 if(null!=sameInventoryInMap){ int inventoryQty = Integer.parseInt(CommonUtils.checkNull(sameInventoryInMap.get("INVENTORY_QTY"), "0")); //1 //List> sameInventoryInList = new ArrayList>(); //sameInventoryInList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameInventoryInList", sqlParamMap); int RECEIPT_QTY = receiptQty - receiptInvQty;//1 int ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("ORDER_QTY_"+j), "0"));//1 if(inventoryQty <= ORDER_QTY){ Map historyMap = new HashMap(); int remainingReceiptQty = RECEIPT_QTY; int insertQty = Math.min(ORDER_QTY-inventoryQty, remainingReceiptQty); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", ORDER_OBJID); historyMap.put("PURCHASE_ORDER_SUB_OBJID", ORDER_OBJID); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; List> sameProjectList = new ArrayList>(); //String CONTRACT_MGMT_OBJID = CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID")); sameProjectList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameProjectMasterList", sqlParamMap); //3개 for (Map projectItem : sameProjectList) { String contract_mgmt_objid = projectItem.get("contract_mgmt_objid"); String purchase_order_sub_objid = projectItem.get("objid"); String unit = projectItem.get("unit_code"); saveMap.put("CONTRACT_OBJID", contract_mgmt_objid); saveMap.put("UNIT", unit); //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); // objid = 1312015592 if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); // parentobjid = 1312015592 }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } sqlParamMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); sqlParamMap.put("PARENT_OBJID", parentobjid); //sqlParamMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); sameInventoryInMap = sqlSession.selectOne("inventoryMng.getSameInventoryInQTYInfo",sqlParamMap); if(null!=sameInventoryInMap){ inventoryQty = Integer.parseInt(CommonUtils.checkNull(sameInventoryInMap.get("INVENTORY_QTY"), "0")); }else{ inventoryQty = 0; } insertQty = Math.min(ORDER_QTY-inventoryQty, remainingReceiptQty); //Map historyMap = new HashMap(); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; } }else{ } }else{ int RECEIPT_QTY = receiptQty - receiptInvQty; int ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("ORDER_QTY_"+j), "0")); Map historyMap = new HashMap(); int remainingReceiptQty = RECEIPT_QTY; int insertQty = Math.min(ORDER_QTY, remainingReceiptQty); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); // Determine the quantity to insert based on remainingReceiptQty and ORDER_QTY historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", CONTRACT_MGMT_OBJID); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", ORDER_OBJID); historyMap.put("PURCHASE_ORDER_SUB_OBJID", ORDER_OBJID); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; List> sameProjectList = new ArrayList>(); sameProjectList = (ArrayList)sqlSession.selectList("purchaseOrder.selectSameProjectMasterList", sqlParamMap); // Iterate over each item in the sameProjectList for (Map projectItem : sameProjectList) { String contract_mgmt_objid = projectItem.get("contract_mgmt_objid"); String purchase_order_sub_objid = projectItem.get("objid"); String unit = projectItem.get("unit_code"); saveMap.put("CONTRACT_OBJID", contract_mgmt_objid); saveMap.put("UNIT", unit); //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ System.out.println("iiiiii ------->"+i); InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } insertQty = Math.min(ORDER_QTY, remainingReceiptQty); //Map historyMap = new HashMap(); historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("WRITER" , paramMap.get("WRITER")); // Determine the quantity to insert based on remainingReceiptQty and ORDER_QTY historyMap.put("RECEIPT_QTY", insertQty); historyMap.put("CONTRACT_MGMT_OBJID", contract_mgmt_objid); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", purchase_order_sub_objid); if (insertQty > 0) { sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } remainingReceiptQty -= insertQty; } } }else{ Map historyMap = new HashMap(); //자재 재고 등록 historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); historyMap.put("WRITER" , paramMap.get("WRITER")); historyMap.put("CONTRACT_MGMT_OBJID",CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID"))); historyMap.put("PURCHASE_ORDER_MASTER_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); historyMap.put("PURCHASE_ORDER_SUB_OBJID", CommonUtils.checkNull(paramMap.get("ORDER_OBJID"))); sqlSession.insert("inventoryMng.insertInventoryIn", historyMap); } } /*}*/ } } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } } public void saveDeliveryETCInfo(HttpServletRequest request, Map paramMap) { SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] OBJIDs = request.getParameterValues("OBJID"); String[] DETAIL_GROUP = request.getParameterValues("DETAIL_GROUP"); int j=0; if(OBJIDs != null){ for(int i=0; i"+j); int REAL_ORDER_QTY = Integer.parseInt(CommonUtils.checkNull(paramMap.get("REAL_ORDER_QTY_"+j), "0"));//1 saveMap.put("OBJID" , CommonUtils.checkNull(OBJIDs[i],CommonUtils.createObjId())); saveMap.put("PARENT_OBJID" , CommonUtils.checkNull(paramMap.get("PARENT_OBJID"))); saveMap.put("ORDER_PART_OBJID" , CommonUtils.checkNull(paramMap.get("ORDER_PART_OBJID_"+(i+1)))); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); saveMap.put("GROUP_SEQ" , CommonUtils.checkNull(request.getParameterValues("GROUP_SEQ")[i])); saveMap.put("SEQ" , CommonUtils.checkNull(request.getParameterValues("SEQ")[i])); saveMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); saveMap.put("ARRIVAL_QTY" , CommonUtils.checkNull(request.getParameterValues("ARRIVAL_QTY")[i],"0")); saveMap.put("RECEIPT_DATE" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_DATE")[i])); saveMap.put("ARRIVAL_PLAN_DATE" , CommonUtils.checkNull(request.getParameterValues("ARRIVAL_PLAN_DATE")[i])); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); saveMap.put("ORDER_QTY" , REAL_ORDER_QTY); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); System.out.println("saveMap::: ------->"+saveMap); sqlSession.update("supplyChainMgmt.saveDeliveryETCInfo", saveMap); int receiptQty = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); //입고 이력 기록 if(0 < receiptQty){ sqlSession.update("supplyChainMgmt.saveInventoryStatusInfo", saveMap); //INVENTORY_STATUS = 'Y' } } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } } public void saveDeliveryInvalidInfo(HttpServletRequest request, Map paramMap) { SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] OBJIDs = request.getParameterValues("OBJID"); String[] DETAIL_GROUP = request.getParameterValues("DETAIL_GROUP"); int j=0; if(OBJIDs != null){ for(int i=0; i"+j); //int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("DELIVERY_QTY")[i],"0")); saveMap.put("OBJID" , CommonUtils.checkNull(OBJIDs[i],CommonUtils.createObjId())); //saveMap.put("PARENT_OBJID" , CommonUtils.checkNull(paramMap.get("PARENT_OBJID"))); //saveMap.put("ORDER_PART_OBJID" , CommonUtils.checkNull(paramMap.get("ORDER_PART_OBJID_"+j))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LD_PART_OBJID" , CommonUtils.checkNull(paramMap.get("LD_PART_OBJID_"+j))); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); //saveMap.put("GROUP_SEQ" , CommonUtils.checkNull(request.getParameterValues("GROUP_SEQ")[j])); //saveMap.put("SEQ" , CommonUtils.checkNull(request.getParameterValues("SEQ")[i])); //saveMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); //saveMap.put("RECEIPT_DATE" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_DATE")[i])); //saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); //saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); saveMap.put("ERROR_QTY" , CommonUtils.checkNull(request.getParameterValues("ERROR_QTY")[i],"0")); saveMap.put("ERROR_REASON" , CommonUtils.checkNull(request.getParameterValues("ERROR_REASON")[i])); saveMap.put("ATTRIBUTION" , CommonUtils.checkNull(request.getParameterValues("ATTRIBUTION")[i])); System.out.println("saveMap ------->"+saveMap); sqlSession.update("supplyChainMgmt.saveDeliveryInvalidInfo", saveMap); //입고 이력 기록 /*if(0 < Integer.parseInt(CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0"))){ sqlSession.update("supplyChainMgmt.saveInventoryStatusInfo", saveMap); if(!CommonUtils.checkNull(request.getParameterValues("INVENTORY_STATUS")[i]).equals("Y")){ //자재가 없을 경우 자재 생성 saveMap.put("CONTRACT_OBJID",CommonUtils.checkNull(paramMap.get("CONTRACT_MGMT_OBJID"))); saveMap.put("UNIT",CommonUtils.checkNull(paramMap.get("UNIT_CODE"))); saveMap.put("PART_OBJID" , CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j))); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); Map InventoryMap = null; Map historyMap = new HashMap(); String parentobjid = ""; //파트가 비어 있지 않으면 인서트 if(!"".equals(CommonUtils.checkNull(paramMap.get("PART_OBJID_"+j)))){ InventoryMap = sqlSession.selectOne("inventoryMng.getInventoryInfo",saveMap); if(null!=InventoryMap){ parentobjid =CommonUtils.checkNull(InventoryMap.get("OBJID")); }else{ parentobjid = CommonUtils.createObjId(); saveMap.put("OBJID" , parentobjid); sqlSession.insert("inventoryMng.insertInventory",saveMap); } } //자재 재고 등록 historyMap.put("OBJID", CommonUtils.createObjId()); historyMap.put("PARENT_OBJID", parentobjid); historyMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); historyMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); historyMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); sqlSession.insert("inventoryMng.insertInventoryIn",historyMap); } }*/ } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); throw e; }finally{ sqlSession.close(); } } /** * 입고이력 수정한다. * @param request * @param paramMap * @return */ public Map saveDeliveryResultHistoryInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER", writer); String partObjList[] = request.getParameterValues("OBJID"); if(null != partObjList && 0 < partObjList.length){ for(String targetObjId:partObjList){ Map sqlParamMep = new HashMap(); String remark = CommonUtils.checkNull(request.getParameter("REMARK_"+targetObjId)); int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("DELIVERY_QTY_"+targetObjId),"0")); int NON_ARRIVAL_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("NON_ARRIVAL_QTY_"+targetObjId),"0")); //int NON_ARRIVAL_QTY_RESULT = (NON_ARRIVAL_QTY-DELIVERY_QTY); //sqlParamMep.put("OBJID", CommonUtils.createObjId()); sqlParamMep.put("OBJID", CommonUtils.checkNull(request.getParameter("DH_OBJID_"+targetObjId))); sqlParamMep.put("PART_OBJID", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId))); sqlParamMep.put("LD_PART_OBJID_", CommonUtils.checkNull(request.getParameter("LD_PART_OBJID_"+targetObjId))); sqlParamMep.put("PURCHASE_ORDER_PART_OBJID", targetObjId); sqlParamMep.put("ORDER_QTY", CommonUtils.checkNull(request.getParameter("ORDER_QTY_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_QTY", DELIVERY_QTY); sqlParamMep.put("NON_ARRIVAL_QTY", NON_ARRIVAL_QTY); sqlParamMep.put("DELIVERY_PRICE", CommonUtils.checkNull(request.getParameter("DELIVERY_PRICE_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_PLACE_CD", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); sqlParamMep.put("LOCATION", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); sqlParamMep.put("DEFECT_QTY", CommonUtils.checkNull(request.getParameter("DEFECT_QTY_"+targetObjId),"0")); sqlParamMep.put("DELIVERY_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_DATE_"+targetObjId))); sqlParamMep.put("DELIVERY_PLAN_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_PLAN_DATE_"+targetObjId))); sqlParamMep.put("MAKER", CommonUtils.checkNull(request.getParameter("MAKER_"+targetObjId))); sqlParamMep.put("UNIT", CommonUtils.checkNull(request.getParameter("UNIT_"+targetObjId))); sqlParamMep.put("REMARK", remark); sqlParamMep.put("WRITER", writer); sqlParamMep.put("STATUS", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId),"create")); sqlParamMep.put("INSPECT_DATE", CommonUtils.checkNull(request.getParameter("INSPECT_DATE_"+targetObjId),"")); sqlParamMep.put("DEFECT_REASON", CommonUtils.checkNull(request.getParameter("DEFECT_REASON_"+targetObjId),"")); sqlParamMep.put("DEFECT_RESP", CommonUtils.checkNull(request.getParameter("DEFECT_RESP_"+targetObjId),"")); sqlParamMep.put("RESULT", CommonUtils.checkNull(request.getParameter("RESULT_"+targetObjId),"")); sqlParamMep.put("DEFECT_NOTE", CommonUtils.checkNull(request.getParameter("DEFECT_NOTE_"+targetObjId),"")); //입고 이력 수정 sqlSession.update("purchaseOrder.updateDeliveryHistory", sqlParamMep); /* if(0 < DELIVERY_QTY){ //자재가 없을 경우 자재 생성 sqlSession.update("purchaseOrder.insertResourceMasterMng", sqlParamMep); //재고 처리 --------------------------------------------------- //장납기품 boolean is_ldPart = !CommonUtils.checkNull(request.getParameter("LD_PART_OBJID_"+targetObjId)).equals(""); Map lastInventoryMap = null; if(!is_ldPart){ //최종 재고 정보를 가져온다. lastInventoryMap = sqlSession.selectOne("purchaseOrder.getLastInventoryInfo",sqlParamMep); //해당구역의 재고를 초기화한다. sqlSession.update("purchaseOrder.resetInventoryRegist",sqlParamMep); }else{ //최종 재고 정보를 가져온다. lastInventoryMap = sqlSession.selectOne("purchaseOrder.getLastInventoryInfoLD",sqlParamMep); //해당구역의 재고를 초기화한다. sqlSession.update("purchaseOrder.resetInventoryRegistLD",sqlParamMep); } lastInventoryMap = CommonUtils.toUpperCaseMapKey(lastInventoryMap); String lastQty = "0"; if(null != lastInventoryMap){ lastQty = CommonUtils.checkNull(lastInventoryMap.get("QTY"),"0"); } String deliveryQty = CommonUtils.checkNull(request.getParameter("DELIVERY_QTY_"+targetObjId),"0"); int inventoryQty = (Integer.parseInt(lastQty)+Integer.parseInt(deliveryQty)); sqlParamMep.put("OBJID",CommonUtils.createObjId()); sqlParamMep.put("QTY",inventoryQty); sqlParamMep.put("REMARK", "(입고 자동입력) "+remark); //해당구역의 재고를 등록한다. if(!is_ldPart){ sqlSession.update("inventoryMng.insertDeliveryInventoryRegist",sqlParamMep); }else{ sqlSession.update("inventoryMng.insertDeliveryInventoryRegistLD",sqlParamMep); } } */ } } 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; } /** * 단가 저장 * @param request * @param paramMap * @return */ public Map saveDeliveryResultCostInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); HttpSession session = request.getSession(); PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); String writer = CommonUtils.checkNull(person.getUserId()); paramMap.put("WRITER", writer); String partObjList[] = request.getParameterValues("OBJID"); if(null != partObjList && 0 < partObjList.length){ for(String targetObjId:partObjList){ Map sqlParamMep = new HashMap(); int DELIVERY_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("DELIVERY_QTY_"+targetObjId),"0")); int NON_ARRIVAL_QTY = Integer.parseInt(CommonUtils.checkNull(request.getParameter("NON_ARRIVAL_QTY_"+targetObjId),"0")); //int NON_ARRIVAL_QTY_RESULT = (NON_ARRIVAL_QTY-DELIVERY_QTY); String DPP_OBJID = CommonUtils.checkNull(request.getParameter("DPP_OBJID_"+targetObjId)); if(CommonUtils.isBlank(DPP_OBJID)){ sqlParamMep.put("OBJID", CommonUtils.createObjId()); }else{ sqlParamMep.put("OBJID", DPP_OBJID); } sqlParamMep.put("PART_OBJID", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId))); sqlParamMep.put("LD_PART_OBJID", CommonUtils.checkNull(request.getParameter("LD_PART_OBJID_"+targetObjId))); sqlParamMep.put("PURCHASE_ORDER_PART_OBJID", targetObjId); // sqlParamMep.put("ORDER_QTY", CommonUtils.checkNull(request.getParameter("ORDER_QTY_"+targetObjId),"0")); // sqlParamMep.put("DELIVERY_QTY", DELIVERY_QTY); // sqlParamMep.put("NON_ARRIVAL_QTY", NON_ARRIVAL_QTY); // sqlParamMep.put("DELIVERY_PRICE", CommonUtils.checkNull(request.getParameter("DELIVERY_PRICE_"+targetObjId),"0")); // sqlParamMep.put("DELIVERY_PLACE_CD", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); // sqlParamMep.put("LOCATION", CommonUtils.checkNull(request.getParameter("DELIVERY_PLACE_CD_"+targetObjId))); // sqlParamMep.put("DEFECT_QTY", CommonUtils.checkNull(request.getParameter("DEFECT_QTY_"+targetObjId),"0")); // sqlParamMep.put("DELIVERY_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_DATE_"+targetObjId))); // sqlParamMep.put("DELIVERY_PLAN_DATE", CommonUtils.checkNull(request.getParameter("DELIVERY_PLAN_DATE_"+targetObjId))); // sqlParamMep.put("MAKER", CommonUtils.checkNull(request.getParameter("MAKER_"+targetObjId))); // sqlParamMep.put("UNIT", CommonUtils.checkNull(request.getParameter("UNIT_"+targetObjId))); // sqlParamMep.put("REMARK", remark); // sqlParamMep.put("WRITER", writer); // sqlParamMep.put("STATUS", CommonUtils.checkNull(request.getParameter("PART_OBJID_"+targetObjId),"create")); sqlParamMep.put("PRICE", CommonUtils.checkNull(request.getParameter("PARTNER_PRICE_"+targetObjId),"0")); sqlParamMep.put("PRICE1", CommonUtils.checkNull(request.getParameter("PRICE1_"+targetObjId),"0")); sqlParamMep.put("PRICE2", CommonUtils.checkNull(request.getParameter("PRICE2_"+targetObjId),"0")); sqlParamMep.put("PRICE3", CommonUtils.checkNull(request.getParameter("PRICE3_"+targetObjId),"0")); sqlParamMep.put("PRICE_SUM", CommonUtils.checkNull(request.getParameter("PRICE_SUM_"+targetObjId),"0")); //단가 등록/수정 sqlSession.update("purchaseOrder.mergeDeliveryPartPrice", sqlParamMep); //구매봄 단가 수정 //sqlParamMep.put("BOM_REPORT_OBJID", paramMap.get("BOM_REPORT_OBJID")); sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", sqlParamMep); //발주서 part 단가 수정(230504 단가관리 저장시 발주서 금액도 업데이트 적용) sqlSession.update("purchaseOrder.updatePurchaseOrderPartPriceByDeliveryCost", sqlParamMep); //입고 이력 기록 //sqlSession.update("purchaseOrder.insertDeliveryHistory", sqlParamMep); } //발주서 단가 수정(230510 단가관리 저장시 발주서 금액도 업데이트 적용) sqlSession.update("purchaseOrder.updatePurchaseOrderriceByDeliveryCost", 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; } /** * 발주목록 * @param paramMap * @return */ public List getDeliveryResultHistoryList(HttpServletRequest request,Map paramMap){ List> resultList = new ArrayList(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultList = (ArrayList)sqlSession.selectList("purchaseOrder.getDeliveryResultHistoryList", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultList); } //발주서 저장(등록/수정) public void savePurchaseOrder_new(HttpServletRequest request,Map paramMap) throws Exception{ SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(false); String MASTER_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("MASTER_OBJID")); String delivery_date = CommonUtils.nullToEmpty((String)paramMap.get("DELIVERY_DATE")); String CONTRACT_MGMT_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("CONTRACT_MGMT_OBJID")); String UNIT_CODE = CommonUtils.nullToEmpty((String)paramMap.get("UNIT_CODE")); String UNIT_NAME = ""; /* String TYPE = CommonUtils.nullToEmpty((String)paramMap.get("TYPE")); //발주부품 String TYPE_STANDARD = "0001069"; //발주구분코드:일반부품 String TYPE_LONG_DLV = "0001070"; //발주구분코드:장납기품 String TYPE_ETC = "0001538"; //발주구분코드:잡자재 String TYPE_SUBCONTRACT = "0001654";//발주구분코드:사급품 boolean isMultiCheck = false; if(TYPE_STANDARD.equals(TYPE)) { isMultiCheck = true; } */ //project_no 조회 String masterProjectNo = ""; Map projectMap = new HashMap(); List> projectList = new ArrayList>(); Map sqlParamMap = new HashMap(); if(StringUtils.isNotBlank(CONTRACT_MGMT_OBJID)) { sqlParamMap.put("OBJID", CONTRACT_MGMT_OBJID); projectList = (ArrayList)sqlSession.selectList("project.getProjectMngInfo", sqlParamMap); if(projectList != null && !projectList.isEmpty()) { projectMap = projectList.get(0); if(projectList != null) { masterProjectNo = (String)projectMap.get("project_no"); } } } //마스터 등록 paramMap.put("OBJID", MASTER_OBJID); paramMap.put("STATUS", "create"); int cnt = sqlSession.update("purchaseOrder.mergePurchaseOrderMaster", paramMap); List> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid"))); //sqlSession = SqlMapConfig.getInstance().getSqlSession(false); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); cnt = sqlSession.delete("purchaseOrder.initPurchaseOrderPart", paramMap); //파트 등록 int [] ARR_STOCK_QTY = new int[gridDataList.size()]; //실발주수량 for(int i=0; iLink Text"; if(htmlString.indexOf("") > -1) { /* java 1.8이상 // 태그에서 PART_NO만 추출 //class='pointer'>" + rowObject.PART_NO + " // JSoup을 사용하여 HTML 파싱 Document doc = Jsoup.parse(htmlString); // 태그를 선택 Element linkElement = doc.select("a").first(); // 태그 안의 텍스트 값 가져오기 String linkText = linkElement.text(); */ String innerTextString = htmlString.substring(htmlString.lastIndexOf("\">")+2, htmlString.lastIndexOf("")); insertMap.put("PART_NO", innerTextString); //System.out.println("innerTextString:"+innerTextString); } insertMap.put("OBJID", CommonUtils.createObjId()); insertMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); //구매봄 단가 수정 //sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", insertMap); } //동시발주 paramMap.put("MULTI_MASTER_YN", "N"); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); paramMap.put("MULTI_MASTER_OBJID", MASTER_OBJID); List APPLICATION_OBJID_LIST = new ArrayList(); List PROJECT_NO_LIST = new ArrayList(); //sqlSession.delete("purchaseOrder.delPurchaseOrderMulti", paramMap); //sqlSession.delete("purchaseOrder.delPurchaseOrderPart", paramMap); //sqlSession.delete("purchaseOrder.delPurchaseOrderMaster", paramMap); sqlParamMap.clear(); sqlParamMap.put("project_objid", CONTRACT_MGMT_OBJID); sqlParamMap.put("unitCode", UNIT_CODE); List> resultListUnit = (ArrayList)sqlSession.selectList("common.getUnitCodeList", sqlParamMap); //unit 조회 if(resultListUnit == null || resultListUnit.isEmpty()) { throw new Exception("UNIT이 존재하지 않습니다."); }{ UNIT_NAME = (String)resultListUnit.get(0).get("task_name"); } //동시발주 boolean isMulti = false; String UNIT_CODE2 = ""; Map insertMap = new HashMap(); List> sameProjectList = new ArrayList>(); //동시발주건 for(int j=1; j<11; j++){ Map sameProjectMap = new HashMap(); String APPLICATION_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_OBJID"+j)); String APPLICATION_PROJECT_NO = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_PROJECT_NO"+j)); //프로젝트 objid String APPLICATION_PROJECT_NUMBER = CommonUtils.nullToEmpty((String)paramMap.get("APPLICATION_PROJECT_NUMBER"+j)); //프로젝트 no String DELIVERY_PLAN_DATE = CommonUtils.nullToEmpty((String)paramMap.get("DELIVERY_PLAN_DATE"+j)); String DELIVERY_PLAN_QTY = CommonUtils.nullToEmpty((String)paramMap.get("DELIVERY_PLAN_QTY"+j)); if(!CommonUtils.isBlank(APPLICATION_PROJECT_NO)) { isMulti = true; sameProjectMap.put("APPLICATION_OBJID ".trim(), APPLICATION_OBJID ); sameProjectMap.put("APPLICATION_PROJECT_NO ".trim(), APPLICATION_PROJECT_NO ); sameProjectMap.put("APPLICATION_PROJECT_NUMBER".trim(), APPLICATION_PROJECT_NUMBER); sameProjectMap.put("DELIVERY_PLAN_DATE ".trim(), DELIVERY_PLAN_DATE ); sameProjectMap.put("DELIVERY_PLAN_QTY ".trim(), DELIVERY_PLAN_QTY ); sameProjectList.add(sameProjectMap); } } if(isMulti) { Collections.sort(sameProjectList, new Comparator>() { @Override public int compare(Map o1, Map o2) { return o1.get("APPLICATION_PROJECT_NUMBER").compareTo(o2.get("APPLICATION_PROJECT_NUMBER")); } }); /* for (Map map : sameProjectList) { System.out.println("APPLICATION_PROJECT_NUMBER:"+map.get("APPLICATION_PROJECT_NUMBER")); } */ for(int j=sameProjectList.size(); j>0; j--){ //거꾸로 Map sameProjectMap = sameProjectList.get(j-1); String APPLICATION_OBJID = CommonUtils.nullToEmpty((String)sameProjectMap.get("APPLICATION_OBJID")); String APPLICATION_PROJECT_NO = CommonUtils.nullToEmpty((String)sameProjectMap.get("APPLICATION_PROJECT_NO")); //프로젝트 objid String APPLICATION_PROJECT_NUMBER = CommonUtils.nullToEmpty((String)sameProjectMap.get("APPLICATION_PROJECT_NUMBER")); //프로젝트 no String DELIVERY_PLAN_DATE = CommonUtils.nullToEmpty((String)sameProjectMap.get("DELIVERY_PLAN_DATE")); String DELIVERY_PLAN_QTY = CommonUtils.nullToEmpty((String)sameProjectMap.get("DELIVERY_PLAN_QTY")); if(!CommonUtils.isBlank(APPLICATION_PROJECT_NO)) { isMulti = true; sqlParamMap.clear(); sqlParamMap.put("project_objid", APPLICATION_PROJECT_NO); sqlParamMap.put("unitName", UNIT_NAME); //sqlParamMap.put("unit_code", UNIT_CODE); List> resultListUnit2 = (ArrayList)sqlSession.selectList("common.getUnitCodeList", sqlParamMap); //unit 조회 if(resultListUnit2 == null || resultListUnit2.isEmpty()) { throw new Exception(APPLICATION_PROJECT_NUMBER + " - " + UNIT_NAME + " UNIT이 존재하지 않습니다."); }{ UNIT_CODE2 =(String)resultListUnit2.get(0).get("code"); } sqlParamMap.clear(); sqlParamMap.put("project_no", APPLICATION_PROJECT_NO); sqlParamMap.put("unit_code", UNIT_CODE2); List> resultListBom = (ArrayList)sqlSession.selectList("partMng.getBOMStandardStructureList", sqlParamMap); //봄 조회 String BOM_OBJID = ""; if(resultListBom == null || resultListBom.isEmpty()) { throw new Exception(APPLICATION_PROJECT_NUMBER + " 동시발주건 BOM이 존재하지 않습니다."); }{ BOM_OBJID = (String)resultListBom.get(0).get("objid"); } sqlParamMap.clear(); sqlParamMap.put("SEARCH_PARENT_OBJID", BOM_OBJID); List> resultListSBom = (ArrayList)sqlSession.selectList("salesMng.salesBomReportInfo2", sqlParamMap); //구매봄 조회 if(resultListSBom == null || resultListSBom.isEmpty()) { throw new Exception(APPLICATION_PROJECT_NUMBER + " 동시발주건 구매BOM이 존재하지 않습니다."); } //String newMASTER_OBJID = CommonUtils.createObjId(); APPLICATION_OBJID = CommonUtils.checkNull(APPLICATION_OBJID, CommonUtils.createObjId()); APPLICATION_OBJID_LIST.add(APPLICATION_OBJID); PROJECT_NO_LIST.add(APPLICATION_PROJECT_NO); paramMap.put("OBJID", APPLICATION_OBJID); paramMap.put("CONTRACT_MGMT_OBJID", APPLICATION_PROJECT_NO); paramMap.put("UNIT_CODE", UNIT_CODE2); //해당 프로젝트의 유닛으로 변경 paramMap.put("BOM_REPORT_OBJID", BOM_OBJID);//해당 프로젝트의 BOM_OBJID으로 변경 //PURCHASE_ORDER_NO paramMap.put("MULTI_MASTER_OBJID", MASTER_OBJID); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", APPLICATION_OBJID); paramMap.put("PROJECT_OBJID", APPLICATION_PROJECT_NO); paramMap.put("DELIVERY_PLAN_DATE", DELIVERY_PLAN_DATE); paramMap.put("DELIVERY_PLAN_QTY", DELIVERY_PLAN_QTY); paramMap.put("MULTI_YN", "Y"); cnt = sqlSession.update("purchaseOrder.mergePurchaseOrderMaster", paramMap); //cnt = sqlSession.update("purchaseOrder.mergePurchaseOrderMulti", paramMap); cnt = sqlSession.delete("purchaseOrder.initPurchaseOrderPart", paramMap); //발주서 파트 삭제 boolean changeOrderQty = false; String partObjid = ""; for(int i=0; i= ORDER_QTY) { changeOrderQty = true; ARR_STOCK_QTY[i] = ARR_STOCK_QTY[i] - ORDER_QTY; insertMap.put("ORDER_QTY", "0"); }else { changeOrderQty = true; insertMap.put("ORDER_QTY", ORDER_QTY - ARR_STOCK_QTY[i]); //뒷프로젝트부터 계속 차감하다가 남은 거 만큼만 ARR_STOCK_QTY[i] = 0; } //PART_OBJID 프로젝트별 맞는 part조회 sqlParamMap.clear(); sqlParamMap.put("IS_LAST", "1"); sqlParamMap.put("SEARCH_PART_NO_EQ", partNo); /* if(i == 0) { sqlParamMap.put("SEARCH_PART_NO_EQ", APPLICATION_PROJECT_NUMBER+partNo.replace(masterProjectNo, "")); //마스터 프로젝트NO 제거 }else { sqlParamMap.put("SEARCH_PART_NO_EQ", partNo); } if(StringUtils.isNotBlank(partName)) { sqlParamMap.put("SEARCH_PART_NAME_EQ", partName); //sqlParamMap.put("SEARCH_PART_NO", APPLICATION_PROJECT_NUMBER); //sqlParamMap.put("SEARCH_PART_NO", partNo.replace(masterProjectNo, "")); }else { sqlParamMap.put("SEARCH_PART_NO_EQ", APPLICATION_PROJECT_NUMBER+partNo.replace(masterProjectNo, "")); //마스터 프로젝트NO 제거 } */ //sqlParamMap.put("PROJECT_NO", APPLICATION_PROJECT_NUMBER); //sqlParamMap.put("SEARCH_PART_NO_END", partNo.replace(masterProjectNo, "")); //마스터 프로젝트NO 제거 //List> resultList = (ArrayList)sqlSession.selectList("partMng.partMngList", sqlParamMap); //part 조회 sqlParamMap.put("parent_objId", BOM_OBJID); List> resultList2 = (ArrayList)sqlSession.selectList("salesMng.salesBomReportPartList", sqlParamMap); //구매봄 part 조회 //System.out.println("resultList2::"+resultList2); if(resultList2 == null || resultList2.isEmpty()) { throw new Exception(APPLICATION_PROJECT_NUMBER + " (" + partName + ") 동시발주건 구매BOM part가 존재하지 않습니다.(품번:"+partNo+")"); }else { //해당 프로젝트의 파트정보로 변경 insertMap.put("PART_OBJID", resultList2.get(0).get("objid_part")); insertMap.put("PART_NAME", resultList2.get(0).get("part_name")); insertMap.put("PART_NO", resultList2.get(0).get("part_no")); sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); } //구매봄 단가 수정 //sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", insertMap); } //금액 수정 if(changeOrderQty) { insertMap.put("PURCHASE_ORDER_MASTER_OBJID", APPLICATION_OBJID); //insertMap.put("OBJID", partObjid); sqlSession.update("purchaseOrder.updatePurchaseOrderPartSumUnitPrice", insertMap); // part 공급가 금액 합산 sqlSession.update("purchaseOrder.updatePurchaseOrderMasterPriceByPart", insertMap); // master 금액 재계산 } } } }//end of isMulti //미선택 삭제 /**/ //if(!CommonUtils.isEmpty(PROJECT_NO_LIST)){ paramMap.put("MULTI_MASTER_OBJID", MASTER_OBJID); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); paramMap.put("checkArr", APPLICATION_OBJID_LIST); //paramMap.put("checkArr", PROJECT_NO_LIST); //sqlSession.delete("purchaseOrder.delPurchaseOrderMulti", paramMap); if(isMulti){ paramMap.put("MULTI_MASTER_YN", "Y"); paramMap.put("MULTI_YN", "Y"); sqlSession.update("purchaseOrder.updatePurchaseOrderMasterMultiInfo", paramMap); } APPLICATION_OBJID_LIST.add(MASTER_OBJID); PROJECT_NO_LIST.add(paramMap.get("CONTRACT_MGMT_OBJID")); sqlSession.delete("purchaseOrder.delPurchaseOrderPart", paramMap); sqlSession.delete("purchaseOrder.delPurchaseOrderMaster", paramMap); //} sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); e.printStackTrace(); throw new Exception(e); }finally{ sqlSession.close(); } } public void savePurchaseOrder_salesRequest(HttpServletRequest request,Map paramMap) throws Exception{ SqlSession sqlSession = null; try{ String MASTER_OBJID = CommonUtils.createObjId(); //String SALES_REQUEST_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("OBJID")); sqlSession = SqlMapConfig.getInstance().getSqlSession(); //paramMap.put("OBJID", MASTER_OBJID); List> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid"))); sqlSession = SqlMapConfig.getInstance().getSqlSession(false); for(int i=0; i> resultList = (ArrayList)sqlSession.selectList("purchaseOrder.grtPartnerObjidBySalesRequestObjid", insertMap); System.out.println("resultList::"+resultList); for(int j=0; j resultMap = (Map) resultList.get(j); String PARTNER_OBJID = (String) resultMap.get("partner_objid"); insertMap.put("OBJID", CommonUtils.createObjId()); insertMap.put("PARTNER_OBJID", PARTNER_OBJID); int cnt = sqlSession.update("purchaseOrder.mergePurchaseOrderMasterBySalesRequest", insertMap); //insertMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); } //구매의뢰서 상태값 변경 //insertMap.put("STATUS", "orderComplete"); //발주완료 //sqlSession.update("purchaseOrder.salesRequestMasterStatus", insertMap); //sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); //구매봄 단가 수정 //sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", insertMap); } sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); e.printStackTrace(); throw new Exception(e); }finally{ sqlSession.close(); } } //단가저장 public void savePurchaseOrderPrice(HttpServletRequest request,Map paramMap) throws Exception{ SqlSession sqlSession = null; try{ String MASTER_OBJID = CommonUtils.nullToEmpty((String)paramMap.get("MASTER_OBJID")); sqlSession = SqlMapConfig.getInstance().getSqlSession(); paramMap.put("OBJID", MASTER_OBJID); //int cnt = sqlSession.update("purchaseOrder.mergePurchaseOrderMasterPrice", paramMap); sqlSession.update("purchaseOrder.updatePurchaseOrderMasterRealPrice", paramMap); //실구매가 저장 List> gridDataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("jqGrid"))); sqlSession = SqlMapConfig.getInstance().getSqlSession(false); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); //cnt = sqlSession.delete("purchaseOrder.initPurchaseOrderPart", paramMap); //240322 주석처리 delete & insert는 입고쪽에 키값 없애는 문제 발생 int [] ARR_STOCK_QTY = new int[gridDataList.size()]; //실발주수량 for(int i=0; i태그 제거 추가 String htmlString = (String)insertMap.get("PART_NO");//"Link Text"; if(htmlString.indexOf("") > -1) { String innerTextString = htmlString.substring(htmlString.lastIndexOf("\">")+2, htmlString.lastIndexOf("")); insertMap.put("PART_NO", innerTextString); //System.out.println("innerTextString:"+innerTextString); } //240521 , 제거 추가 insertMap.put("REAL_ORDER_QTY", CommonUtils.checkNull((String)insertMap.get("REAL_ORDER_QTY"), "0").replaceAll(",", "")); insertMap.put("TOTAL_ORDER_QTY", CommonUtils.checkNull((String)insertMap.get("TOTAL_ORDER_QTY"), "0").replaceAll(",", "")); insertMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); //구매봄 단가 수정 sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", insertMap); } paramMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); sqlSession.update("purchaseOrder.updatePurchaseOrderMasterPriceByPart", paramMap); // master 단가 저장 240402 위에서 아래로 이동 //동시발주 단가저장 적용(구매봄까지) 20240402 paramMap.put("MULTI_MASTER_OBJID", MASTER_OBJID); List> multiPurchaseOrderList = sqlSession.selectList("purchaseOrder.selectPurchaseOrderMasterList", paramMap); if(multiPurchaseOrderList != null && !multiPurchaseOrderList.isEmpty()) { /* Collections.sort(multiPurchaseOrderList, new Comparator>() { @Override public int compare(Map o1, Map o2) { return o1.get("CONTRACT_NO").compareTo(o2.get("CONTRACT_NO")); } }); */ Map sqlParam = new HashMap(); Map insertMap = new HashMap(); for (Map map : multiPurchaseOrderList) { //sub master MASTER_OBJID = (String)map.get("objid"); insertMap.clear(); insertMap.putAll(paramMap); insertMap.put("OBJID", MASTER_OBJID); //sqlSession.update("purchaseOrder.updatePurchaseOrderMasterPrice", insertMap); //sub master sqlParam.clear(); sqlParam.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); //cnt = sqlSession.delete("purchaseOrder.initPurchaseOrderPart", sqlParam); List multiPurchaseOrderPartList = sqlSession.selectList("purchaseOrder.getPURCHASE_ORDER_PART", sqlParam); boolean changeOrderQty = false; String partObjid = ""; for(int i=0; i= ORDER_QTY) { changeOrderQty = true; ARR_STOCK_QTY[i] = ARR_STOCK_QTY[i] - ORDER_QTY; insertMap.put("ORDER_QTY", "0"); }else { changeOrderQty = true; insertMap.put("ORDER_QTY", ORDER_QTY - ARR_STOCK_QTY[i]); //뒷프로젝트부터 계속 차감하다가 남은 거 만큼만 ARR_STOCK_QTY[i] = 0; } //sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); // PurchaseOrderPart 수정(마스터 기준으로) sqlSession.insert("purchaseOrder.mergePurchaseOrderPartInfo", insertMap); //240426 재고에 따른 수량 변경 insertMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); sqlSession.update("purchaseOrder.updatePurchaseOrderPartPrice", insertMap); //기존 재고에 맞춰진 수량에 금액만 변경) //구매봄 단가 수정 sqlSession.update("purchaseOrder.updateSalesBomReportPartPriceByPurchase", insertMap); } } insertMap.clear(); //insertMap.putAll(paramMap); insertMap.put("PURCHASE_ORDER_MASTER_OBJID", MASTER_OBJID); sqlSession.update("purchaseOrder.updatePurchaseOrderPartSumUnitPrice", insertMap); //sub part 공급가 금액 합산 sqlSession.update("purchaseOrder.updatePurchaseOrderMasterPriceByPart", insertMap); //sub master 금액 재계산 } } //master 총금액 수정(240507 추가) sqlSession.update("purchaseOrder.updatePurchaseOrderMasterPriceAll", paramMap); sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); e.printStackTrace(); throw new Exception(e); }finally{ sqlSession.close(); } } /** * 네고율 저장 * @param request * @param paramMap * @return */ public Map updatePurchaseOrderList(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); paramMap.put("WRITER", person.getUserId()); //System.out.println("paramMap : "+paramMap); //String OBJID = CommonUtils.checkNull(request.getParameter("OBJID"), CommonUtils.createObjId()); //String OBJID_PRODUCT = CommonUtils.checkNull(request.getParameter("OBJID_PRODUCT")); //paramMap.put("OBJID", OBJID); List> dataList = JsonUtil.JsonToList(CommonUtils.checkNull(paramMap.get("dataListJson"))); //if(!"".equals(authGroupObjid) && 0 < tagetMemberList.length){ html table version if(CommonUtils.isNotEmpty(dataList)){ for (Map data : dataList) { //System.out.println(data); //String targetMemberId = CommonUtils.checkNull(data.get("USER_ID")); //data.putAll(paramMap); //data.put("OBJID_PARENT", OBJID); //data.put("PRODUCT", OBJID_PRODUCT); //System.out.println(data); sqlSession.insert("purchaseOrder.updatePurchaseOrderNegoPrice", data); // String OBJID = CommonUtils.checkNull(data.get("OBJID")); // String MULTI_YN = CommonUtils.checkNull(data.get("MULTI_YN")); // String MULTI_MASTER_YN = CommonUtils.checkNull(data.get("MULTI_MASTER_YN")); sqlSession.insert("purchaseOrder.updatePurchaseOrderPriceTxt", data); //250123 added } } resultMap.put("result", true); resultMap.put("msg", Message.SAVE_SUCCESS); sqlSession.commit(); }catch(Exception e){ sqlSession.rollback(); resultMap.put("result", false); resultMap.put("msg", Message.SAVE_FAILED); e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } //발주 취소(결재까지 상태 취소로 변경) public Map purchaseOrderCancel(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String materOrdObjId = (String)paramMap.get("materOrdObjId"); String checkBoxList[] = request.getParameter("materOrdObjId").split(","); if(null != checkBoxList && 0 < checkBoxList.length){ //마스터 취소 sqlSession.update("purchaseOrder.cancelPurchaseOrderMasterMulti", paramMap); paramMap.put("targetObjId", CommonUtils.checkNull(materOrdObjId)); paramMap.put("search_type", "last"); Map map = sqlSession.selectOne("approval.selectApprovalInfo", paramMap); if(map != null) { //결재 취소 Map approvalParamMap = new HashMap(); approvalParamMap.put("approvalObjId", CommonUtils.checkNull(map.get("objid"))); //approvalParamMap.put("targetObjId", CommonUtils.checkNull(materOrdObjId)); approvalParamMap.put("status", "cancel"); sqlSession.update("approval.changeApprovalStatus", approvalParamMap); sqlSession.update("approval.updateRouteStatusByApprovalObjId", approvalParamMap); } /* for(int i=0;i routeMap, Map targetMap, Map sqlParamMap) { String targetObjId = CommonUtils.checkNull(sqlParamMap.get("targetObjId")); Map paramMap = new HashMap(); paramMap.put("objId", targetObjId); paramMap.put("PURCHASE_ORDER_MASTER_OBJID", targetObjId); Map masterInfo = commonService.selectOne("purchaseOrder.getPurchaseOrderMasterInfo", null, paramMap); //master정보 String status = ""; if(masterInfo == null) { System.out.println(targetObjId + " info null (afterApprovalCompleteRouteInfo - purchaseOrder.getPurchaseOrderMasterInfo )"); return; }else { status = CommonUtils.checkNull((String)masterInfo.get("STATUS")); } //취소건 if("cancel".equals(status)) { System.out.println(targetObjId + " info canceled (purchaseOrder-afterApprovalCompleteRouteInfo)"); return; } //1. 발주번호로 설계변경조치결과 상태변경 sqlParamMap.put("act_status", "0001065"); //발주완료 sqlSession.update("purchaseOrder.salesPartChgActStatusByPurchaseOrderId", sqlParamMap); //2. 발주서 메일발송 try{ paramMap.put("PURCHASE_ORDER_MASTER_OBJID", targetObjId); paramMap.put("MULTI_MASTER_OBJID", targetObjId); List detailList = commonService.selectList("purchaseOrder.getPURCHASE_ORDER_PART", null, paramMap); //발주부품목록 List apprList = commonService.getApprovalLine(paramMap); //결재정보 List multiMasterList = commonService.selectList("purchaseOrder.selectPurchaseOrderMasterList", null, paramMap); ArrayList partFileList= commonService.selectList("purchaseOrder.purchaseOrderPartFileListForMail", null, paramMap); //발주부품 도면목록 SimpleDateFormat frm = new SimpleDateFormat ("yyyyMMddHHmm"); SimpleDateFormat frm2= new SimpleDateFormat ("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); String todayKor = frm.format(cal.getTime()); String poNo = CommonUtils.checkNull((String)masterInfo.get("PURCHASE_ORDER_NO")); //발주서번호 String poTitle = CommonUtils.checkNull((String)masterInfo.get("TITLE")); //발주서제목 String fromUser = CommonUtils.checkNull((String)masterInfo.get("WRITER")); //발주서작성자 String fromEmail= CommonUtils.checkNull((String)masterInfo.get("WRITER_EMAIL")); //발주서작성자 이메일 String excelName= "발주서_"+poNo+"_"+ todayKor +".xls"; String zipName = "도면_"+poNo+"_"+ todayKor +".zip"; masterInfo.put("EXCELFILE_NAME", excelName); masterInfo.put("APPR_COMPLETE_DATE", frm2.format(cal.getTime())); //최종결재일자 (아직 커밋전이라 db정보없음) //제목 String subject = poNo + poTitle; //내용 /*Map param = new HashMap(); param.put("SUBJECT" , subject); param.put("CAR_CODE" , "CAR-BENZ0001"); param.put("CAR_NAME" , "G63 AMG 6x6"); param.put("PRODUCT_GROUP_NAME", "메르세데스벤츠"); param.put("PRODUCT_NAME" , "지바겐"); String contents = MailUtil.getHTMLContents("mailTemplate2", param);*/ String contents_table = this.makePoContentsTable(masterInfo, detailList, apprList, multiMasterList); String contents = this.makeMailContents(contents_table); //to user ArrayList toUserIdList = new ArrayList(); toUserIdList.add(CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_NAME"))); //공급처 담당자명(ID없음) //to email ArrayList toEmailList = new ArrayList(); toEmailList.add(CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_EMAIL"))); //공급처 담당자 EMAIL //cc(참조) email ArrayList ccEmailList = new ArrayList(); ccEmailList.add(CommonUtils.checkNull((String)masterInfo.get("SALES_MNG_USER_EMAIL"))); //발주처 담당자 EMAIL //attach file ArrayList attachFileList = new ArrayList(); attachFileList.add(this.makeMailAttachFileOrderSheet(masterInfo, contents_table)); //발주서 파일생성 & 첨부 File zf = MailUtil.zipFileListMail(zipName, partFileList); //도면파일 압축 파일생성 & 첨부 HashMap hm = new HashMap(); hm.put(Constants.Db.COL_FILE_REAL_NAME , zf.getName()); hm.put(Constants.Db.COL_FILE_SAVED_NAME, zf.getName()); hm.put(Constants.Db.COL_FILE_PATH , zf.getPath().replace("\\"+zf.getName(),"")); attachFileList.add(hm); //메일발송 boolean result2 = MailUtil.sendMailWithAttachFile(fromUser, fromEmail, toUserIdList, toEmailList, ccEmailList, null, null, subject, contents, attachFileList, "PURCHASE_ORDER"); }catch(Exception e){ e.printStackTrace(); } } /** * 발주서 내용생성 - table * @return mail contents */ private String makePoContentsTable(Map masterInfo, List detailList, List apprList, List multiMasterList){ String sty_td_h = "style=\"text-align:center; background-color:#D5D5D5;\""; String sty_paddingO = "padding:3px;"; String sty_padding = "style='padding:3px;'"; String[] arrAppr = {"","","",""}; //결재라인 4 for(int i = 0 ; i < apprList.size() ; i++){ HashMap map = (HashMap)apprList.get(i); if(i==0){ arrAppr[0] = CommonUtils.checkNull(map.get("WRITER"))+"
"+CommonUtils.checkNull(map.get("REGDATE")); } if(i<4){ if(i == apprList.size()-1){ arrAppr[i+1] = CommonUtils.checkNull(map.get("TARGET_USER_NAME"))+"
"+CommonUtils.checkNull(masterInfo.get("APPR_COMPLETE_DATE")); }else{ arrAppr[i+1] = CommonUtils.checkNull(map.get("TARGET_USER_NAME"))+"
"+CommonUtils.checkNull(map.get("PROC_DATE")); } } } StringBuffer sb = new StringBuffer(); // sb.append(""); // String sty_align_l4 = " class='align_l4' "; // String sty_align_r4 = " class='align_r4' "; sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); //CONTRACT_MGNT_NAME sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); //부가세포함 발주금액 sb.append(" "); sb.append(" "); sb.append(""); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); //sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); //sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); for(int i = 0 ; i < detailList.size() ; i++){ HashMap map = (HashMap)detailList.get(i); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); //sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); } sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(""); sb.append(" "); sb.append(" "); HashMap map; for(int i = 0 ; i < 10 ; i++){ if(multiMasterList.size()-1 >= i){ map = (HashMap)multiMasterList.get(i); }else{ map = new HashMap(); } sb.append(" "); } sb.append(" "); sb.append(" "); sb.append(" "); for(int i = 0 ; i < 10 ; i++){ if(multiMasterList.size()-1 >= i){ map = (HashMap)multiMasterList.get(i); }else{ map = new HashMap(); } sb.append(" "); } sb.append(" " + " "); sb.append(" "); sb.append(" "); for(int i = 0 ; i < 10 ; i++){ if(multiMasterList.size()-1 >= i){ map = (HashMap)multiMasterList.get(i); }else{ map = new HashMap(); } sb.append(" "); } sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append("
발주번호 "+CommonUtils.checkNull((String)masterInfo.get("PURCHASE_ORDER_NO"))+"발주부품 "+CommonUtils.checkNull((String)masterInfo.get("TYPE_NAME"))+"프로젝트번호 "+CommonUtils.checkNull((String)masterInfo.get("PROJECT_NO"))+"유닛명 "+CommonUtils.checkNull((String)masterInfo.get("UNIT_NAME"))+"
"); sb.append(" 발주서 "); sb.append("
"); sb.append(" (Purchase Order) "); sb.append("
결 재담당검토결재대표
"+arrAppr[0]+""+arrAppr[1]+""+arrAppr[2]+""+arrAppr[3]+"
발주처회사명"+CommonUtils.checkNull((String)masterInfo.get("SALES_NAME"))+"공급처회사명"+CommonUtils.checkNull((String)masterInfo.get("PARTNER_NAME"))+"
사업자번호"+CommonUtils.checkNull((String)masterInfo.get("SALES_REG_NO"))+"사업자번호"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_BUS_NO"))+"
담당자"+CommonUtils.checkNull((String)masterInfo.get("SALES_MNG_USER_NAME"))+"HP"+CommonUtils.checkNull((String)masterInfo.get("SALES_MNG_USER_CELL_PHONE"))+"대표자"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_NAME"))+"HP"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_HP"))+"
전화"+CommonUtils.checkNull((String)masterInfo.get("SALES_SUPPLY_OFFICE_NO"))+"FAX"+CommonUtils.checkNull((String)masterInfo.get("SALES_SUPPLY_FAX_NO"))+"전화"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_TEL"))+"FAX"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_FAX"))+"
E-MAIL"+CommonUtils.checkNull((String)masterInfo.get("SALES_EMAIL"))+"E-MAIL"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_USER_EMAIL"))+"
주소"+CommonUtils.checkNull((String)masterInfo.get("SALES_SUPPLY_ADDRESS"))+"주소"+CommonUtils.checkNull((String)masterInfo.get("SUPPLY_ADDR"))+"
"); sb.append(" 아래의 자재를 발주하오니 기일 내 필히 납품하여 주시기 바랍니다. "); sb.append("
발주구분 "+CommonUtils.checkNull((String)masterInfo.get("ORDER_TYPE_CD_NAME"))+"납품장소 "+CommonUtils.checkNull((String)masterInfo.get("DELIVERY_PLACE_NAME"))+"검수방법 "+CommonUtils.checkNull((String)masterInfo.get("INSPECT_METHOD_NAME"))+"결제조건 "+CommonUtils.checkNull((String)masterInfo.get("PAYMENT_TERMS_NAME"))+"입고요청일 "+CommonUtils.checkNull((String)masterInfo.get("DELIVERY_DATE"))+"
발주서 No."+CommonUtils.checkNull((String)masterInfo.get("PURCHASE_ORDER_NO_ORG_NO"))+"제 목"+CommonUtils.checkNull((String)masterInfo.get("TITLE"))+"부가세포함 발주금액(원) "+CommonUtils.checkNull((String)masterInfo.get("TOTAL_PRICE_TXT_ALL"))+"
NO.품명품번규격Maker단위설계수량수량공급단가레이져단가용접단가가공단가후처리단가공급가부가세포함공급가총발주수량재고수량실발주수량실공급가
"+(i+1)+""+CommonUtils.checkNull(map.get("PART_NAME" ))+""+CommonUtils.checkNull(map.get("PART_NO" ))+""+CommonUtils.checkNull(map.get("SPEC" ))+""+CommonUtils.checkNull(map.get("MAKER" ))+""+CommonUtils.checkNull(map.get("UNIT_NAME" ))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("ORDER_QTY" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("PARTNER_PRICE" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("PRICE1" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("PRICE2" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("PRICE3" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("PRICE4" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("SUPPLY_UNIT_PRICE")))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("SUPPLY_UNIT_VAT_SUM_PRICE")))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("TOTAL_ORDER_QTY" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("STOCK_QTY" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("REAL_ORDER_QTY" )))+""+CommonUtils.numberFormat(CommonUtils.checkNull(map.get("REAL_SUPPLY_PRICE" )))+"
합계(원) "); sb.append(" "+CommonUtils.numberFormat(CommonUtils.checkNull((String)masterInfo.get("TOTAL_SUPPLY_PRICE")))+" "); sb.append(" "); //sb.append(" "+CommonUtils.numberFormat(CommonUtils.checkNull((String)masterInfo.get("TOTAL_SUPPLY_UNIT_PRICE")))+" "); sb.append(" "+CommonUtils.numberFormat(CommonUtils.checkNull((String)masterInfo.get("TOTAL_REAL_SUPPLY_PRICE")))+" "); sb.append("
할인금액(원) "); sb.append(" "+CommonUtils.numberFormat(CommonUtils.checkNull((String)masterInfo.get("DISCOUNT_PRICE_ALL")))+" "); sb.append(" 네고율 "); sb.append(" "+CommonUtils.checkNull((String)masterInfo.get("NEGO_RATE"))+" "); sb.append(" 할인공급가(원) "); sb.append(" "+CommonUtils.numberFormat(CommonUtils.checkNull((String)masterInfo.get("TOTAL_PRICE_ALL")))+" "); sb.append("
 
동시적용프로젝트번호"+CommonUtils.checkNull(map.get("CONTRACT_NO"))+"
입고계획일"+CommonUtils.checkNull(map.get("DELIVERY_PLAN_DATE"))+"
입고계획수량"+CommonUtils.checkNull(map.get("DELIVERY_PLAN_QTY"))+"
작업지시사항
"+CommonUtils.checkNull((String)masterInfo.get("REMARK"))+"
★거래명세서 자동생성은 발주서 기준으로 입고수량 대비 정품수량 동일시 구매팀 확인후 발주서 기준으로 자동생성 된다.
"); return sb.toString(); } /** * 발주서 내용생성 (메일발송 내용) * @return mail contents */ private String makeMailContents(String poContentsTable) { StringBuffer sb = new StringBuffer(); sb.append(""); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(" "); sb.append(""); sb.append(poContentsTable); sb.append("
※발신전용 메일입니다. "); sb.append(" "); sb.append(" "); return sb.toString(); } /** * 발주서 엑셀파일생성(메일첨부용) * ※참고 : /purchaseOrder/purchaseOrderFormPopup_newDOWN.jsp * @return 파일정보 HashMap */ private HashMap makeMailAttachFileOrderSheet(Map masterInfo, String poContentsTable) { HashMap resultMap = null; String excelName = CommonUtils.checkNull((String)masterInfo.get("EXCELFILE_NAME")); StringBuffer sb = new StringBuffer(); sb.append(""); sb.append(" "); sb.append(" "); sb.append(""); sb.append(" "); sb.append(poContentsTable); sb.append(""); sb.append(""); FileOutputStream fos = null; try { File fpath = new File(Constants.Mail.FILE_PATH); if(!fpath.exists()){ //System.out.println("폴더없음 ["+fpath.getAbsolutePath()+"]"); if(fpath.mkdirs()){ //생성할 폴더가 없으면 생성 //System.out.println("폴더생성완료"); }else{ System.out.println("PurchaseOrderService.makeMailAttachFileOrderSheet ###폴더생성실패["+Constants.Mail.FILE_PATH+"]"); } } File file = new File(Constants.Mail.FILE_PATH, excelName); fos = new FileOutputStream(file); fos.write(sb.toString().getBytes()); fos.close(); //결과 resultMap = new HashMap(); resultMap.put(Constants.Db.COL_FILE_REAL_NAME , excelName); resultMap.put(Constants.Db.COL_FILE_SAVED_NAME, excelName); resultMap.put(Constants.Db.COL_FILE_PATH , Constants.Mail.FILE_PATH); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } return resultMap; } /** * 부적합이재현 리스트 * @param request * @param paramMap * @return */ public ArrayList> getdeliveryMngInvalidList(HttpServletRequest request,Map paramMap){ ArrayList> oemInfoList = new ArrayList(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(); try{ 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("purchaseOrder.getdeliveryMngInvalidListCnt", paramMap); pageMap = (HashMap)CommonUtils.setPagingInfo(request, pageMap); paramMap.put("PAGE_END", pageMap.get("PAGE_END")); paramMap.put("PAGE_START", pageMap.get("PAGE_START")); oemInfoList = (ArrayList)sqlSession.selectList("purchaseOrder.getdeliveryMngInvalidList", paramMap); }catch(Exception e){ throw e; }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(oemInfoList); } public Map getDeliveryMngInvalidInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("purchaseOrder.getdeliveryMngInvalidInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } /** * 부적합내용등록 * @param paramMap * @return */ public Map invalidAction(HttpServletRequest request, Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String checkArr[] = (CommonUtils.checkNull(paramMap.get("checkArr"))).split(","); if(0 == checkArr.length){ checkArr[0] = CommonUtils.checkNull(paramMap.get("checkArr")); } if(null != checkArr && 0 < checkArr.length){ paramMap.put("checkArr",checkArr); sqlSession.update("purchaseOrder.updateinvalidAction", paramMap); sqlSession.commit(); resultMap.put("result", true); resultMap.put("msg", Message.DELETE_SUCCESS); } }catch(Exception e){ resultMap.put("result", false); resultMap.put("msg", Message.DELETE_FAILED); sqlSession.rollback(); e.printStackTrace(); }finally{ sqlSession.close(); } return resultMap; } /** * 바코드 프린트할 장납기품 정보 조회 * @param request * @param paramMap * @return */ public Map bacodePrintInfo(HttpServletRequest request,Map paramMap){ Map resultMap = new HashMap(); SqlSession sqlSession = null; try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); resultMap = sqlSession.selectOne("purchaseOrder.bacodePrintInfo", paramMap); }catch(Exception e){ e.printStackTrace(); }finally{ sqlSession.close(); } return CommonUtils.toUpperCaseMapKey(resultMap); } public void saveLocation(HttpServletRequest request,Map paramMap) throws Exception{ SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false); try{ String[] OBJIDs = request.getParameterValues("OBJID"); String[] DETAIL_GROUP = request.getParameterValues("DETAIL_GROUP"); int j=0; if(OBJIDs != null){ for(int i=0; i"+j); saveMap.put("OBJID" , CommonUtils.checkNull(OBJIDs[i],CommonUtils.createObjId())); saveMap.put("PARENT_OBJID" , CommonUtils.checkNull(paramMap.get("PARENT_OBJID"))); saveMap.put("ORDER_PART_OBJID" , CommonUtils.checkNull(paramMap.get("ORDER_PART_OBJID_"+(i+1)))); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); saveMap.put("GROUP_SEQ" , CommonUtils.checkNull(request.getParameterValues("GROUP_SEQ")[i])); saveMap.put("SEQ" , CommonUtils.checkNull(request.getParameterValues("SEQ")[i])); saveMap.put("RECEIPT_QTY" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_QTY")[i],"0")); saveMap.put("RECEIPT_DATE" , CommonUtils.checkNull(request.getParameterValues("RECEIPT_DATE")[i])); saveMap.put("LOCATION" , CommonUtils.checkNull(request.getParameterValues("LOCATION")[i])); saveMap.put("SUB_LOCATION" , CommonUtils.checkNull(request.getParameterValues("SUB_LOCATION")[i])); saveMap.put("WRITER" , CommonUtils.checkNull(paramMap.get("WRITER"))); System.out.println("saveMap::: ------->"+saveMap); sqlSession.update("supplyChainMgmt.saveLocationInfo", saveMap); } sqlSession.commit(); } }catch(Exception e){ sqlSession.rollback(); e.printStackTrace(); throw new Exception(e); }finally{ sqlSession.close(); } } }