2019.1.21

  今天的任务是完成会计是否在岗配置表格增加操作记录,任务描述:1.  【会计是否在岗配置】 查询结果界面: 修改人编码/修改人/修改时间 字段;2.      字段取值为【会计是否在岗配置】 新增/修改操作记录,更改坐席状态,添加记录。

 结果界面:

  • 第一步 通过界面寻找任务相关代码,分析功能逻辑。

    • 将鼠标放到【会计是否在岗配置表】,确定当前页面为getTprocAccountantteamUserStateList.jsp,在eclipse中通过快捷键Ctrl+H找到jsp页面。jsp代码如下:
    • <form id="queryForm" name="queryForm" method="post" action="commonbizajax2report.do?requestId=FindTodoList"><div id="wrapper" class="gray-bg"><%--<div id="page-wrapper" class="gray-bg">--%><div class=""><div class="p-w-md m-t-sm"><div class="row"><div class="row" style="margin: 10px 0px"><!--面包屑开始--><ol class="breadcrumb"><li class="active"><a style="color: #232323;">会计是否在岗配置表</a></li></ol></div><!--面包屑结束--><div class="ibox"><div class="ibox-content"><div id="tt" style="display: block;"><div class="row"><div class="col-sm-3"><div class="form-group"><label class="font-noraml">会计组名称</label><input type="text" id="teamname"  name="teamname" class="form-control" style="width: 100%;height: auto"></div><div class="display-none"><div class="form-group"><label class="font-noraml">坐席状态</label><select name="seatstate" id="seatstate" class="form-control"><option value="">请选择</option><option value="1">在岗</option><option value="0">不在岗</option></select></div></div></div><div class="col-sm-3"><div class="form-group"><label class="font-noraml">会计组编号</label><input type="text" id="teamid"  name="teamid" class="form-control" style="width: 100%;height: auto"></div></div><div class="col-sm-3"><div class="form-group"><label class="font-noraml">员工姓名</label><input type="text" id="fullname"  name="fullname" class="form-control" style="width: 100%;height: auto"></div></div><div class="col-sm-3"><div class="form-group"><label class="font-noraml">员工编号</label><input type="text" id="userid"  name="userid" class="form-control" style="width: 100%;height: auto"></div></div></div><div class="row"><div class="col-sm-12"><div class="text-center"style="border-bottom: 1px solid rgba(183,212,246,0.50); padding-bottom: 20px"><button id="showAndHide" type="button"style="background-color: #48A0FF;height: 28px;width: 28px;border: 0px;  background: url(${pageContext.request.contextPath}/newstatic/img/icon/group_12.png) 50% 50%;  border-radius: 2px;color: #FFFFFF;font-size: 14px;">&nbsp;</button><button style="background-color: #48A0FF;height: 28px;width: 100px;border: 0px;border-radius: 2px;color: #FFFFFF;font-size: 14px;" type="button" onclick="onQuery()">查询 </button><button type="button" onclick="reset001()" style="background-color: #B7B9BB;height: 28px;width: 100px;border: 0px;border-radius: 2px;color: #FFFFFF;font-size: 14px;">重置</button></div></div></div></div><div style="margin: 10px 0px 20px 0px; padding-top: 10px"><span style="border: 1px solid #48A0FF;margin-left: -20px;"></span><span style="font-family: MicrosoftYaHei;font-size: 15px;color: #0B112A;margin-left: 13px;">查询结果</span></div><div class="checkListDiv q_mpsdc_body" style="margin-top: -20px;"><table id="dtClaimTodo"class="table table-striped table-hover q_table table_td_left"data-classes="table-no-bordered"data-id-field="" data-click-to-select="true" data-striped="true"data-ajax="claimTodoListSearchAjax"data-side-pagination="server" data-pagination="true" data-page-size="10"data-height="480" data-show-jumpto="true" data-resizable="false"><thead><tr><th data-width="150" data-field="str0" data-formatter="createTdTitle">员工姓名</th><th data-width="150" data-field="str1" data-formatter="createTdTitle">员工编号</th><th data-width="150" data-field="str2" data-formatter="createTdTitle">会计组编号</th><th data-width="250" data-field="str3" data-formatter="createTdTitle">会计组名称</th><th data-width="100" data-field="str7" data-formatter="createTdTitle">修改人编码                            </th><th data-width="100" data-field="str6" data-formatter="createTdTitle">修改人</th><th data-width="100" data-field="str8" data-formatter="createTdTitle">修改时间</th><th data-width="100" data-field="str4" data-formatter="renderOption">座席状态</th></tr></thead></table></div></div></div></div></div></div><br/><br/><br/><div class="navbar-fixed-bottom"style="height: 80px;width:100%;background: #FFFFFF;box-shadow: 0 -2px 10px 0 #C0DFFF;padding: 20px 60px;z-index: 10000;"></div><%-- </div>--%></div>
      </form>

      getTprocAccountantteamUserStateList.jsp

      <script>var curPortalUserGroupId = "";var user;var commonUiDataBindService4QueryList = new CommonUiDataBindService4QueryList("myTodo");$(function () {$("#showAndHide").click(function () {$(".display-none").slideToggle(function () {});$(this).toggleClass('showAndHide-active');});$('#hh').click(function () {$('#tt').slideToggle();});$("#seatstate").chosen();$("#dtClaimTodo").bootstrapTable();//初始化表格
          });//=================================================查询条件========================================================================function onQuery(){$('#dtClaimTodo').bootstrapTable('refresh');}function reset001(){$("#queryForm input").val("");$("#queryForm select").val("");$("#queryForm select").trigger("chosen:updated");}//====================================================列表=======================================================function claimTodoListSearchAjax(params) {//数据查询ajaxvar paramUrl = contextPath + "/commonbizajax2report.do?requestId=listProcAccountantStateService";var queryResultModel = "str0,str1,str2,str3,str4,str5,str7,str6,str8";var data ={queryResultModel : queryResultModel};data = generateSearchConditionAndUpd2Ui(commonUiDataBindService4QueryList,this,"queryForm",data);loadBootstrapTableData(this, paramUrl, params, $('#queryForm'),data,setParam);//ajax加载表格
          }function setParam(data) {curPortalUserGroupId = JSON.parse(data.user).curGroupId;user = data.user;}function renderOption(value, row, index, field) {var result="";if(value =='1'){result += '<input type="radio" name=\"'+index+'\" checked="checked" οnclick="update(\''+row.str5+'\',1);" value="1" /><label class="font-noraml">在岗</label>&nbsp;&nbsp;&nbsp;';result += '<input type="radio" name=\"'+index+'\" οnclick="update(\''+row.str5+'\',0);" value="0" /><label class="font-noraml">不在岗</label>';}else{result += '<input type="radio" name=\"'+index+'\" οnclick="update(\''+row.str5+'\',1);" value="1" /><label class="font-noraml">在岗</label>&nbsp;&nbsp;&nbsp;';result += '<input type="radio" name=\"'+index+'\" checked="checked" οnclick="update(\''+row.str5+'\',0);" value="0" /><label class="font-noraml">不在岗</label>';}return result;}function update(id,obj){var url=doProcessUrl(contextPath +"/commonbizajax.do?requestId=updateTprocAccountantteamUserState&id="+id+"&seatstate="+obj);return ajaxService.post({ url: url, data: null}).done(function (ajaxResponse) {if (ajaxResponse.result == AjaxResultFlag.OK) {MessageBox.notice("更新坐席状态成功!");$('#dtClaimTodo').bootstrapTable('refresh');}else{MessageBox.error("更新坐席状态失败!");}});}
      </script>

      getTprocAccountantteamUserStateList.jsp的js代码

    • 要完成这个功能需要对两个功能做修改,【更新】和【查询】,对应jsp方法为update(id,obj)claimTodoListSearchAjax(params),可以看到两个方法拼接了URL,"/commonbizajax2report.do?requestId=listProcAccountantStateService",因为项目使用Struts1,通过requestId寻找控制器xxxaction.xml,相关代码如下:

      <!-- 会计是否在岗配置表  开始 --><action requestId="listProcAccountantStateService" service="tprocAccountantteamService" method="getTprocAccountantteamUserStateList" path="/pages/workflow/getTprocAccountantteamUserStateList.jsp" /><action requestId="updateTprocAccountantteamUserState" service="tprocAccountantteamService" method="updateTprocAccountantteamUserState" ><result name="SUCCESS" type="redirect" path="/service.do?requestId=listProcAccountantStateService"/><result name="ERROR" path="/newPages/efinance/common/errors.jsp" /></action><!-- 会计是否在岗配置表  结束 -->

      Action-config-workflow.xml

    • 通过service以及method找到对应的serviceImpl:tprocAccountantteamServiceImpl,相关内容如下:

      public void getTprocAccountantteamUserStateList(IMessageObject mo)throws BusinessException, UnsupportedEncodingException {Map inputMap = mo.getInputMap();PageModel pm = PageUtil.getPageModel(mo);try {tprocAccountantteamDAO.getTprocAccountantteamUserStateList(pm, mo);} catch (DBException e) {e.printStackTrace();throw new BusinessException(e.getMessage());}mo.setOutput(pm);}public void updateTprocAccountantteamUserState (IMessageObject mo)  throws BusinessException {String  id =(String) mo.getInput("id");TProcAccountantteamUser user =tprocAccountantteamDAO.get(TProcAccountantteamUser.class, Long.parseLong(id));String seatstate =(String) mo.getInput("seatstate");String modifierName = mo.getUser().getFullname();String modifierId = mo.getUser().getUsername();tprocAccountantteamDAO.updateComsegcodeStatus(id,seatstate,modifierId,modifierName);if(seatstate!=null&&seatstate.equals("1")){Long handleCount=tprocAccountantteamDAO.matchCurrentOrder(String.valueOf(user.getTeamId()));user.setHandleCount(handleCount);user.setModifierName(modifierName);user.setModifierId(modifierId);tprocAccountantteamDAO.update(user);}SysLogUtils.saveSysLog("T_PROC_ACCOUNTANTTEAM_USER", "会计组人员", mo.getUser().getUserid(), modifierId, mo.getUser().getFullname(), new Date(), "修改", mo.getUser().getUserid()+"","会计组Id:"+ user.getTeamId()+"人员Id:"+user.getUserId()+" 改在岗状态为"+seatstate);}

      tprocAccountantteamServiceImpl.java

      相应的实体类和数据层为:TProcAccountantteamUser和tprocAccountantteamDAOImpl,相关代码如下:

      import java.io.Serializable;
      import java.util.Date;@SuppressWarnings("serial")
      public class TProcAccountantteamUser implements Serializable {private Long id;private Long compId;private Long teamId;private String teamName;private Long userId;private String userName;private String fullName;private Long groupId;private String groupName;private Long order;private String operatorUsername;private Date operatorDate;private String operatorIp;private String modifierId;private String modifierName;private Date modifierTime;private String seatState;private String groupLeader;private String userNo;private String teamNo;private String isReviewAccount;private String reviewAccountNo;private String reviewAccount;private Long   handleCount;private Long   index;

      TProcAccountantteamUser.java

      public void getTprocAccountantteamUserStateList(PageModel pageModel, IMessageObject mo) throws DBException{try{Map inputMap = mo.getInputMap();String compId = mo.getUser().getCurCompId();StringBuffer sql = new StringBuffer("");sql.append("select tu.full_name  as  fullname, ");//0sql.append(" tu.user_name as  username,            ");//1sql.append(" t.team_no   as  teamno,");//2sql.append(" t.team_name  as  teamname, ");//3sql.append(" tu.seatstate  as  seatstate, ");//4sql.append(" tu.id  as  id ,");//5sql.append(" tu.modifier_Id  as  modifierId ,");//6sql.append(" tu.modifier_Name  as  modifierName ,");//7sql.append(" tu.modifier_Time  as  modifierTime");//8
                  sql.append(" from t_Proc_Accountantteam_user tu");sql.append(" left join t_proc_accountantteam t ");sql.append(" on tu.team_id = t.id ");sql.append(" where   t.comp_id =  "+compId);sql.append("   and t.isenable = '1' ");String fullname = (String)inputMap.get("fullname");if (fullname!=null && !"".equals(fullname)){sql.append(" and tu.full_name like '%"+fullname.trim()+"%' ");}String userid = (String)inputMap.get("userid");if (userid!=null && !"".equals(userid)){sql.append(" and tu.user_name = '"+userid.trim()+"' ");}String teamid = (String)inputMap.get("teamid");if (teamid!=null && !"".equals(teamid)){sql.append(" and t.team_no like '%"+teamid.trim()+"%'  ");}String teamname = (String)inputMap.get("teamname");if (teamname!=null && !"".equals(teamname)){sql.append(" and t.team_name like  '%"+teamname.trim()+"%' ");}String seatstate = (String)inputMap.get("seatstate");if (seatstate!=null && !"".equals(seatstate)){sql.append(" and tu.seatstate =  '"+seatstate+"' ");}sql.append(" order by  t.id");System.out.println(sql);this.findsqlPageModel(pageModel, sql.toString());}catch(Exception e){e.printStackTrace();}}public boolean updateComsegcodeStatus(String id,String status,String modifierId,String modifierName) {boolean ret = true;StringBuilder sql = new StringBuilder();sql.append("update t_Proc_Accountantteam_user set ");sql.append(" seatstate = ?, ");sql.append(" modifier_Name = ?, ");sql.append(" modifier_Id = ?, ");sql.append(" modifier_Time = sysdate ");sql.append(" where id = ? ");try {this.excuteSql(sql.toString(),new Object[]{status,modifierId,modifierName,id});} catch (DBException e) {// TODO Auto-generated catch block
                      e.printStackTrace();}return  ret;}

      tprocAccountantteamDAOImpl.java

    • 任务相关主要代码查找完毕,分析业务逻辑知,需要的工作为对service层、Dao层和前台代码做相应的修改,将用户的修改操作记录到数据库,并且通过list方法从数据库将信息取出,同时在点击【在岗】/【不在岗】刷新页面显示结果。简单的来说,首先在数据库、实体类【TProcAccountantteamUser】和jsp【getTprocAccountantteamUserStateList.jsp】分别增加关于操作记录的三条字段。然后在tprocAccountantteamDAOImpl对查询和更新方法修改sql语句。最后关于修改【坐席状态】时页面刷新,在jsp做相应的修改。
  • 第二步 根据需求修改代码
    • 在数据库(oracle数据库)增加三条字段

      alter table t_Proc_Accountantteam_user add(MODIFIER_ID varchar2(50));
      alter table t_Proc_Accountantteam_user add(MODIFIER_NAME varchar2(50));
      alter table t_Proc_Accountantteam_user add(MODIFIER_TIME timestamp);

    • 在实体类(TProcAccountantteamUser)增加三条字段
      private String modifierId;//修改人private String modifierName;//修改人编码private Date modifierTime;//修改时间

    • 在jsp(getTprocAccountantteamUserStateList)增加三条信息
      <th data-width="100" data-field="str6" data-formatter="createTdTitle">修改人编码                            </th><th data-width="100" data-field="str7" data-formatter="createTdTitle">修改人</th><th data-width="100" data-field="str8" data-formatter="createTdTitle">修改时间</th>

    • 对tprocAccountantteamDAOImpl修改sql代码,并在tprocAccountantteamServiceImpl进行相应的修改,修改【更新】方法时,【修改人操作时间】使用的是数据库提供的时间sysdate,所以在serviceImpl也就不需要提取用户的当前时间,
      String modifierName = mo.getUser().getFullname();
      String modifierId = mo.getUser().getUsername();

      public boolean updateComsegcodeStatus(String id,String status,String modifierId,String modifierName) {boolean ret = true;StringBuilder sql = new StringBuilder();sql.append("update t_Proc_Accountantteam_user set ");sql.append(" seatstate = ?, ");sql.append(" modifier_Name = ?, ");sql.append(" modifier_Id = ?, ");sql.append(" modifier_Time = sysdate ");sql.append(" where id = ? ");try {this.excuteSql(sql.toString(),new Object[]{status,modifierName,modifierId,id});} catch (DBException e) {e.printStackTrace();}return  ret;

      TprocAccountantteamDAOImpl

      拼接三条更新字段的sql

      sql.append(" modifier_Name = ?, ");
      sql.append(" modifier_Id = ?, ");
      sql.append(" modifier_Time = sysdate ");

      修改【查询】方法,拼接select三条字段的sql

      public void getTprocAccountantteamUserStateList(PageModel pageModel, IMessageObject mo) throws DBException{try{Map inputMap = mo.getInputMap();String compId = mo.getUser().getCurCompId();StringBuffer sql = new StringBuffer("");sql.append("select tu.full_name  as  fullname, ");//0sql.append(" tu.user_name as  username,            ");//1sql.append(" t.team_no   as  teamno,");//2sql.append(" t.team_name  as  teamname, ");//3sql.append(" tu.seatstate  as  seatstate, ");//4sql.append(" tu.id  as  id ,");//5sql.append(" tu.modifier_Id  as  modifierId ,");//6sql.append(" tu.modifier_Name  as  modifierName ,");//7sql.append(" tu.modifier_Time  as  modifierTime");//8
                  sql.append(" from t_Proc_Accountantteam_user tu");sql.append(" left join t_proc_accountantteam t ");sql.append(" on tu.team_id = t.id ");sql.append(" where   t.comp_id =  "+compId);sql.append("   and t.isenable = '1' ");String fullname = (String)inputMap.get("fullname");if (fullname!=null && !"".equals(fullname)){sql.append(" and tu.full_name like '%"+fullname.trim()+"%' ");}String userid = (String)inputMap.get("userid");if (userid!=null && !"".equals(userid)){sql.append(" and tu.user_name = '"+userid.trim()+"' ");}String teamid = (String)inputMap.get("teamid");if (teamid!=null && !"".equals(teamid)){sql.append(" and t.team_no like '%"+teamid.trim()+"%'  ");}String teamname = (String)inputMap.get("teamname");if (teamname!=null && !"".equals(teamname)){sql.append(" and t.team_name like  '%"+teamname.trim()+"%' ");}String seatstate = (String)inputMap.get("seatstate");if (seatstate!=null && !"".equals(seatstate)){sql.append(" and tu.seatstate =  '"+seatstate+"' ");}sql.append(" order by  t.id");System.out.println(sql);this.findsqlPageModel(pageModel, sql.toString());}catch(Exception e){e.printStackTrace();}}

      TprocAccountantteamDAOImpl

      sql.append(" tu.modifier_Id  as  modifierId ,");//6
      sql.append(" tu.modifier_Name  as  modifierName ,");//7
      sql.append(" tu.modifier_Time  as  modifierTime");//8

    • 这里可以看到使用的是典型的MVC设计模式思想,orm框架使用的是hibernate,通过Struts的action.xml耦合前台页面和后台系统。

    • 该需求还有一个功能是当操作人修改【坐席状态】要求页面响应,刷新出操作记录,这个功能需要对jsp页面的js代码进行修改,更新坐席状态成功时,使用bootstrap更新页面

      function update(id,obj){var url=doProcessUrl(contextPath +"/commonbizajax.do?requestId=updateTprocAccountantteamUserState&id="+id+"&seatstate="+obj);return ajaxService.post({ url: url, data: null}).done(function (ajaxResponse) {if (ajaxResponse.result == AjaxResultFlag.OK) {MessageBox.notice("更新坐席状态成功!");$('#dtClaimTodo').bootstrapTable('refresh');}else{MessageBox.error("更新坐席状态失败!");}});}

      update

      $('#dtClaimTodo').bootstrapTable('refresh');

  • 第三步 测试代码

转载于:https://www.cnblogs.com/bjm1/p/10299530.html

IBM实习工作(一)相关推荐

  1. IBM实习工作(二)

    2019年秋招前夕再次到ibm项目组参加实习两周,这次主要负责的需求是建立牛奶数据池,在二级菜单建立对账单数据池,数据由Excel导入生成. 分析整个需求,主要分为以下几块: 1.牛奶数据池前台页面, ...

  2. 技术之美[程序人生]我在IBM实习的日子

    写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布日期,才发现,我已经将近三个月没有更新博客了,多么惊人!为什么这么久?期间发生了很多事情.最重要的一件就是我大学毕业了!毕业的那么平淡, ...

  3. 我在IBM实习的日子

    写这篇文章的时候,我已经在IBM正式工作了.最重要的一件就是我大学毕业了!毕业的那么平淡,很多同学说,似乎一下子从学校出来,放下书本,略有不适应.而我却没有毕业的感觉,正如四年前一样,高中毕业,我同样 ...

  4. 我在IBM实习的日子——关于实习的态度

    转自http://blog.csdn.net/zhangerqing/article/details/9361195#comments 写这篇文章的时候,我已经在IBM正式工作了,看看上一篇博文的发布 ...

  5. 我的梦幻动画实习工作总结

    我的梦幻动画实习工作总结 敬爱的公司领导和同事们: 您们好! 请允许我郑重地向您们说声谢谢:感谢公司领导(赵嘉敏等)允许我来到梦幻动画公司进行为期三个月的实习:感谢刘伟.赵川.张宁和武文超等技术部员工 ...

  6. 应届生去软通动力怎么样_超强干货:应届生如何找实习工作?

    在这金九银十的季节,很多应届生都在忙着秋招. 不管是宣讲会还是招聘会可能都跑了个遍. 因为每天有很多应届生咨询我求职的事情. 今天索性就用一篇文章争取为大家讲透应届生如何找实习工作? 其实对于应届生来 ...

  7. 10.28-11.1-广州软件所-实习工作日记

    10.28 电话面试 10.29 今天问题 开关设备异常.下午可以正常开关的代码,突然无法正常控制.检测过波形,波形输出是正常的. 遗留工作 Mix.Curtain 广播MAC检测 完成工作 [完善文 ...

  8. 如何找实习工作?怎么准备?

    你好,我是田哥. 最近,有不少朋友咨询我:如何准备找实习工作? 下学习就大四了,很多人还在愁如何准备找实习工作,由于学校学的和工作中用的技术,存在一些偏差,所以,仅仅是学校学的那点知识,出来找工作肯定 ...

  9. 2019暑假找实习工作经历-我太难了

    从七月份开始找工作到现在终于在一家公司安定下来,路程别提多坎坷了,记录一下这几个月的心酸 好长时间没登陆了,浏览量都十万了,好开心,最近也没什么技术博客可写的,不过有一份珍藏的百度面经,2019.7最 ...

最新文章

  1. 如何用Python实现多任务版的udp聊天器
  2. 55篇世界上著名博客的经验之谈
  3. MATLAB编程练习题
  4. 数据结构与算法—单源最短路径dijkstra算法
  5. python迭代器和生成器_Python之迭代器和生成器
  6. 吴恩达:机器学习应以数据为中心
  7. S5700日志查看与清空
  8. Python 最强编辑器PyCharm详细使用指南!
  9. 关于火狐浏览器在ubuntu和安卓手机上的同步
  10. mysql数据库获得时间段内数据_mysql 获取规定时间段内的统计数据
  11. python ls_linux 常用shell命令 ls
  12. 产品上线过程中犯下的错误
  13. 2019118_四个化学数据分析(4)
  14. toString()和valueOf()重写的区别
  15. 我的世界服务器光影文件夹,我的世界光影怎么开?中国版介绍
  16. NATAPP内网穿透
  17. visio如何使箭头指向插图的任意一处
  18. C#模拟union接收
  19. 《诗经·陈风·月出》presentation
  20. android 打印kernel log,Android native log输出为kernel log方法

热门文章

  1. 使用ASP.NET技术开发网上书店
  2. 浅议驻波测量中的经典误差
  3. 安卓虚拟键盘_Logitech罗技 key to go蓝牙键盘使用体验
  4. 20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结
  5. 大一java实验课_JAVA实验课填空题集合.doc
  6. mysql 计算农历_MySQL 获取农历年函数
  7. 什么是SPAM行为?
  8. 沁路墨彦文集:《闭关与梦的思索》
  9. 做网站选择虚拟主机好是服务器,做网站选择虚拟主机还是服务器
  10. 智能突触《Continual Learning Through Synaptic Intelligence》(SI)