|  |  |  | 
|---|
|  |  |  | import com.core.common.DateUtils; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.zy.asrs.entity.LocDetl; | 
|---|
|  |  |  | import com.zy.asrs.entity.Mat; | 
|---|
|  |  |  | import com.zy.asrs.mapper.LocDetlMapper; | 
|---|
|  |  |  | import com.zy.asrs.service.LocDetlService; | 
|---|
|  |  |  | import com.zy.asrs.service.MatService; | 
|---|
|  |  |  | import com.zy.common.web.BaseController; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocDetlService locDetlService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocDetlMapper locDetlMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MatService matService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/update") | 
|---|
|  |  |  | public R update1() { | 
|---|
|  |  |  | if (!locDetlService.updateLocNo("0402805", "0402804")) { | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/{id}/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(locDetlService.selectById(String.valueOf(id))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | public R stockOutList(@RequestParam(value = "locNos[]") List<String> locNos){ | 
|---|
|  |  |  | if (!locNos.isEmpty()) { | 
|---|
|  |  |  | List<LocDetl> res = new ArrayList<>(); | 
|---|
|  |  |  | for (String locNo : new HashSet<>(locNos)) { | 
|---|
|  |  |  | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo)); | 
|---|
|  |  |  | if (!locDetls.isEmpty()) { | 
|---|
|  |  |  | res.addAll(locDetls); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(res); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.parse(BaseRes.EMPTY); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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){ | 
|---|
|  |  |  | return R.ok(locDetlService.getStockOut(toPage(curr, limit, 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); | 
|---|
|  |  |  | param.put("startTime", DateUtils.convert(dates[0])); | 
|---|
|  |  |  | param.put("endTime", DateUtils.convert(dates[1])); | 
|---|
|  |  |  | param.remove("modi_time"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/list/auth") | 
|---|
|  |  |  | 
|---|
|  |  |  | @RequestParam(required = false)String orderByField, | 
|---|
|  |  |  | @RequestParam(required = false)String orderByType, | 
|---|
|  |  |  | @RequestParam(required = false)String condition, | 
|---|
|  |  |  | @RequestParam Map<String, Object> param){ | 
|---|
|  |  |  | excludeTrash(param); | 
|---|
|  |  |  | @RequestParam Map<String, Object> param, | 
|---|
|  |  |  | @RequestParam(required = false)Boolean unreason){ | 
|---|
|  |  |  | if (!Cools.isEmpty(unreason) && unreason) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(locDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<LocDetl>() | 
|---|
|  |  |  | .where(" DATALENGTH( batch ) != 11 or\n" + | 
|---|
|  |  |  | "            batch LIKE '%[a-z]%'"))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.remove("unreason"); | 
|---|
|  |  |  | String row = ""; | 
|---|
|  |  |  | EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); | 
|---|
|  |  |  | if (param.get("row") != null) { | 
|---|
|  |  |  | String chooseRow = (String) param.get("row"); | 
|---|
|  |  |  | if (chooseRow.length() == 1) { | 
|---|
|  |  |  | row = "0" + chooseRow; | 
|---|
|  |  |  | param.remove("row"); | 
|---|
|  |  |  | }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("")){ | 
|---|
|  |  |  | wrapper.and() | 
|---|
|  |  |  | .where("loc_no like '" +row +"%'"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(locDetlService.selectPage(new Page<>(curr, limit), wrapper)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void convert(Map<String, Object> map, EntityWrapper wrapper){ | 
|---|
|  |  |  | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
|---|
|  |  |  | for (Map.Entry<String, Object> entry : map.entrySet()){ | 
|---|
|  |  |  | if (entry.getKey().endsWith(">")) { | 
|---|
|  |  |  | wrapper.ge(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue()))); | 
|---|
|  |  |  | } else if (entry.getKey().endsWith("<")) { | 
|---|
|  |  |  | wrapper.le(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue()))); | 
|---|
|  |  |  | String val = String.valueOf(entry.getValue()); | 
|---|
|  |  |  | 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])); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (entry.getKey().equals("locNo")) { | 
|---|
|  |  |  | wrapper.eq("loc_no", String.valueOf(entry.getValue())); | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/updateStockFreeze/auth") | 
|---|
|  |  |  | @ManagerAuth(memo = "库位冻结") | 
|---|
|  |  |  | public R updateStockFreeze(LocDetl locDetl){ | 
|---|
|  |  |  | if (Cools.isEmpty(locDetl) || null==locDetl.getMatnr()){ | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | locDetlService.updateStockFreeze(locDetl.getMatnr(), locDetl.getLocNo(), locDetl.getStockFreeze()); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/delete/auth") | 
|---|
|  |  |  | @ManagerAuth(memo = "库位明细删除") | 
|---|
|  |  |  | public R delete(@RequestParam String param){ | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/export/auth") | 
|---|
|  |  |  | @ManagerAuth(memo = "库位明细导出") | 
|---|
|  |  |  | public 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")); | 
|---|
|  |  |  | String row = ""; | 
|---|
|  |  |  | if (map.get("row") != null) { | 
|---|
|  |  |  | String chooseRow = (String) map.get("row"); | 
|---|
|  |  |  | if (chooseRow.length() == 1) { | 
|---|
|  |  |  | row = "0" + chooseRow; | 
|---|
|  |  |  | map.remove("row"); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | row = chooseRow; | 
|---|
|  |  |  | map.remove("row"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | convert(map, wrapper); | 
|---|
|  |  |  | if (!row.equals("")){ | 
|---|
|  |  |  | wrapper.and() | 
|---|
|  |  |  | .where("loc_no like '" +row +"%'"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<LocDetl> list = locDetlService.selectList(wrapper); | 
|---|
|  |  |  | return R.ok(exportSupport(list, fields)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/statis/auth") | 
|---|
|  |  |  | @ManagerAuth | 
|---|
|  |  |  | 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()) { | 
|---|
|  |  |  | Mat mat = matService.selectByMatnr(locDetl.getMatnr()); | 
|---|
|  |  |  | if (mat != null) { | 
|---|
|  |  |  | locDetl.sync(mat); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(stockStatis); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocDetlMapper LocDetlMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @RequestMapping(value = "/locDetl/statis/export") | 
|---|
|  |  |  | ////    @ManagerAuth | 
|---|
|  |  |  | //    public void statisExport(HttpServletResponse response) throws IOException { | 
|---|
|  |  |  | //        List<LocDetl> excel = LocDetlMapper.getStockStatisExcel(); | 
|---|
|  |  |  | //        for (LocDetl locDetl : excel) { | 
|---|
|  |  |  | //            Mat mat = matService.selectByMatnr(locDetl.getMatnr()); | 
|---|
|  |  |  | //            if (mat != null) { | 
|---|
|  |  |  | //                locDetl.sync(mat); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        response.setContentType("application/vnd.ms-excel"); | 
|---|
|  |  |  | //        response.setCharacterEncoding("utf-8"); | 
|---|
|  |  |  | //        String fileName = URLEncoder.encode("库存明细统计报表", "UTF-8"); | 
|---|
|  |  |  | //        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); | 
|---|
|  |  |  | //        EasyExcel.write(response.getOutputStream(), LocDetl.class) | 
|---|
|  |  |  | //                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) | 
|---|
|  |  |  | //                .sheet("表1") | 
|---|
|  |  |  | //                .doWrite(excel); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/locDetl/statis/export") | 
|---|
|  |  |  | @ManagerAuth(memo = "库位明细导出") | 
|---|
|  |  |  | public synchronized R statisExport(@RequestBody JSONObject param){ | 
|---|
|  |  |  | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
|---|
|  |  |  | List<LocDetl> stockStatisExcel = LocDetlMapper.getStockStatisExcel(); | 
|---|
|  |  |  | return R.ok(exportSupport(stockStatisExcel, fields)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取库存总数 | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping("/locDetl/count") | 
|---|
|  |  |  | public R getAllCount(){ | 
|---|
|  |  |  | Integer sum = locDetlService.sum(); | 
|---|
|  |  |  | return R.ok(sum); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|