|  |  | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.Mat; | 
 |  |  | import com.zy.asrs.entity.param.AbnormalLocDetlParam; | 
 |  |  | import com.zy.asrs.mapper.LocDetlMapper; | 
 |  |  | import com.zy.asrs.service.LocDetlService; | 
 |  |  | import com.zy.asrs.service.MatService; | 
 |  |  | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import javax.xml.crypto.Data; | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.text.ParseException; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R stockOutList(@RequestParam(value = "locNos[]") List<String> locNos){ | 
 |  |  |     public R stockOutList(@RequestParam(value = "locNos[]") List<String> locNos) { | 
 |  |  |         if (!locNos.isEmpty()) { | 
 |  |  |             List<LocDetl> res = new ArrayList<>(); | 
 |  |  |             for (String locNo : new HashSet<>(locNos)) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/stock/out/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R stockOutList(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                           @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                           @RequestParam Map<String, Object> param){ | 
 |  |  |         if (!Cools.isEmpty(param.get("modi_time"))){ | 
 |  |  |     public R stockOutList(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                           @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                           @RequestParam Map<String, Object> param) { | 
 |  |  |         if (!Cools.isEmpty(param.get("modi_time"))) { | 
 |  |  |             String val = String.valueOf(param.get("modi_time")); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)) { | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R list(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam(required = false)String condition, | 
 |  |  |     public R list(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                   @RequestParam(required = false) String orderByField, | 
 |  |  |                   @RequestParam(required = false) String orderByType, | 
 |  |  |                   @RequestParam(required = false) String condition, | 
 |  |  |                   @RequestParam Map<String, Object> param, | 
 |  |  |                   @RequestParam(required = false)Boolean unreason){ | 
 |  |  |                   @RequestParam(required = false) Boolean unreason) { | 
 |  |  |         if (!Cools.isEmpty(unreason) && unreason) { | 
 |  |  |  | 
 |  |  |             return R.ok(locDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<LocDetl>() | 
 |  |  | 
 |  |  |             if (chooseRow.length() == 1) { | 
 |  |  |                 row = "0" + chooseRow; | 
 |  |  |                 param.remove("row"); | 
 |  |  |             }else { | 
 |  |  |             } else { | 
 |  |  |                 row = chooseRow; | 
 |  |  |                 param.remove("row"); | 
 |  |  |             } | 
 |  |  | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         allLike(LocDetl.class, param.keySet(), wrapper, condition); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  |         if (!row.equals("")){ | 
 |  |  |         if (!Cools.isEmpty(orderByField)) { | 
 |  |  |             wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); | 
 |  |  |         } | 
 |  |  |         if (!row.equals("")) { | 
 |  |  |             wrapper.and() | 
 |  |  |                     .where("loc_no like '" +row +"%'"); | 
 |  |  |                     .where("loc_no like '" + row + "%'"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return R.ok(locDetlService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()){ | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) { | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()) { | 
 |  |  |             String val = String.valueOf(entry.getValue()); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)){ | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)) { | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  |                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
 |  |  |                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
 |  |  | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |    @RequestMapping(value = "/locDetl/update/auth") | 
 |  |  |    @ManagerAuth(memo = "库位明细修改") | 
 |  |  |     public R update(LocDetl locDetl){ | 
 |  |  |         if (Cools.isEmpty(locDetl) || null==locDetl.getMatnr()){ | 
 |  |  |     @RequestMapping(value = "/locDetl/update/auth") | 
 |  |  |     @ManagerAuth(memo = "库位明细修改") | 
 |  |  |     public R update(LocDetl locDetl) { | 
 |  |  |         if (Cools.isEmpty(locDetl) || null == locDetl.getMatnr()) { | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         locDetl.setModiUser(getUserId()); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/delete/auth") | 
 |  |  |     @ManagerAuth(memo = "库位明细删除") | 
 |  |  |     public R delete(@RequestParam String param){ | 
 |  |  |     public R delete(@RequestParam String param) { | 
 |  |  |         List<LocDetl> list = JSONArray.parseArray(param, LocDetl.class); | 
 |  |  |         if (Cools.isEmpty(list)){ | 
 |  |  |         if (Cools.isEmpty(list)) { | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         for (LocDetl entity : list){ | 
 |  |  |         for (LocDetl entity : list) { | 
 |  |  |             locDetlService.delete(new EntityWrapper<>(entity)); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/export/auth") | 
 |  |  |     @ManagerAuth(memo = "库位明细导出") | 
 |  |  |     public synchronized R export(@RequestBody JSONObject param){ | 
 |  |  |     public synchronized R export(@RequestBody JSONObject param) { | 
 |  |  |         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
 |  |  |         EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); | 
 |  |  |         Map<String, Object> map = excludeTrash(param.getJSONObject("locDetl")); | 
 |  |  | 
 |  |  |             if (chooseRow.length() == 1) { | 
 |  |  |                 row = "0" + chooseRow; | 
 |  |  |                 map.remove("row"); | 
 |  |  |             }else { | 
 |  |  |             } else { | 
 |  |  |                 row = chooseRow; | 
 |  |  |                 map.remove("row"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         convert(map, wrapper); | 
 |  |  |         if (!row.equals("")){ | 
 |  |  |         if (!row.equals("")) { | 
 |  |  |             wrapper.and() | 
 |  |  |                     .where("loc_no like '" +row +"%'"); | 
 |  |  |                     .where("loc_no like '" + row + "%'"); | 
 |  |  |         } | 
 |  |  |         List<LocDetl> list = locDetlService.selectList(wrapper); | 
 |  |  |         return R.ok(exportSupport(list, fields)); | 
 |  |  | 
 |  |  |         wrapper.like("matnr", condition); | 
 |  |  |         Page<LocDetl> page = locDetlService.selectPage(new Page<>(0, 10), wrapper); | 
 |  |  |         List<Map<String, Object>> result = new ArrayList<>(); | 
 |  |  |         for (LocDetl locDetl : page.getRecords()){ | 
 |  |  |         for (LocDetl locDetl : page.getRecords()) { | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("id", locDetl.getMatnr()); | 
 |  |  |             map.put("value", locDetl.getMatnr()); | 
 |  |  | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R query(@RequestBody JSONObject param) { | 
 |  |  |         Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); | 
 |  |  |         if (null != locDetlService.selectOne(wrapper)){ | 
 |  |  |         if (null != locDetlService.selectOne(wrapper)) { | 
 |  |  |             return R.parse(BaseRes.REPEAT).add(getComment(LocDetl.class, String.valueOf(param.get("key")))); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/statis/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R statis(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                     @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |     public R statis(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                     @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                     @RequestParam Map<String, Object> param) { | 
 |  |  |         Page<LocDetl> stockStatis = locDetlService.getStockStatis(toPage(curr, limit, param, LocDetl.class)); | 
 |  |  |         for (LocDetl locDetl : stockStatis.getRecords()) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取库存总数 | 
 |  |  |      * | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @RequestMapping("/locDetl/count") | 
 |  |  |     public R getAllCount(){ | 
 |  |  |     public R getAllCount() { | 
 |  |  |         Integer sum = locDetlService.sum(); | 
 |  |  |         return R.ok(sum); | 
 |  |  |     } | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/locDetl/grouplist/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R groupList(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam(required = false)String condition, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |     public R groupList(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                        @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                        @RequestParam(required = false) String orderByField, | 
 |  |  |                        @RequestParam(required = false) String orderByType, | 
 |  |  |                        @RequestParam(required = false) String condition, | 
 |  |  |                        @RequestParam Map<String, Object> param) { | 
 |  |  |  | 
 |  |  |         List<LocDetl> result = new ArrayList<>(); | 
 |  |  | //        List<LocDetl> result = new ArrayList<>(); | 
 |  |  |         List<AbnormalLocDetlParam> result = new ArrayList<>(); | 
 |  |  | //        excludeTrash(param); | 
 |  |  |         param.put("curr",curr); | 
 |  |  |         param.put("limit",limit); | 
 |  |  |         List<LocDetl> groupLocDetl = locDetlService.selectGroupPage(param,curr,limit); | 
 |  |  |         for (LocDetl locDetl : groupLocDetl) { | 
 |  |  |         param.put("curr", curr); | 
 |  |  |         param.put("limit", limit); | 
 |  |  |         Page<LocDetl> groupLocDetl = locDetlService.getStockStatis2(toPage(1, 10000, param, LocDetl.class)); | 
 |  |  | //        List<LocDetl> groupLocDetl = locDetlService.selectGroupPage(param, curr, limit); | 
 |  |  |         for (LocDetl locDetl : groupLocDetl.getRecords()) { | 
 |  |  |             AbnormalLocDetlParam abnormalLocDetlParam = new AbnormalLocDetlParam(); | 
 |  |  |             Mat mat = matService.selectOne(new EntityWrapper<Mat>() | 
 |  |  |                     .eq("matnr", locDetl.getMatnr())); | 
 |  |  |             if (Cools.isEmpty(mat) | 
 |  |  |                     || Cools.isEmpty(mat.getStoreMax()) | 
 |  |  |                     || Cools.isEmpty(mat.getStoreMaxDate()) | 
 |  |  |                     || Cools.isEmpty(mat.getStoreMin())) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (locDetl.getAnfme() > mat.getStoreMax()){ | 
 |  |  |                 result.add(locDetl); | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (locDetl.getAnfme() < mat.getStoreMin()){ | 
 |  |  |                 result.add(locDetl); | 
 |  |  |             if (Cools.isEmpty(mat)) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             if (Cools.isEmpty(locDetl.getBatch())) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (locDetl.getBatch().length() != 8){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             try{ | 
 |  |  |                 SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd"); | 
 |  |  |                 Date maxDate = simple.parse(locDetl.getBatch()); | 
 |  |  |                 Calendar calendar = new GregorianCalendar(); | 
 |  |  |                 calendar.setTime(maxDate); | 
 |  |  |                 // 把日期往后增加一天,整数  往后推,负数往前移动 | 
 |  |  |                 calendar.add(Calendar.DATE, mat.getStoreMaxDate()); | 
 |  |  |                 // 这个时间就是日期往后推一天的结果 | 
 |  |  |                 maxDate = calendar.getTime(); | 
 |  |  |                 Date now = new Date(); | 
 |  |  |                 if (now.compareTo(maxDate) > 0) { | 
 |  |  |                     result.add(locDetl); | 
 |  |  |             if (!Cools.isEmpty(mat.getStoreMax()) | 
 |  |  |                     || !Cools.isEmpty(mat.getStoreMin())) { | 
 |  |  |                 abnormalLocDetlParam.setStoreMax(mat.getStoreMax()); | 
 |  |  |                 abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate()); | 
 |  |  |                 abnormalLocDetlParam.setStoreMin(mat.getStoreMin()); | 
 |  |  |                 abnormalLocDetlParam.setAnfme(locDetl.getAnfme()); | 
 |  |  |                 abnormalLocDetlParam.setMaktx(mat.getMaktx()); | 
 |  |  |                 abnormalLocDetlParam.setMatnr(mat.getMatnr()); | 
 |  |  |                 abnormalLocDetlParam.setSpecs(mat.getSpecs()); | 
 |  |  |                 abnormalLocDetlParam.setBatch(locDetl.getBatch()); | 
 |  |  |  | 
 |  |  | //                SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd"); | 
 |  |  | //                Date maxDate = simple.parse(locDetl.getBatch()); | 
 |  |  | //                long time = maxDate.getTime(); | 
 |  |  | //                Date now = new Date(); | 
 |  |  | //                long time1 = now.getTime(); | 
 |  |  | //                abnormalLocDetlParam.setNowTime((int) ((time1 - time) / (1000 * 60 * 60 * 24))); | 
 |  |  |  | 
 |  |  |                 if (!Cools.isEmpty(mat.getStoreMax()) && locDetl.getAnfme() > mat.getStoreMax()) { | 
 |  |  |                     result.add(abnormalLocDetlParam); | 
 |  |  |                     continue; | 
 |  |  |                 } else if (!Cools.isEmpty(mat.getStoreMin()) && locDetl.getAnfme() < mat.getStoreMin()) { | 
 |  |  |                     result.add(abnormalLocDetlParam); | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             }catch (Exception e){ | 
 |  |  |                 continue; | 
 |  |  |             } else if (!Cools.isEmpty(mat.getStoreMaxDate())) { | 
 |  |  |                 if (Cools.isEmpty(locDetl.getBatch())) { | 
 |  |  |                     continue; | 
 |  |  |                 } else if (locDetl.getBatch().length() != 8) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 try { | 
 |  |  |                     SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd"); | 
 |  |  |                     Date maxDate = simple.parse(locDetl.getBatch()); | 
 |  |  |                     Calendar calendar = new GregorianCalendar(); | 
 |  |  |                     calendar.setTime(maxDate); | 
 |  |  |                     // 把日期往后增加一天,整数  往后推,负数往前移动 | 
 |  |  |                     calendar.add(Calendar.DATE, mat.getStoreMaxDate()); | 
 |  |  |                     // 这个时间就是日期往后推一天的结果 | 
 |  |  |                     maxDate = calendar.getTime(); | 
 |  |  |                     Date now = new Date(); | 
 |  |  |                     abnormalLocDetlParam.setStoreMax(mat.getStoreMax()); | 
 |  |  |                     abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate()); | 
 |  |  |                     abnormalLocDetlParam.setStoreMin(mat.getStoreMin()); | 
 |  |  |                     abnormalLocDetlParam.setAnfme(locDetl.getAnfme()); | 
 |  |  |                     abnormalLocDetlParam.setMaktx(mat.getMaktx()); | 
 |  |  |                     abnormalLocDetlParam.setMatnr(mat.getMatnr()); | 
 |  |  |                     abnormalLocDetlParam.setSpecs(mat.getSpecs()); | 
 |  |  |                     abnormalLocDetlParam.setBatch(locDetl.getBatch()); | 
 |  |  |                     if (now.compareTo(maxDate) > 0) { | 
 |  |  |                         result.add(abnormalLocDetlParam); | 
 |  |  |                     } | 
 |  |  |                 } catch (Exception e) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Page<LocDetl> locDetlPage = new Page<>(); | 
 |  |  |         locDetlPage.setRecords(paging(result,curr,limit)); | 
 |  |  |         Page<AbnormalLocDetlParam> locDetlPage = new Page<>(); | 
 |  |  |         locDetlPage.setRecords(paging(result, curr, limit)); | 
 |  |  |         locDetlPage.setTotal(result.size()); | 
 |  |  |         locDetlPage.setCurrent(curr); | 
 |  |  |         locDetlPage.setSize(limit); | 
 |  |  |         return R.ok(locDetlPage); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private List<LocDetl> paging(List<LocDetl> result, Integer curr, Integer limit) { | 
 |  |  |         List<LocDetl> pageRecord = new ArrayList<LocDetl>(); | 
 |  |  |     private List<AbnormalLocDetlParam> paging(List<AbnormalLocDetlParam> result, Integer curr, Integer limit) { | 
 |  |  |         List<AbnormalLocDetlParam> pageRecord = new ArrayList<AbnormalLocDetlParam>(); | 
 |  |  |         int minIndex = (curr - 1) * limit; | 
 |  |  |         int maxIndex = (curr * limit) - 1; | 
 |  |  |         if (result.size() < maxIndex){ | 
 |  |  |         if (result.size() < maxIndex) { | 
 |  |  |             maxIndex = result.size(); | 
 |  |  |         } | 
 |  |  |         for (int i = minIndex; i < maxIndex; i++){ | 
 |  |  |         for (int i = minIndex; i < maxIndex; i++) { | 
 |  |  |             pageRecord.add(result.get(i)); | 
 |  |  |         } | 
 |  |  |         return pageRecord; |