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.SjlrRsjlDTO; import com.huimv.sjlr.dao.SjlrFmjlDAO; import com.huimv.sjlr.dao.SjlrMzdaDAO; import com.huimv.sjlr.dao.SjlrPzjlDAO; import com.huimv.sjlr.dao.SjlrRsjlDAO; import com.huimv.sjlr.dataobject.SjlrFmjlExample; import com.huimv.sjlr.dataobject.SjlrMzda; import com.huimv.sjlr.dataobject.SjlrMzdaExample; import com.huimv.sjlr.dataobject.SjlrRsjl; import com.huimv.sjlr.dataobject.SjlrRsjlExample; import com.huimv.web.base.BaseController; import com.huimv.xt.dao.XtGydmDAO; import com.huimv.xt.dataobject.XtGydm; public class SjlrRsHpController extends BaseController { private CommonService commonService; private XtGydmDAO xtGydmDAO; private SjlrMzdaDAO sjlrMzdaDAO; private SjlrRsjlDAO sjlrRsjlDAO; private SjlrPzjlDAO sjlrPzjlDAO; private SjlrFmjlDAO sjlrFmjlDAO; /** * 加载妊娠 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrRsIndex(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/rs/hpSjlrRsIndex.htm"); Map paramMap = new HashMap(); String dweb = request.getParameter("dweb"); String mcid = request.getParameter("mcid"); String ksrq = request.getParameter("ksrq"); String jsrq = request.getParameter("jsrq"); String cxeph = request.getParameter("cxeph"); String searchFlag = request.getParameter("searchFlag"); SjlrRsjl sjlrRsjl = null; SjlrRsjlDTO rsjlDTO = null; List rsDTOList = new ArrayList(); List rsList = null; String date = ""; int count = 0; if (StringUtils.hasText(mcid)) { paramMap.put("mcid", mcid); paramMap.put("order", XtSearchSqlConstant.order_by_rs); 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 { jsrq = ksrq = DateUtil.parserDateToDefaultString(commonService.getCurrentDate()); paramMap.put("jsrq", jsrq); paramMap.put("ksrq", ksrq); } } List rsjlList = sjlrRsjlDAO.selectRsjlListByParam(paramMap); if (rsjlList.size() == 0 && searchFlag.equals("0")) {//如果当天没有则取最近一天 Map paramMapPz = new HashMap(); paramMapPz.put("order", XtSearchSqlConstant.order_by_rs); List rsjlListRs = sjlrRsjlDAO.selectRsjlListByParam(paramMapPz); if (rsjlListRs.size() > 0) { String lastRssj = DateUtil.parserDateToDefaultString(rsjlListRs.get(0).getRssj()); String lastJsrq = lastRssj; String lastksrq = lastJsrq; paramMap.put("jsrq", lastJsrq); paramMap.put("ksrq", lastksrq); rsjlList.clear(); rsjlList = sjlrRsjlDAO.selectRsjlListByParam(paramMap); } } List rsjgList = getGydm(XtAppConstant.CODE_SJLR_RSJG); if(rsjlList != null && rsjlList.size() > 0 ) { for (int i = 0 ; i < rsjlList.size() ; i++) { sjlrRsjl = rsjlList.get(i); //根据耳标号查询耳牌号 SjlrMzdaExample mzEx = new SjlrMzdaExample(); SjlrMzdaExample.Criteria mzCr = mzEx.createCriteria(); mzCr.andDwebEqualTo(sjlrRsjl.getDweb()).andMcidEqualTo(Integer.parseInt(mcid)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); String eph = sjlrMzdaDAO.selectByExample(mzEx).get(0).getEph(); sjlrRsjl.setEph(eph); //舍栏 if (StringUtils.hasText(sjlrRsjl.getRsjg())) { for (XtGydm xtGydm : rsjgList) { if (xtGydm.getDmid().equals(sjlrRsjl.getRsjg())) { sjlrRsjl.setRsjgStr(xtGydm.getDmmc()); } } } //妊娠胎次。 筛选该耳标的妊娠修改时间。所有比这个时间小。妊娠结果为怀孕的记录 SjlrRsjlExample rsEx = new SjlrRsjlExample(); SjlrRsjlExample.Criteria rsCr = rsEx.createCriteria(); List rsjg = new ArrayList(); rsjg.add("2"); rsjg.add("13"); rsCr.andDwebEqualTo(sjlrRsjl.getDweb()).andIdLessThanOrEqualTo(sjlrRsjl.getId()).andRssjLessThanOrEqualTo(sjlrRsjl.getRssj()).andRsjgIn(rsjg).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int rstc = sjlrRsjlDAO.countByExample(rsEx); if (rstc == 0) { sjlrRsjl.setRstc("1"); //如果从没有记录 则妊娠胎次为1 } else { sjlrRsjl.setRstc(String.valueOf(rstc)); } //业务逻辑 if (i == 0) { rsjlDTO = new SjlrRsjlDTO(); rsList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrRsjl.getRssj()); rsjlDTO.setDate(date); rsList.add(sjlrRsjl); count++; }else { if(DateUtil.parserDateToDefaultString(sjlrRsjl.getRssj()).equals(date)) { count++; rsList.add(sjlrRsjl); }else { rsjlDTO.setRsList(rsList); rsjlDTO.setCount(count); rsDTOList.add(rsjlDTO); rsjlDTO = new SjlrRsjlDTO(); rsList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrRsjl.getRssj()); rsjlDTO.setDate(date); rsList.add(sjlrRsjl); count = 1; } } } if (count > 0 ) { rsjlDTO.setRsList(rsList); rsjlDTO.setCount(count); rsDTOList.add(rsjlDTO); } } mv.addObject("rsDTOList", rsDTOList); } mv.addObject("ksrq", ksrq); mv.addObject("jsrq", jsrq); mv.addObject("dweb", dweb); return mv; } /** * 加载妊娠记录新增页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrRsAdd(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/rs/hpSjlrRsjlAdd.htm"); String dweb = request.getParameter("dweb"); String id = request.getParameter("id"); String mcid = request.getParameter("mcid"); String newDate = request.getParameter("date"); String eph = request.getParameter("eph"); Date drrssj = null; SjlrRsjl sjlrRsjl = new SjlrRsjl(); List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List rsjgList = getGydm(XtAppConstant.CODE_SJLR_RSJG); List bzsfList = getGydm(XtAppConstant.CODE_BZSF); List rstcList = null; if ("undefined".equals(id)) { id = null; } if (StringUtils.hasText(mcid)) { Map paramMap = new HashMap(); paramMap.put("mcid", mcid); //修改 if (StringUtils.hasText(id) && !StringUtils.hasText(dweb)) { sjlrRsjl = sjlrRsjlDAO.selectByPrimaryKey(Integer.parseInt(id)); dweb = sjlrRsjl.getDweb(); //根据动物耳标获得耳牌号 SjlrMzdaExample mzEx = new SjlrMzdaExample(); SjlrMzdaExample.Criteria mzCr = mzEx.createCriteria(); mzCr.andDwebEqualTo(sjlrRsjl.getDweb()).andMcidEqualTo(Integer.parseInt(mcid)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); eph = sjlrMzdaDAO.selectByExample(mzEx).get(0).getEph(); sjlrRsjl.setEph(eph); //妊娠胎次。 筛选该耳标的妊娠修改时间。所有比这个时间小。妊娠结果为怀孕的记录 Date rssj = sjlrRsjl.getXgsj(); SjlrRsjlExample rsEx = new SjlrRsjlExample(); SjlrRsjlExample.Criteria rsCr = rsEx.createCriteria(); List rsjg = new ArrayList(); rsjg.add("2"); rsjg.add("13"); rsCr.andDwebEqualTo(sjlrRsjl.getDweb()).andRssjLessThanOrEqualTo(rssj).andIdLessThanOrEqualTo(sjlrRsjl.getId()).andRsjgIn(rsjg).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int rstc = sjlrRsjlDAO.countByExample(rsEx); if (rstc == 0) { sjlrRsjl.setRstc("1"); //如果从没有记录 则妊娠胎次为1 } else { sjlrRsjl.setRstc(String.valueOf(rstc)); } mv.addObject("id",id); mv.addObject("dweb",dweb); id = null; } else if (StringUtils.hasText(dweb) && !StringUtils.hasText(id)) { if (StringUtils.hasText(eph)) { sjlrRsjl.setEph(eph); paramMap.put("dweb", dweb); rstcList = sjlrRsjlDAO.selectRsjlPzListByParam(paramMap); SjlrRsjl sjlrRsjl2 = rstcList.get(0); sjlrRsjl.setRssl(sjlrRsjl2.getSl()); sjlrRsjl.setZrsl(sjlrRsjl2.getSl()); sjlrRsjl.setPzid(Integer.parseInt(sjlrRsjl2.getPzids())); sjlrRsjl.setDweb(dweb); //妊娠胎次。 筛选该耳标的妊娠修改时间。所有比这个时间小。妊娠结果为怀孕的记录 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (StringUtils.hasText(newDate)) { drrssj = sdf.parse(newDate); }else { drrssj = commonService.getCurrentDate(); } SjlrRsjlExample rsEx = new SjlrRsjlExample(); SjlrRsjlExample.Criteria rsCr = rsEx.createCriteria(); List rsjg = new ArrayList(); rsjg.add("2"); rsjg.add("13"); rsCr.andDwebEqualTo(dweb).andRssjLessThan(drrssj).andRsjgIn(rsjg).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int rstc = sjlrRsjlDAO.countByExample(rsEx); if (rstc == 0) { sjlrRsjl.setRstc("1"); //如果从没有记录 则妊娠胎次为1 } else { sjlrRsjl.setRstc(String.valueOf(rstc+1)); } } } } if (newDate != null) { SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT);//小写的mm表示的是分钟 java.util.Date newdate = sdf.parse(newDate); sjlrRsjl.setRssj(newdate); } mv.addObject("bzsfList", bzsfList); mv.addObject("slList", slList); mv.addObject("rsjgList", rsjgList); mv.addObject("sjlrRsjl", sjlrRsjl); mv.addObject("date" , newDate); mv.addObject("dweb",dweb); return mv; } /** * 保存 * @param request * @throws Exception */ public void saveSjlrRsjl(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 dweb = request.getParameter("dweb"); Date rssj = null; //String id = request.getParameter("id"); SjlrRsjl sjlrRsjl = new SjlrRsjl(); sjlrRsjl = (SjlrRsjl) parseObjectFromRequest(request, sjlrRsjl); sjlrRsjl.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrRsjl.setXgsj(commonService.getCurrentDate()); sjlrRsjl.setZfbz(XtAppConstant.ZFBZ_VALID); if (StringUtils.hasText(dweb)) { sjlrRsjl.setDweb(dweb); } //如果这个配种ID已经被用过, 就返回 SjlrRsjlExample rsEx = new SjlrRsjlExample(); SjlrRsjlExample.Criteria rsCr = rsEx.createCriteria(); rsCr.andPzidEqualTo(sjlrRsjl.getPzid()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int pzid = sjlrRsjlDAO.countByExample(rsEx); if (pzid > 0 && sjlrRsjl.getId() == 0) { String jsonStr = "{\"count\" : \"2\"}"; response.getWriter().write(jsonStr); return; } //妊娠时间应该大于配种时间 Date pzsj = sjlrPzjlDAO.selectByPrimaryKey(sjlrRsjl.getPzid()).getPzsj(); if (sjlrRsjl.getId() != 0) { rssj = sjlrRsjlDAO.selectByPrimaryKey(sjlrRsjl.getId()).getRssj(); }else { rssj = sjlrRsjl.getRssj(); } if (pzsj.getTime() > rssj.getTime()) { String jsonStr = "{\"count\" : \"3\"}"; response.getWriter().write(jsonStr); return; } if (sjlrRsjl.getId().equals(0)) { sjlrRsjlDAO.insertSelective(sjlrRsjl); } else { sjlrRsjlDAO.updateByPrimaryKeySelective(sjlrRsjl); } String zrsl = sjlrRsjl.getZrsl(); if (StringUtils.hasText(zrsl)) { SjlrMzdaExample mzdaEx = new SjlrMzdaExample(); SjlrMzdaExample.Criteria mzdaCr = mzdaEx.createCriteria(); mzdaCr.andDwebEqualTo(sjlrRsjl.getDweb()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); String mcid = request.getParameter("mcid"); if (StringUtils.hasText(mcid)) { mzdaCr.andMcidEqualTo(Integer.parseInt(mcid)); } String sczt = sjlrMzdaDAO.selectByExample(mzdaEx).get(0).getDqzt(); SjlrMzda sjlrMzda = new SjlrMzda(); sjlrMzda.setSl(zrsl); sjlrMzda.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrMzda.setXgsj(commonService.getCurrentDate()); if (XtAppConstant.CODE_SJLR_RSJG_HY.equals(sjlrRsjl.getRsjg())) { sjlrMzda.setDqzt(XtAppConstant.CODE_SJLR_DQZT_HY); } else if (XtAppConstant.CODE_SJLR_RSJG_KT.equals(sjlrRsjl.getRsjg())) { sjlrMzda.setDqzt(XtAppConstant.CODE_SJLR_DQZT_KH); } else if (XtAppConstant.CODE_SJLR_RSJG_LC.equals(sjlrRsjl.getRsjg())) { sjlrMzda.setDqzt(XtAppConstant.CODE_SJLR_DQZT_LC); } else if (XtAppConstant.CODE_SJLR_RSJG_FQ.equals(sjlrRsjl.getRsjg())) { sjlrMzda.setDqzt(XtAppConstant.CODE_SJLR_DQZT_FQ); } sjlrMzda.setSczt(sczt); sjlrMzdaDAO.updateByExampleSelective(sjlrMzda, mzdaEx); } String jsonStr = "{\"count\" : \"1\"}"; response.getWriter().write(jsonStr); } /** * 耳标公共查询页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView getRsjlSearchDweb(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/rs/rsjlSearchModel.htm"); String dweb = request.getParameter("dweb"); String mcid = request.getParameter("mcid"); String date = request.getParameter("date"); String cxeph = request.getParameter("cxeph"); if (StringUtils.hasText(mcid)) { Map paramMap = new HashMap(); paramMap.put("mcid", mcid); if (StringUtils.hasText(dweb)) { paramMap.put("dweb", "%" + dweb + "%"); mv.addObject("dweb", dweb); } if (StringUtils.hasText(cxeph)) { paramMap.put("cxeph", "%" + cxeph + "%"); mv.addObject("dweb", cxeph); } String dqzthb = XtAppConstant.CODE_SJLR_DQZT_HB; paramMap.put("hb", dqzthb); String dqztqt = XtAppConstant.CODE_SJLR_DQZT_QT; paramMap.put("qt", dqztqt); String dqztkh = XtAppConstant.CODE_SJLR_DQZT_KH; paramMap.put("kh", dqztkh); String dqztdn = XtAppConstant.CODE_SJLR_DQZT_DN; paramMap.put("dn", dqztdn); String dqztlc = XtAppConstant.CODE_SJLR_DQZT_LC; paramMap.put("lc", dqztlc); String dqztfq = XtAppConstant.CODE_SJLR_DQZT_FQ; paramMap.put("fq", dqztfq); String dqztzc = XtAppConstant.CODE_SJLR_DQZT_ZC; paramMap.put("zc", dqztzc); List mzdaList = sjlrMzdaDAO.getMzdaListByPzjl(paramMap); List pzList = getGydm(XtAppConstant.CODE_SJLR_ZZPZ); List dqztList = getGydm(XtAppConstant.CODE_SJLR_MZZT); if (mzdaList != null && mzdaList.size() > 0) { for (SjlrMzda sjlrMzda : mzdaList) { //品种 if (StringUtils.hasText(sjlrMzda.getPz())) { for (XtGydm xtGydm : pzList) { if (sjlrMzda.getPz().equals(xtGydm.getDmid())) { sjlrMzda.setPzStr(xtGydm.getDmmc()); } } } //当前状态 if (StringUtils.hasText(sjlrMzda.getDqzt())) { for (XtGydm xtGydm : dqztList) { if (sjlrMzda.getDqzt().equals(xtGydm.getDmid())) { sjlrMzda.setDqztStr(xtGydm.getDmmc()); } } } } } mv.addObject("mzdaList", mzdaList); mv.addObject("date",date); } return mv; } /** * 是否是24小时之内的数据 * @param request * @throws Exception */ public void checkRsDataIsIn24H(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)) { SjlrRsjlExample RsjlEx = new SjlrRsjlExample(); SjlrRsjlExample.Criteria rsjlCr = RsjlEx.createCriteria(); rsjlCr.andIdEqualTo(Integer.valueOf(id)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); List RsjlList = sjlrRsjlDAO.selectByExample(RsjlEx); if (RsjlList.size() > 0) { boolean isIn24H = commonService.getCurrentDate().getTime() -RsjlList.get(0).getRssj().getTime() <= 24*60*60*1000; if (isIn24H) { jsonStr = "{\"count\" : \"1\"}"; } else { jsonStr = "{\"count\" : \"0\"}"; } } } response.getWriter().write(jsonStr); } /** * 检查该次妊娠是否已经有分娩记录 * @param id * @thoews Exception * @return true of false */ public void checkFmData(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)) { SjlrFmjlExample FmjlEx = new SjlrFmjlExample(); SjlrFmjlExample.Criteria fmjlCr = FmjlEx.createCriteria(); fmjlCr.andRsidEqualTo(Integer.valueOf(id)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int count = sjlrFmjlDAO.countByExample(FmjlEx); if (count == 0) { //如果在分娩记录里没有该RSID ,则可以修改。 jsonStr = "{\"count\" : \"1\"}"; } else { jsonStr = "{\"count\" : \"0\"}"; } } response.getWriter().write(jsonStr); } /** * 获取公用代码 * @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 setSjlrMzdaDAO(SjlrMzdaDAO sjlrMzdaDAO) { this.sjlrMzdaDAO = sjlrMzdaDAO; } public void setSjlrRsjlDAO(SjlrRsjlDAO sjlrRsjlDAO) { this.sjlrRsjlDAO = sjlrRsjlDAO; } public void setSjlrPzjlDAO(SjlrPzjlDAO sjlrPzjlDAO) { this.sjlrPzjlDAO = sjlrPzjlDAO; } public void setSjlrFmjlDAO(SjlrFmjlDAO sjlrFmjlDAO) { this.sjlrFmjlDAO = sjlrFmjlDAO; } }