package com.slcf.controller; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.slcf.controller.param.SetEmsParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import com.slcf.pojo.UserBean; import com.slcf.bean.WaitPakOutCondition; import com.slcf.pojo.WaitPakOutBean; import com.slcf.pojo.LocationBean; import com.slcf.pojo.MatCodeBean; import com.slcf.pojo.SysLogBean; import com.slcf.service.WaitPakOutService; import com.slcf.service.WorkFileService; import com.slcf.service.WorkNoService; import com.slcf.util.AuthorityCode; import com.slcf.util.CommonMethod; import com.slcf.util.Constants; import com.slcf.util.DateTimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import sun.misc.BASE64Encoder; import com.slcf.service.CrnService; import com.slcf.service.LocDetailService; import com.slcf.service.LocationService; import com.slcf.service.MatCodeService; import com.slcf.service.OperateService; import com.slcf.service.RoleService; import com.slcf.service.RowNoService; import com.slcf.service.StaDescService; import com.slcf.service.StationService; import com.slcf.service.SysLogService; /** * 出库通知档控制器层 * @author admin * @date 2018年11月21日 */ @Controller @RequestMapping("/work") public class WaitPakOutController { @Resource WaitPakOutService waitPakOutService; @Autowired SysLogService sysLogService; @Autowired MatCodeService matCodeService; @Autowired LocDetailService locDetailService; @Autowired RoleService roleService; @Autowired LocationService locationService; @Autowired StaDescService staDescService; @Autowired StationService stationService; @Autowired WorkNoService workNoService; @Autowired WorkFileService workFileService; @Autowired RowNoService rowNoService; @Autowired CrnService crnService; @Autowired OperateService operateService; @RequestMapping("/goWaitPakOut.action") public String goWaitPakOutPage(HttpServletRequest request){ try { String rid = request.getSession().getAttribute("ROLEID").toString(); String authCode = roleService.getAuthListByRoleMenu(Integer.parseInt(rid), AuthorityCode.WaitPakOutCode); request.getSession().setAttribute("AUTHCODE",authCode); // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("goWaitPakOut.action"); sysLog.setTts_keyname("访问:出库通知档"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); } return "waitPakOut"; } /** * 添加 * @param WaitPakOut * @param request * @return */ @ResponseBody @RequestMapping("/addWaitPakOut.action") public Integer insertWaitPakOut(WaitPakOutBean waitPakOut,HttpServletRequest request){ int result=0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); if(waitPakOut.getSheet_no()==null || waitPakOut.getSheet_no().equals("")) { int random = (int)(Math.random()*900 + 100); String seq = Integer.toString(random); String sheet_no = DateTimeUtil.getStringDateTime(14); waitPakOut.setSheet_no(sheet_no+seq); } waitPakOut.setSheet_no(waitPakOut.getSheet_no().trim()); waitPakOut.setModi_user(user.getUser_account()); result = waitPakOutService.insertWaitPakOut(waitPakOut); if(result>0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("addWaitPakOut.action"); sysLog.setTts_keyname("插入通知档:" + waitPakOut.getSheet_no() + "-" + waitPakOut.getMat_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); result=0; } return result; } /** * 分页查询所有 * @param pageNumber * @param pageSize * @return */ @ResponseBody @RequestMapping("/waitPakOutList.action") public Map queryWaitPakOutListByPages(WaitPakOutCondition waitPakOutCon){ Mapmap=waitPakOutService.queryWaitPakOutList(waitPakOutCon); return map; } /** * 出库通知档设置任务为紧急状态 * @return */ @ResponseBody @RequestMapping(value = "/waitPakOutSetEms.action", produces = "text/html; charset=UTF-8") public String syncStocksFromSap(@RequestBody List list) throws Exception { Integer i = 0; String errorTxt = ""; if (list.size() > 0) { // 设置任务为紧急状态 for (SetEmsParam item : list) { if (waitPakOutService.waitPakOutSetEms(item) > 0) { i++; } } // // 判断紧急任务数量是否已经超过3个,超出3个不允许继续新增紧急任务 // Integer emsNum = waitPakOutService.countEmsNum(); // if (emsNum < 3) { // // 设置任务为紧急状态 // for (SetEmsParam item : list) { // if (waitPakOutService.waitPakOutSetEms(item) > 0) { // i++; // } // } // } else { // errorTxt = "紧急任务已超出3个,请耐心等待任务完成"; // } } else { throw new Error("数据异常"); } return (i == 0) ? errorTxt : i.toString(); } /** * 验证物料编号是否存在 * @param did * @return */ @ResponseBody @RequestMapping("/checkCodeOut.action") public Map checkMatCodeOut(@RequestParam("did")String id){ Map map=new HashMap(); // boolean flag=userService.validUserAccount(account, uid); try { MatCodeBean matCode = matCodeService.queryMatCodeById(id); // count = locDetailService.getLocStockCount(mat_no); if(matCode!=null){ map.put("msg", "代号可用"); map.put("mat_name_add",matCode.getMat_name()); }else{ map.put("msg", "物料号不存在"); } }catch(Exception e) { System.out.println(e.getMessage()); } return map; } /** * 根据id查询信息 * @param id * @return */ @ResponseBody @RequestMapping("/queryWaitPakOutById.action") public WaitPakOutBean queryWaitPakOutById(@RequestParam("sheet_no")String sheet_no, @RequestParam("mat_no")String mat_no,HttpServletRequest request){ try { return waitPakOutService.queryWaitPakOutById(sheet_no,mat_no); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } // /** // * 验证工作代号是否唯一 // * @param did // * @return // */ // @ResponseBody // @RequestMapping("/checkWaitPakOut.action") // public Map checkWaitPakOut(@RequestParam("did")int id){ // Map map=new HashMap(); //// boolean flag=userService.validUserAccount(account, uid); // try { // WaitPakOutBean WaitPakOut = waitPakOutService.queryWaitPakOutById(id); // if(WaitPakOut==null){ // map.put("msg", "代号可用"); // }else{ // map.put("msg", "代号不可用"); // } // }catch(Exception e) { // System.out.println(e.getMessage()); // } // return map; // } /** * 手工完结入库通知档,反馈ERP * @param WaitPakInEntity * @return */ @ResponseBody @RequestMapping("/overWaitPakOut.action") public Integer overWaitPakOut(WaitPakOutBean waitPakout,HttpServletRequest request){ int result = 0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); waitPakout.setModi_user(user.getUser_account()); WaitPakOutBean waitPakOutBean = waitPakOutService.queryWaitPakOutByNum(waitPakout); String httpUrl = Constants.SAP_URL + "/sap/opu/odata/SAP/Z_WM_H5_SRV/ToConHeadSet"; result = sendPakOutStatus(httpUrl,waitPakOutBean); // result=waitPakInService.upWaitPakIn(waitPakIn); if(result>0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("upWaitPakIn.action"); sysLog.setTts_keyname("修改入库通知档:" + waitPakout.getSheet_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 出库完成,调用sap接口上传完成信息 */ private int sendPakOutStatus(String httpUrl,WaitPakOutBean waitPakOut) { int result = 0; // String token = getXCsrfToken(httpUrl); String input = Constants.SAP_USER + ":" + Constants.SAP_PASSWORD;//"ZHANGX:654321"; BASE64Encoder base = new BASE64Encoder(); String encodedPassword; String token=""; String session_value=""; try { encodedPassword = base.encode(input.getBytes("UTF-8")); URL url1 = new URL(httpUrl); HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection(); connection1.setDoOutput(true); connection1.setDoInput(true); connection1.setRequestMethod("GET"); connection1.setRequestProperty("Authorization", "Basic " + encodedPassword); connection1.setRequestProperty("x-csrf-token","Fetch"); String sessionCookie = connection1.getHeaderField("Set-Cookie"); String[] sessionId = sessionCookie.split(";"); session_value = sessionId[0]; token = connection1.getHeaderField("x-csrf-token"); // Map> map = connection1.getHeaderFields(); // token = map.get("x-csrf-token").toString(); } catch (Exception e1) { e1.printStackTrace(); } try { JSONObject jsObj = new JSONObject(); JSONArray arr = new JSONArray(); for(int i=0;i<1;i++) { JSONObject json = new JSONObject(); json.put("lgnum",waitPakOut.getLgnum()); json.put("tanum",Long.toString(waitPakOut.getTanum())); json.put("tapos",Integer.toString(waitPakOut.getTapos())); // json.put("nista",Double.toString(waitPakOut.getVsolm())); // json.put("ndifa","0"); json.put("altme",waitPakOut.getMeins()); json.put("nltyp","A01"); json.put("nlpla",waitPakOut.getNlpla()); arr.add(json); } jsObj.put("item", arr); byte[] buff = jsObj.toString().getBytes(); int buffLen = buff.length; //创建连接 try { // String input = "ZHANGX:654321"; // BASE64Encoder base = new BASE64Encoder(); // String encodedPassword = base.encode(input.getBytes("UTF-8")); URL url = new URL(httpUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); // connection.setUseCaches(false); // connection.setInstanceFollowRedirects(true); // connection.setRequestProperty("Content-Type","text/json;charset=gb2312"); connection.setRequestProperty("Cookie", session_value); connection.setRequestProperty("Content-Type","application/json"); connection.setRequestProperty("Accept","application/json"); connection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8"); connection.setRequestProperty("Content-Length","" + buffLen); // connection.setRequestProperty("Authorization", "Basic " + encodedPassword); connection.setRequestProperty("x-csrf-token",token); //POST请求 OutputStream out = connection.getOutputStream(); out.write(buff); out.close(); //读取响应 BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream())); String lines; StringBuffer sb = new StringBuffer(""); while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); sb.append(lines); } System.out.println(sb.toString()); result = 1; }catch (Exception e) { System.out.println(e.getMessage()); } }catch (Exception e) { System.out.println(e.getMessage()); } return result; } /** * 修改信息 * @param WaitPakOutEntity * @return */ @ResponseBody @RequestMapping("/upWaitPakOut.action") public Integer upWaitPakOut(WaitPakOutBean waitPakOut,HttpServletRequest request){ int result = 0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); waitPakOut.setModi_user(user.getUser_account()); result=waitPakOutService.upWaitPakOut(waitPakOut,1); if(result>0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("upWaitPakOut.action"); sysLog.setTts_keyname("修改出库通知档:" + waitPakOut.getSheet_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 删除信息 * @param id * @return */ @ResponseBody @RequestMapping("/delWaitPakOut.action") public int delWaitPakOut(WaitPakOutBean waitPakout,HttpServletRequest request){ int result = 0; try { result=waitPakOutService.delWaitPakOut(waitPakout); if(result>0) { // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("delWaitPakOut.action"); sysLog.setTts_keyname("删除通知档资料:" + waitPakout.getLgnum() + "-" + waitPakout.getTanum()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 查询所有 * @return */ @ResponseBody @RequestMapping("/getWaitPakOut.action") public List getWaitPakOut(){ try { return waitPakOutService.getWaitPakOutList(); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } /** * 通知档资料转历史档 * @return */ @ResponseBody @RequestMapping("/movePakOutToLog.action") public int movePakOutToLog(@RequestParam("ids")String[] sheetNos,@RequestParam("matStr")String[] matNos, @RequestParam("locStr")String[] locNos,HttpServletRequest request){ int result = 0; try { String sheet_no="", mat_no="",loc_no=""; // for(int i=0;i0) { WaitPakOutBean waitPakOut = new WaitPakOutBean(); waitPakOut.setSheet_no(sheet_no); waitPakOut.setMat_no(mat_no); result = waitPakOutService.delWaitPakOut(waitPakOut); } } if(result>0) { // 插入日志 UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("movePakInToLog.action"); sysLog.setTts_keyname("取消出库:" + sheet_no + "-" + mat_no); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 添加出库单 * @param sheet_no * @param locstr * @param request * @return * @throws Exception */ @ResponseBody @RequestMapping("/addPakOutData.action") public Map addPakOutData(@RequestParam("sheet_no")String sheet_no, @RequestParam("locstr")String[] locstr,HttpServletRequest request) throws Exception{ Map map=new HashMap(); try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); if(locstr!=null) { for(String ids:locstr) { String[] arr = ids.split(";"); if(arr==null || arr.length<2) { continue; } String loc_no = arr[0]; String mat_no = arr[1]; WaitPakOutBean waitPakOutBean = waitPakOutService.queryWaitPakOutByMatNo(mat_no); if(waitPakOutBean!=null) {//待出库档中物料号已存在 map.put("code", 1); map.put("msg", "出库档中物料号已存在"); continue; } LocationBean location = locationService.queryLocationById(loc_no); if(location==null || !location.getLoc_sts().equals("F")){ map.put("code", 1); map.put("msg", "库位不是在库状态"); continue; } //插入出库通知档,更新库存库位状态 WaitPakOutBean waitPakOut = new WaitPakOutBean(); waitPakOut.setSheet_no(sheet_no); waitPakOut.setLoc_no(loc_no); waitPakOut.setCtns(13); //代替优先级 waitPakOut.setIo_status("1"); waitPakOut.setMemo(DateTimeUtil.getStringDateTime(10)); waitPakOut.setMat_no(mat_no); waitPakOut.setModi_user(user.getUser_account()); int result = waitPakOutService.insertWaitPakOut(waitPakOut); if(result>0) { location.setLoc_sts("L"); result=locationService.upLocation(location); if(result>0) { map.put("code", 0); map.put("msg", ""); } }else { map.put("code", 1); map.put("msg", "添加到出库单失败"); continue; } } }else { map.put("code", 1); map.put("msg", "没有选择库位"); return map; } if((Integer)map.get("code")==0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("addPakOutData.action"); sysLog.setTts_keyname("添加出库单"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(RuntimeException e) { System.out.println(e.getMessage()); } return map; } /** * 出库启动 * @param ids * @param locstr * @param stn_no * @param stn_no1 * @param request * @return * @throws Exception */ @ResponseBody @RequestMapping("/confirmRetrieve.action") public Map confirmRetrieve(@RequestParam("ids")String[] ids,@RequestParam("locstr")String[] locstr, @RequestParam("stn_no")int stn_no,HttpServletRequest request) throws Exception{ Map map=new HashMap(); try { CommonMethod commonMethod = new CommonMethod(workFileService,workNoService,crnService, stationService,locationService,rowNoService,staDescService); UserBean user=(UserBean)request.getSession().getAttribute("USER"); if(locstr!=null && ids!=null) { for(String loc_no:locstr) { LocationBean location = locationService.queryLocationById(loc_no); if(location==null || !location.getLoc_sts().equals("L")){ continue; } map = operateService.insertPakRetrieve1(loc_no, ids, stn_no, user, commonMethod); } }else { map.put("code", 1); map.put("msg", "没有选择出库库位"); return map; } if((Integer)map.get("code")==0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("confirmRetrieve.action"); sysLog.setTts_keyname("启动出库"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(RuntimeException e) { System.out.println(e.getMessage()); } return map; } /** * 调整优先级 * @param locstr * @param request * @return * @throws Exception */ @ResponseBody @RequestMapping("/addDataIopri.action") public Map addDataIopri(@RequestParam("pri")String pri, @RequestParam("locstr")String[] locstr,HttpServletRequest request) throws Exception{ Map map=new HashMap(); try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); if(locstr!=null) { for(String ids:locstr) { String[] arr = ids.split(";"); if(arr==null || arr.length<2) { continue; } String loc_no = arr[0]; String mat_no = arr[1]; WaitPakOutBean waitPakOutBean = waitPakOutService.queryWaitPakOutByMatNo(mat_no); if(waitPakOutBean!=null) {//待出库档中物料号已存在 int ctns = waitPakOutBean.getCtns() + Integer.parseInt(pri); waitPakOutBean.setCtns(ctns); int result = waitPakOutService.upWaitPakOut(waitPakOutBean,2); if(result>0) { map.put("code", 0); map.put("msg", "调整成功"); }else { map.put("code", 1); map.put("msg", "出库档中物料号已存在"); continue; } } } }else { map.put("code", 1); map.put("msg", "没有选择库位"); return map; } if((Integer)map.get("code")==0) { // 插入日志 // UserBean user = (UserBean) request.getSession().getAttribute("USER"); SysLogBean sysLog = new SysLogBean(); sysLog.setLogin_no(user.getUser_account()); sysLog.setMachine_ip(request.getRemoteAddr()); sysLog.setForm_no("addDataIopri.action"); sysLog.setTts_keyname("调整优先级"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(RuntimeException e) { System.out.println(e.getMessage()); } return map; } /** * 查询所有单号 * @return */ @ResponseBody @RequestMapping("/getSheetNo.action") public Map getSheetNo(){ Map map=new HashMap(); try { map.put("rows",waitPakOutService.getSheetNoList()); }catch(Exception e) { System.out.println(e.getMessage()); } return map; } }