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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.slcf.pojo.UserBean; import com.slcf.bean.WaitPakInCondition; import com.slcf.pojo.WaitPakInBean; import com.slcf.pojo.MatCodeBean; import com.slcf.pojo.SysLogBean; import com.slcf.service.WaitPakInService; import com.slcf.util.AuthorityCode; 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.MatCodeService; import com.slcf.service.RoleService; import com.slcf.service.SysLogService; /** * 入库通知档控制器层 * @author admin * @date 2018年11月17日 */ @Controller @RequestMapping("/work") public class WaitPakInController { @Resource WaitPakInService waitPakInService; @Autowired SysLogService sysLogService; @Autowired MatCodeService matCodeService; @Autowired RoleService roleService; @RequestMapping("/goWaitPakIn.action") public String goWaitPakInPage(HttpServletRequest request){ try { String rid = request.getSession().getAttribute("ROLEID").toString(); String authCode = roleService.getAuthListByRoleMenu(Integer.parseInt(rid), AuthorityCode.WaitPakInCode); 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("goWaitPakIn.action"); sysLog.setTts_keyname("访问:入库通知档"); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); }catch (Exception e) { System.out.println(e.getMessage()); } return "waitPakIn"; } /** * 添加 * @param waitPakIn * @param request * @return */ @ResponseBody @RequestMapping("/addWaitPakIn.action") public Integer insertWaitPakIn(WaitPakInBean waitPakIn,HttpServletRequest request){ int result=0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); if(waitPakIn.getSheet_no()==null || waitPakIn.getSheet_no().equals("")) { int random = (int)(Math.random()*900 + 100); String seq = Integer.toString(random); String sheet_no = DateTimeUtil.getStringDateTime(14); waitPakIn.setSheet_no(sheet_no+seq); } waitPakIn.setModi_user(user.getUser_account()); result = waitPakInService.insertWaitPakIn(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("addWaitPakIn.action"); sysLog.setTts_keyname("插入通知档:" + waitPakIn.getSheet_no() + "-" + waitPakIn.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("/waitPakInList.action") public Map queryWaitPakInListByPages(WaitPakInCondition waitPakInCon){ Mapmap=waitPakInService.queryWaitPakInList(waitPakInCon); return map; } /** * 验证物料编号是否存在 * @param did * @return */ @ResponseBody @RequestMapping("/checkCode.action") public Map checkMatCode(@RequestParam("did")String id){ Map map=new HashMap(); // boolean flag=userService.validUserAccount(account, uid); try { MatCodeBean matCode = matCodeService.queryMatCodeById(id); 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("/queryWaitPakInById.action") // public WaitPakInBean queryWaitPakInById(@RequestParam("sheet_no")String sheet_no, // @RequestParam("mat_no")String mat_no,HttpServletRequest request){ public WaitPakInBean queryWaitPakInById(WaitPakInBean waitPakIn,HttpServletRequest request){ try { return waitPakInService.queryWaitPakInById(waitPakIn); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } // /** // * 验证工作代号是否唯一 // * @param did // * @return // */ // @ResponseBody // @RequestMapping("/checkWaitPakIn.action") // public Map checkWaitPakIn(@RequestParam("did")int id){ // Map map=new HashMap(); //// boolean flag=userService.validUserAccount(account, uid); // try { // WaitPakInBean WaitPakIn = WaitPakInService.queryWaitPakInById(id); // if(WaitPakIn==null){ // map.put("msg", "代号可用"); // }else{ // map.put("msg", "代号不可用"); // } // }catch(Exception e) { // System.out.println(e.getMessage()); // } // return map; // } /** * 手工完结入库通知档,反馈ERP * @param WaitPakInEntity * @return */ @ResponseBody @RequestMapping("/overWaitPakIn.action") public Integer overWaitPakIn(WaitPakInBean waitPakIn,HttpServletRequest request){ int result = 0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); waitPakIn.setModi_user(user.getUser_account()); WaitPakInBean waitPakInBean = waitPakInService.queryWaitPakInById(waitPakIn); String httpUrl = Constants.SAP_URL + "/sap/opu/odata/SAP/Z_WM_H5_SRV/AsrsTrSet"; result = sendPakInStatus(httpUrl,waitPakInBean); // 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("修改入库通知档:" + waitPakIn.getSheet_no()); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 入库完成,调用sap接口上传完成信息 */ private int sendPakInStatus(String httpUrl,WaitPakInBean waitPakIn) { 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",waitPakIn.getLgnum()); json.put("tbnum",Long.toString(waitPakIn.getTbnum())); json.put("tbpos",Integer.toString(waitPakIn.getTbpos())); json.put("zmatid",waitPakIn.getZmatid()); json.put("anfme",Double.toString(waitPakIn.getAnfme())); json.put("altme",waitPakIn.getAltme()); json.put("nltyp","A01"); json.put("nlber","001"); json.put("nlpla",waitPakIn.getLoc_no()); 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 WaitPakInEntity * @return */ @ResponseBody @RequestMapping("/upWaitPakIn.action") public Integer upWaitPakIn(WaitPakInBean waitPakIn,HttpServletRequest request){ int result = 0; try { UserBean user=(UserBean)request.getSession().getAttribute("USER"); waitPakIn.setModi_user(user.getUser_account()); 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("修改入库通知档:" + waitPakIn.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("/delWaitPakIn.action") public int delWaitPakIn(@RequestParam("lgnum")String lgnum,@RequestParam("tbnum")int tbnum, @RequestParam("tbpos")int tbpos,@RequestParam("zmatid")String zmatid,HttpServletRequest request){ int result = 0; try { WaitPakInBean waitPakIn = new WaitPakInBean(); waitPakIn.setLgnum(lgnum); waitPakIn.setTbnum(tbnum); waitPakIn.setTbpos(tbpos); waitPakIn.setZmatid(zmatid); result=waitPakInService.delWaitPakIn(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("delWaitPakIn.action"); sysLog.setTts_keyname("删除通知档资料:" + lgnum + "-" + tbnum); sysLog.setModi_user(user.getUser_account()); sysLogService.insertSysLog(sysLog); } }catch(Exception e) { System.out.println(e.getMessage()); } return result; } /** * 查询所有 * @return */ @ResponseBody @RequestMapping("/getWaitPakIn.action") public List getWaitPakIn(){ try { return waitPakInService.getWaitPakInList(); }catch(Exception e) { System.out.println(e.getMessage()); return null; } } /** * 通知档资料转历史档 * @return */ @ResponseBody @RequestMapping("/movePakInToLog.action") public int movePakInToLog(@RequestParam("ids")String[] sheetNos, @RequestParam("matStr")String[] matNos,HttpServletRequest request){ int result = 0; try { String sheet_no="", mat_no=""; for(int i=0;i0) { // 插入日志 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; } }