package com.huimv.sjlr; import java.math.BigDecimal; 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.SjlrDnjlDTO; import com.huimv.sjlr.dao.SjlrDnjlDAO; import com.huimv.sjlr.dao.SjlrFmjlDAO; import com.huimv.sjlr.dao.SjlrMzdaDAO; import com.huimv.sjlr.dataobject.SjlrDnjl; import com.huimv.sjlr.dataobject.SjlrDnjlExample; import com.huimv.sjlr.dataobject.SjlrMzda; import com.huimv.sjlr.dataobject.SjlrMzdaExample; import com.huimv.web.base.BaseController; import com.huimv.xt.dao.XtGydmDAO; import com.huimv.xt.dataobject.XtGydm; public class SjlrDnHpController extends BaseController { private CommonService commonService; private XtGydmDAO xtGydmDAO; private SjlrMzdaDAO sjlrMzdaDAO; private SjlrDnjlDAO sjlrDnjlDAO; private SjlrFmjlDAO sjlrFmjlDAO; /** * 加载断奶记录 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrDnIndex(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/dn/hpSjlrDnIndex.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"); SjlrDnjlDTO dnDTO = null; List dnList = null; SjlrDnjl sjlrDnjl = null; List dnDTOList = new ArrayList(); String date = ""; int count = 0; int countzz = 0; if (StringUtils.hasText(mcid)) { paramMap.put("mcid", mcid); paramMap.put("order", XtSearchSqlConstant.order_by_dn); 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 dnjlList = sjlrDnjlDAO.selectDnjlListByParam(paramMap); if (dnjlList.size() == 0 && searchFlag.equals("0")) {//如果当天没有则取最近一天 Map paramMapPz = new HashMap(); paramMapPz.put("order", XtSearchSqlConstant.order_by_dn); List dnjlListDn = sjlrDnjlDAO.selectDnjlListByParam(paramMapPz); if (dnjlListDn.size() > 0) { String lastDnsj = DateUtil.parserDateToDefaultString(dnjlListDn.get(0).getDnsj()); String lastJsrq = lastDnsj; String lastksrq = lastJsrq; paramMap.put("jsrq", lastJsrq); paramMap.put("ksrq", lastksrq); dnjlList.clear(); dnjlList = sjlrDnjlDAO.selectDnjlListByParam(paramMap); } } List slList = getGydm(XtAppConstant.CODE_SJLR_SL); if (dnjlList != null && dnjlList.size() > 0 ) { for (int i = 0 ;i < dnjlList.size(); i++ ) { sjlrDnjl = dnjlList.get(i); //舍栏 if (StringUtils.hasText(sjlrDnjl.getDnsl())) { for (XtGydm xtGydm : slList) { if (xtGydm.getDmid().equals(sjlrDnjl.getDnsl())) { sjlrDnjl.setDnsl(xtGydm.getDmmc()); } } } //断奶胎次 SjlrDnjlExample dnEx = new SjlrDnjlExample(); SjlrDnjlExample.Criteria dnCr = dnEx.createCriteria(); dnCr.andDwebEqualTo(sjlrDnjl.getDweb()).andIdLessThanOrEqualTo(sjlrDnjl.getId()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int dntc = sjlrDnjlDAO.countByExample(dnEx); sjlrDnjl.setDntc(String.valueOf(dntc)); //猪仔头数 if (sjlrDnjl.getZzzs() == null) { sjlrDnjl.setZzzs(0); } //断奶均重 if (StringUtils.hasText(sjlrDnjl.getDnwz()) && sjlrDnjl.getDnwz() != "0") { if (sjlrDnjl.getZzzs() != 0) { Double str = (Double.parseDouble(sjlrDnjl.getDnwz()) / sjlrDnjl.getZzzs()); if (!"0".equals(str)) { BigDecimal bd = new BigDecimal(str); sjlrDnjl.setDnjz(bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); }else { sjlrDnjl.setDnjz((double) 0); } } else { sjlrDnjl.setDnjz((double) 0); } } //业务逻辑 if (i == 0) { dnDTO = new SjlrDnjlDTO(); dnList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrDnjl.getDnsj()); dnDTO.setDnrq(date); dnList.add(sjlrDnjl); count++; countzz = sjlrDnjl.getZzzs(); }else { if (DateUtil.parserDateToDefaultString(sjlrDnjl.getDnsj()).equals(date)) { count++; countzz += sjlrDnjl.getZzzs(); dnList.add(sjlrDnjl); }else { dnDTO.setDnList(dnList); dnDTO.setCount(count); dnDTO.setCountzz(countzz); dnDTOList.add(dnDTO); dnDTO = new SjlrDnjlDTO(); dnList = new ArrayList(); date = DateUtil.parserDateToDefaultString(sjlrDnjl.getDnsj()); dnDTO.setDnrq(date); dnList.add(sjlrDnjl); count = 1; countzz = sjlrDnjl.getZzzs(); } } } if (count > 0) { dnDTO.setDnList(dnList); dnDTO.setCount(count); dnDTO.setCountzz(countzz); dnDTOList.add(dnDTO); } } mv.addObject("dnDTOList", dnDTOList); } mv.addObject("ksrq", ksrq); mv.addObject("jsrq", jsrq); mv.addObject("dweb", dweb); return mv; } /** * 加载断奶记录新增页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView hpSjlrDnAdd(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/dn/hpSjlrDnjlAdd.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"); SjlrDnjl sjlrDnjl = new SjlrDnjl(); List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List dnjltc = new ArrayList() ; Map paramMap = new HashMap(); if ("undefined".equals(id)) { id=null; } if (StringUtils.hasText(mcid)) { //有id 无耳标, 编辑修改 if (StringUtils.hasText(id) && !StringUtils.hasText(dweb)) { sjlrDnjl = sjlrDnjlDAO.selectByPrimaryKey(Integer.parseInt(id)); //根据动物耳标查询断奶胎次 SjlrDnjlExample dnEx = new SjlrDnjlExample(); SjlrDnjlExample.Criteria dnCr = dnEx.createCriteria(); dnCr.andDwebEqualTo(sjlrDnjl.getDweb()).andIdLessThanOrEqualTo(sjlrDnjl.getId()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int dntc = sjlrDnjlDAO.countByExample(dnEx); sjlrDnjl.setDntc(String.valueOf(dntc)); //耳牌号 if (StringUtils.hasText(eph)) { sjlrDnjl.setEph(eph); } dweb = sjlrDnjl.getDweb(); //有耳标无ID ,新增插入耳标等信息 } else if (StringUtils.hasText(dweb) && !StringUtils.hasText(id)) { if (StringUtils.hasText(eph)) { sjlrDnjl.setEph(eph); } sjlrDnjl.setDweb(dweb); //根据动物耳标查询断奶胎次 paramMap.put("dweb", dweb); paramMap.put("mcid", mcid); String dqztid = "3"; paramMap.put("dqztid", dqztid); dnjltc = sjlrDnjlDAO.selectDnjltcByParam(paramMap); if (StringUtils.hasText(dnjltc.get(0).getDnsl())) { for (XtGydm xtGydm : slList) { if (xtGydm.getDmid().equals(dnjltc.get(0).getDnsl())) { sjlrDnjl.setDnsl(xtGydm.getDmid()); sjlrDnjl.setZrsl(xtGydm.getDmid());//默认不转栏 } } } if (dnjltc.get(0).getFmid() != null) { sjlrDnjl.setFmid(dnjltc.get(0).getFmid()); } if (dnjltc.size() > 0) { if (dnjltc.get(0).getDntc() != null){ sjlrDnjl.setDntc(String.valueOf(Integer.parseInt(dnjltc.get(0).getDntc()) + 1)); } else { sjlrDnjl.setDntc("1"); } } else { sjlrDnjl.setDntc("0"); } } if (newDate != null) { SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT);//小写的mm表示的是分钟 java.util.Date newdate = sdf.parse(newDate); sjlrDnjl.setDnsj(newdate); } if (dweb != null) { sjlrDnjl.setDweb(dweb); } } List zcycList = getGydm(XtAppConstant.CODE_ZCYC); mv.addObject("slList", slList); mv.addObject("zcycList", zcycList); mv.addObject("sjlrDnjl", sjlrDnjl); mv.addObject("date" , newDate); mv.addObject("dweb",dweb); return mv; } /** * 普通舍保存 * @param request * @throws Exception */ public void saveSjlrDnjl(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 dnsj = null; SjlrDnjl sjlrDnjl = new SjlrDnjl(); sjlrDnjl = (SjlrDnjl) parseObjectFromRequest(request, sjlrDnjl); sjlrDnjl.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrDnjl.setXgsj(commonService.getCurrentDate()); sjlrDnjl.setZfbz(XtAppConstant.ZFBZ_VALID); if (StringUtils.hasText(dweb)) { sjlrDnjl.setDweb(dweb); } if (StringUtils.hasText(sjlrDnjl.getFmid().toString())) { SjlrDnjlExample dnEx = new SjlrDnjlExample(); SjlrDnjlExample.Criteria dnCr = dnEx.createCriteria(); dnCr.andFmidEqualTo(sjlrDnjl.getFmid()).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); int count = sjlrDnjlDAO.countByExample(dnEx); if (count > 0) { if (sjlrDnjl.getId() == 0) { String jsonStr = "{\"count\" : \"2\"}"; response.getWriter().write(jsonStr); return; } } } //猪仔总数 if (!StringUtils.hasText(String.valueOf(sjlrDnjl.getZzzs()))) { sjlrDnjl.setZzzs(0); } //断奶时间应该大于分娩时间 Date fmsj = sjlrFmjlDAO.selectByPrimaryKey(sjlrDnjl.getFmid()).getFmsj(); if (sjlrDnjl.getId() != 0) { dnsj = sjlrDnjlDAO.selectByPrimaryKey(sjlrDnjl.getId()).getDnsj(); }else { dnsj = sjlrDnjl.getDnsj(); } if (fmsj.getTime() > dnsj.getTime()) { String jsonStr = "{\"count\" : \"4\"}"; response.getWriter().write(jsonStr); return; } //断奶窝重 if (!StringUtils.hasText(sjlrDnjl.getDnwz())) { sjlrDnjl.setDnwz("0"); } //寄入数 if (!StringUtils.hasText(String.valueOf(sjlrDnjl.getJrs()))) { sjlrDnjl.setJrs(0); } //寄出数 if (!StringUtils.hasText(String.valueOf(sjlrDnjl.getJcs()))) { sjlrDnjl.setJcs(0); } //背膘 if (!StringUtils.hasText (sjlrDnjl.getBb())) { sjlrDnjl.setBb("0"); } if (sjlrDnjl.getId() != 0) { sjlrDnjlDAO.updateByPrimaryKeySelective(sjlrDnjl); } else { sjlrDnjlDAO.insertSelective(sjlrDnjl); } String zrsl = sjlrDnjl.getZrsl(); if (StringUtils.hasText(zrsl)) { SjlrMzdaExample mzdaEx = new SjlrMzdaExample(); SjlrMzdaExample.Criteria mzdaCr = mzdaEx.createCriteria(); mzdaCr.andDwebEqualTo(sjlrDnjl.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.setDqzt(XtAppConstant.CODE_SJLR_DN_DMID); sjlrMzda.setXgr(getLoginSessionBean(request).getYhid().toString()); sjlrMzda.setXgsj(commonService.getCurrentDate()); sjlrMzda.setSczt(sczt); sjlrMzdaDAO.updateByExampleSelective(sjlrMzda, mzdaEx); } String jsonStr = "{\"count\" : \"1\"}"; response.getWriter().write(jsonStr); } /** * 耳标公共查询页面 * @param request * @param response * @return * @throws Exception */ public ModelAndView getDnjlSearchDweb(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView("haifmp/sjlr/dn/dnjlSearchModel.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(); if (StringUtils.hasText(dweb)) { paramMap.put("dweb", "%" + dweb + "%"); mv.addObject("dweb", dweb); } if (StringUtils.hasText(cxeph)) { paramMap.put("cxeph", "%" + cxeph + "%"); mv.addObject("dweb", cxeph); } paramMap.put("mcid", mcid); List mzdaList = sjlrDnjlDAO.selectSearchDnjlListByParam(paramMap); List slList = getGydm(XtAppConstant.CODE_SJLR_SL); List dqztList = getGydm(XtAppConstant.CODE_SJLR_MZZT); if (mzdaList != null && mzdaList.size() > 0) { for (SjlrMzda sjlrMzda : mzdaList) { //舍栏 if (StringUtils.hasText(sjlrMzda.getSl())) { for (XtGydm xtGydm : slList) { if (sjlrMzda.getSl().equals(xtGydm.getDmid())) { sjlrMzda.setSlStr(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 checkDnDataIsIn24H(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)) { SjlrDnjlExample DnjlEx = new SjlrDnjlExample(); SjlrDnjlExample.Criteria dnjlCr = DnjlEx.createCriteria(); dnjlCr.andIdEqualTo(Integer.valueOf(id)).andZfbzEqualTo(XtAppConstant.ZFBZ_VALID); List DnjlList = sjlrDnjlDAO.selectByExample(DnjlEx); if (DnjlList.size() > 0) { boolean isIn24H = commonService.getCurrentDate().getTime() - DnjlList.get(0).getDnsj().getTime() <= 24*60*60*1000; if (isIn24H) { 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 setSjlrDnjlDAO(SjlrDnjlDAO sjlrDnjlDAO) { this.sjlrDnjlDAO = sjlrDnjlDAO; } public void setSjlrFmjlDAO(SjlrFmjlDAO sjlrFmjlDAO) { this.sjlrFmjlDAO = sjlrFmjlDAO; } }