package com.huimv.sjlr; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.util.StringUtils; import org.springframework.web.servlet.ModelAndView; import com.huimv.busi.xt.constant.XtAppConstant; import com.huimv.busi.xt.constant.XtSearchSqlConstant; import com.huimv.busi.xt.model.CommonService; import com.huimv.busi.xt.utils.DateUtil; import com.huimv.dto.SjlrCjjlDTO; import com.huimv.sjlr.dao.SjlrCjjlDAO; import com.huimv.sjlr.dao.SjlrGzdaDAO; import com.huimv.sjlr.dao.SjlrMzdaDAO; import com.huimv.sjlr.dataobject.SjlrCjjl; import com.huimv.sjlr.dataobject.SjlrCjjlExample; import com.huimv.sjlr.dataobject.SjlrGzda; import com.huimv.sjlr.dataobject.SjlrGzdaExample; import com.huimv.sjlr.dataobject.SjlrMzda; import com.huimv.web.base.BaseController; import com.huimv.xt.dao.XtGydmDAO; import com.huimv.xt.dataobject.XtGydm; public class SjlrCjHpController extends BaseController { private CommonService commonService; private XtGydmDAO xtGydmDAO; private SjlrGzdaDAO sjlrGzdaDAO; private SjlrCjjlDAO sjlrCjjlDAO; private SjlrMzdaDAO sjlrMzdaDAO; /** * 加载档案 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrCjIndex(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/cj/hpSjlrCjIndex.htm"); Map paramMap = new HashMap(); Map paramMap1 = new HashMap(); String dweb = request.getParameter("dweb"); String mcid = request.getParameter("mcid"); String ksrq = request.getParameter("ksrq"); String jsrq = request.getParameter("jsrq"); String searchFlag = request.getParameter("searchFlag"); String cxeph = request.getParameter("cxeph");//查询耳牌号 if (StringUtils.hasText(mcid)) { paramMap.put("mcid", mcid); paramMap.put("order", XtSearchSqlConstant.order_by_cj); if (!StringUtils.hasText(searchFlag)) { searchFlag = "0";//如果没有,默认是耳标搜索页面 } mv.addObject("searchFlag", searchFlag); if (XtAppConstant.HAIFMP_SEARCH_FLAG_DATE.equals(searchFlag)) {//日期搜索页面 if (!StringUtils.hasText(jsrq)) { jsrq = DateUtil.parserDateToDefaultString(commonService.getCurrentDate()); } paramMap.put("jsrq", jsrq); mv.addObject("jsrq", jsrq); if (!StringUtils.hasText(ksrq)) { Calendar calendar = new GregorianCalendar(); calendar.setTime(commonService.getCurrentDate()); calendar.add(Calendar.DATE, -7); ksrq = DateUtil.parserDateToDefaultString(calendar.getTime()); } paramMap.put("ksrq", ksrq); mv.addObject("ksrq", ksrq); } else { //耳标搜索页面,无耳标显示当天,有耳标显示当前耳标下全部 if (StringUtils.hasText(dweb)) { //根据耳标号 paramMap.put("dweb", "%" + dweb + "%"); mv.addObject("dweb",dweb); } else if (StringUtils.hasText(cxeph)) { //根据耳牌号查 paramMap.put("cxeph", "%" + cxeph + "%"); mv.addObject("dweb",cxeph); } else if (StringUtils.hasText(cxeph)) { //根据耳牌号查耳标号再查 paramMap1.put("eph", "%" + cxeph + "%"); List daList = sjlrMzdaDAO.getDaListByZzds(paramMap1); dweb = daList.get(0).getDweb(); paramMap.put("dweb", dweb); mv.addObject("dweb",cxeph); } else { jsrq = ksrq = DateUtil.parserDateToDefaultString(commonService.getCurrentDate()); paramMap.put("jsrq", jsrq); paramMap.put("ksrq", ksrq); } } List sfhgList = getGydm(XtAppConstant.CODE_SFHG); List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List cjjlList = sjlrCjjlDAO.selectCjjlListByParam(paramMap); if (cjjlList.size() == 0 && searchFlag.equals("0")) {//如果当天没有则取最近一天 Map paramMapPz = new HashMap(); paramMapPz.put("order", XtSearchSqlConstant.order_by_cj); List cjjlListCj = sjlrCjjlDAO.selectCjjlListByParam(paramMapPz); if (cjjlListCj.size() > 0) { String lastCjsj = DateUtil.parserDateToDefaultString(cjjlListCj.get(0).getCjsj()); String lastJsrq = lastCjsj; String lastksrq = lastJsrq; paramMap.put("jsrq", lastJsrq); paramMap.put("ksrq", lastksrq); cjjlList.clear(); cjjlList = sjlrCjjlDAO.selectCjjlListByParam(paramMap); } } List cjjlDTOList = new ArrayList(); SjlrCjjlDTO sjlrCjjlDTO = null; String date = ""; int count = 0; List cjList = null; if (cjjlList != null && cjjlList.size() > 0) { for (int i = 0; i < cjjlList.size(); i++) { SjlrCjjl sjlrCjjl = cjjlList.get(i); //根据耳标号查询耳牌号 SjlrGzdaExample gzEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria gzCr = gzEx.createCriteria(); gzCr.andDwebEqualTo(sjlrCjjl.getDweb()).andMcidEqualTo(Integer.parseInt(mcid)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); String eph = sjlrGzdaDAO.selectByExample(gzEx).get(0).getEph(); sjlrCjjl.setEph(eph); //上次采精时间 Map paramMapByDweb = new HashMap(); paramMapByDweb.put("dweb", sjlrCjjl.getDweb()); paramMapByDweb.put("lastCjsj", DateUtil.parserDateToDefaultString2(sjlrCjjl.getCjsj())); List cjjlListByDweb = sjlrCjjlDAO.selectCjjlListByParam(paramMapByDweb); int size = cjjlListByDweb.size(); if (size > 1) {//有上次采精记录 sjlrCjjl.setLastCjsj(DateUtil.parserDateToDefaultString2(cjjlListByDweb.get(0).getCjsj())); } else { sjlrCjjl.setLastCjsj(""); } //是否合格 if (sjlrCjjl.getSfhg() != null) { for (XtGydm xtGydm : sfhgList) { if (xtGydm.getDmid().equals(String.valueOf(sjlrCjjl.getSfhg()))) { sjlrCjjl.setSfhgStr(xtGydm.getDmmc()); } } } //舍栏 if (StringUtils.hasText(sjlrCjjl.getSl())) { for (XtGydm xtGydm : slList) { if (xtGydm.getDmid().equals(sjlrCjjl.getSl())) { sjlrCjjl.setSlStr(xtGydm.getDmmc()); } } } if (StringUtils.hasText(sjlrCjjl.getSlStr())) { if (sjlrCjjl.getSlStr().length() > 4) { sjlrCjjl.setIsSlFlag("false"); } else { sjlrCjjl.setIsSlFlag("true"); } } else { sjlrCjjl.setIsSlFlag("true"); } //业务逻辑 if (i == 0) { sjlrCjjlDTO = new SjlrCjjlDTO(); cjList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrCjjl.getCjsj()); sjlrCjjlDTO.setCjrq(date); cjList.add(sjlrCjjl); count ++; } else { if (DateUtil.parserDateToDefaultString(sjlrCjjl.getCjsj()).equals(date)) { count ++; cjList.add(sjlrCjjl); } else { sjlrCjjlDTO.setCjjlList(cjList); sjlrCjjlDTO.setCount(count); cjjlDTOList.add(sjlrCjjlDTO); sjlrCjjlDTO = new SjlrCjjlDTO(); cjList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrCjjl.getCjsj()); sjlrCjjlDTO.setCjrq(date); cjList.add(sjlrCjjl); count = 1; } } } if (count > 0) { sjlrCjjlDTO.setCjjlList(cjList); sjlrCjjlDTO.setCount(count); cjjlDTOList.add(sjlrCjjlDTO); } mv.addObject("cjjlDTOList", cjjlDTOList); } } dweb = cxeph; mv.addObject("dweb", dweb); return mv; } /** * 加载采精记录新增页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrCjAdd(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/cj/hpSjlrCjjlAdd.htm"); String mcid = request.getParameter("mcid"); String id = request.getParameter("id"); String dweb = request.getParameter("dweb"); String date = request.getParameter("date"); String eph = request.getParameter("eph"); mv.addObject("eph",eph); SjlrCjjl sjlrCjjl = new SjlrCjjl(); if (StringUtils.hasText(mcid)) { if (StringUtils.hasText(id)) { //有ID ,修改 sjlrCjjl = sjlrCjjlDAO.selectByPrimaryKey(Integer.parseInt(id)); dweb = sjlrCjjl.getDweb(); if (StringUtils.hasText(dweb)) { //获得采精舍栏和耳牌号 SjlrGzdaExample gzdaEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria gzdaCr = gzdaEx.createCriteria(); gzdaCr.andDwebEqualTo(sjlrCjjl.getDweb()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); if (StringUtils.hasText(mcid)) { gzdaCr.andMcidEqualTo(Integer.parseInt(mcid)); } List gzdaList = sjlrGzdaDAO.selectByExample(gzdaEx); if (gzdaList != null && gzdaList.size() > 0) { sjlrCjjl.setCjsl(gzdaList.get(0).getSl()); sjlrCjjl.setEph(gzdaList.get(0).getEph()); } } mv.addObject("id",id); } else {// 没有ID 新增 if (StringUtils.hasText(dweb)) { //有动物耳标,说明是从search传值 sjlrCjjl.setDweb(dweb); SjlrGzdaExample gzdaEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria gzdaCr = gzdaEx.createCriteria(); gzdaCr.andDwebEqualTo(sjlrCjjl.getDweb()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); if (StringUtils.hasText(mcid)) { gzdaCr.andMcidEqualTo(Integer.parseInt(mcid)); } List gzdaList = sjlrGzdaDAO.selectByExample(gzdaEx); if (gzdaList != null && gzdaList.size() > 0) { sjlrCjjl.setCjsl(gzdaList.get(0).getSl()); sjlrCjjl.setDweb(dweb); sjlrCjjl.setEph(eph); } } } if (date != null) { SimpleDateFormat sdf=new SimpleDateFormat(XtAppConstant.TIME_FORMAT); java.util.Date newdate=sdf.parse(date.toString()); sjlrCjjl.setCjsj(newdate); }else { if (sjlrCjjl.getCjsj() == null) { sjlrCjjl.setCjsj(commonService.getCurrentDate()); } } } List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List zcycList = getGydm(XtAppConstant.CODE_ZCYC); List sfhgList = getGydm(XtAppConstant.CODE_SFHG); mv.addObject("sfhgList", sfhgList); mv.addObject("slList", slList); mv.addObject("zcycList", zcycList); mv.addObject("sjlrCjjl", sjlrCjjl); mv.addObject("date",date); mv.addObject("dweb",dweb); return mv; } /** * 采精保存 * @param request * @throws Exception */ public void saveSjlrCjjl(HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/json; charset=UTF-8"); response.addHeader("Cache-Control", "no-cache,must-revalidate"); response.addHeader("Pragma", "no-cache"); SjlrCjjl sjlrCjjl = new SjlrCjjl(); String dweb = request.getParameter("dweb"); sjlrCjjl = (SjlrCjjl) parseObjectFromRequest(request, sjlrCjjl); sjlrCjjl.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrCjjl.setXgsj(commonService.getCurrentDate()); sjlrCjjl.setZfbz(XtAppConstant.ZFBZ_VALID); if (StringUtils.hasText(dweb)) { sjlrCjjl.setDweb(dweb); } String id = request.getParameter("id"); if (StringUtils.hasText(id)) { sjlrCjjl.setId(Integer.parseInt(id)); } if (!StringUtils.hasText(sjlrCjjl.getCjl())) { sjlrCjjl.setCjl("0"); } if (!StringUtils.hasText(sjlrCjjl.getXsy())) { sjlrCjjl.setXsy("0"); } if (!StringUtils.hasText(sjlrCjjl.getMd())) { sjlrCjjl.setMd("0"); } if (!StringUtils.hasText(sjlrCjjl.getJzhl())) { sjlrCjjl.setJzhl("0"); } if (!StringUtils.hasText(sjlrCjjl.getZbfs())) { sjlrCjjl.setZbfs("0"); } //采精时间不能小于入栏日期 SjlrGzdaExample gzEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria gzCr = gzEx.createCriteria(); if (StringUtils.hasText(sjlrCjjl.getDweb())) { gzCr.andDwebEqualTo(sjlrCjjl.getDweb()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); Date rlrq = sjlrGzdaDAO.selectByExample(gzEx).get(0).getRlrq(); String date = request.getParameter("date"); if (StringUtils.hasText(date)) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date cjsj = sdf.parse(date); if (rlrq != null & cjsj != null) { if (rlrq.getTime() > cjsj.getTime()) { String jsonStr = "{\"count\" : \"2\"}"; response.getWriter().write(jsonStr); return; } } } } if (sjlrCjjl.getId() != null && sjlrCjjl.getId() != 0) { sjlrCjjlDAO.updateByPrimaryKeySelective(sjlrCjjl); } else { sjlrCjjlDAO.insertSelective(sjlrCjjl); } String cjsl = sjlrCjjl.getCjsl(); if (StringUtils.hasText(cjsl)) { SjlrGzdaExample gzdaEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria gzdaCr = gzdaEx.createCriteria(); gzdaCr.andDwebEqualTo(sjlrCjjl.getDweb()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); String mcid = request.getParameter("mcid"); if (StringUtils.hasText(mcid)) { gzdaCr.andMcidEqualTo(Integer.parseInt(mcid)); } SjlrGzda sjlrGzda = new SjlrGzda(); sjlrGzda.setSl(cjsl); sjlrGzda.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrGzda.setXgsj(commonService.getCurrentDate()); sjlrGzdaDAO.updateByExampleSelective(sjlrGzda, gzdaEx); } String jsonStr = "{\"count\" : \"1\"}"; response.getWriter().write(jsonStr); } /** * 是否是24小时之内的数据 * @param request * @throws Exception */ public void checkDataIsIn24H(HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("text/json; charset=UTF-8"); response.addHeader("Cache-Control", "no-cache,must-revalidate"); response.addHeader("Pragma", "no-cache"); String id = request.getParameter("id"); String jsonStr = ""; if (StringUtils.hasText(id)) { SjlrCjjlExample cjjlEx = new SjlrCjjlExample(); SjlrCjjlExample.Criteria cjllCr = cjjlEx.createCriteria(); cjllCr.andIdEqualTo(Integer.valueOf(id)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); List cjjlList = sjlrCjjlDAO.selectByExample(cjjlEx); if (cjjlList.size() > 0) { boolean isIn24H = commonService.getCurrentDate().getTime() - cjjlList.get(0).getCjsj().getTime() <= 24*60*60*1000; if (isIn24H) { jsonStr = "{\"count\" : \"1\"}"; } else { jsonStr = "{\"count\" : \"0\"}"; } } } response.getWriter().write(jsonStr); } /** * 耳标公共查询页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView getCjjlSearchDweb(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/cj/cjjlSearchModel.htm"); String mcid = request.getParameter("mcid"); String date = request.getParameter("date"); String dweb = request.getParameter("dweb"); String cxeph = request.getParameter("cxeph"); Date drcjsj = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (StringUtils.hasText(date)) { drcjsj = sdf.parse(date); } if (StringUtils.hasText(mcid)) { List dqztSearchList = new ArrayList(); SjlrGzdaExample gzdaEx = new SjlrGzdaExample(); SjlrGzdaExample.Criteria cr = gzdaEx.createCriteria(); dqztSearchList.add("1");//后备 dqztSearchList.add("11");//其他 dqztSearchList.add("9");//在场 cr.andDqztIn(dqztSearchList); cr.andZfbzEqualTo(XtAppConstant.ZFBZ_VALID).andMcidEqualTo(Integer.parseInt(mcid)); cr.andLcrqIsNull(); if (StringUtils.hasText(dweb)) { cr.andDwebLike("%" + dweb + "%"); mv.addObject("dweb",dweb); }else if (StringUtils.hasText(cxeph)) { cr.andEphLike("%" + cxeph + "%"); mv.addObject("dweb",cxeph); } List gzdaList = sjlrGzdaDAO.selectByExample(gzdaEx); List pzList = getGydm(XtAppConstant.CODE_SJLR_ZZPZ); List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List dqztList = getGydm(XtAppConstant.CODE_SJLR_GZZT); if (gzdaList != null && gzdaList.size() > 0) { for (int i = 0; i < gzdaList.size(); i++) { SjlrGzda sjlrGzda = gzdaList.get(i); //上次采精时间 Map paramMapByDweb = new HashMap(); paramMapByDweb.put("dweb", sjlrGzda.getDweb()); paramMapByDweb.put("order", "order by cj.cjsj desc "); List cjjlListByDweb = sjlrCjjlDAO.selectCjjlListByParam(paramMapByDweb); if (cjjlListByDweb.size() > 0) {//有过一次采精记录 if (drcjsj != null ) { sjlrGzda.setLastCjjg((drcjsj.getTime() - cjjlListByDweb.get(0).getCjsj().getTime())/(24 * 60 * 60 * 1000) + ""); }else { sjlrGzda.setLastCjjg((commonService.getCurrentDate().getTime()- cjjlListByDweb.get(0).getCjsj().getTime())/(24 * 60 * 60 * 1000) + ""); } } else {//如果没有采精则为出生至今的时间间隔 if (drcjsj != null) { sjlrGzda.setLastCjjg((drcjsj.getTime()-sjlrGzda.getCsrq().getTime())/(24 * 60 * 60 * 1000) + ""); }else { sjlrGzda.setLastCjjg((commonService.getCurrentDate().getTime()-sjlrGzda.getCsrq().getTime())/(24 * 60 * 60 * 1000) + ""); } } //舍栏 if (StringUtils.hasText(sjlrGzda.getSl())) { for (XtGydm xtGydm : slList) { if (sjlrGzda.getSl().equals(xtGydm.getDmid())) { sjlrGzda.setSlStr(xtGydm.getDmmc()); } } } //品种 //猪只品种 if (StringUtils.hasText(sjlrGzda.getPz())) { for (XtGydm xtGydm : pzList) { if (xtGydm.getDmid().equals(sjlrGzda.getPz())) { sjlrGzda.setPzStr(xtGydm.getDmmc()); } } } //当前状态 if (StringUtils.hasText(sjlrGzda.getDqzt())) { for (XtGydm xtGydm : dqztList) { if (sjlrGzda.getDqzt().equals(xtGydm.getDmid())) { sjlrGzda.setDqztStr(xtGydm.getDmmc()); } } } } } mv.addObject("gzdaList", gzdaList); mv.addObject("date",date); } return mv; } /** * 获取公用代码 * @param lbmc * @return * @throws Exception */ private List getGydm(String lbmc) { return xtGydmDAO.selectGydmByLbmc(lbmc); } public void setCommonService(CommonService commonService) { this.commonService = commonService; } public void setXtGydmDAO(XtGydmDAO xtGydmDAO) { this.xtGydmDAO = xtGydmDAO; } public void setSjlrGzdaDAO(SjlrGzdaDAO sjlrGzdaDAO) { this.sjlrGzdaDAO = sjlrGzdaDAO; } public void setSjlrCjjlDAO(SjlrCjjlDAO sjlrCjjlDAO) { this.sjlrCjjlDAO = sjlrCjjlDAO; } public void setSjlrMzdaDAO(SjlrMzdaDAO sjlrMzdaDAO) { this.sjlrMzdaDAO = sjlrMzdaDAO; } }