From d85016e8ca551b6672e123d3a56ac4c12554fb45 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期五, 30 八月 2024 14:44:20 +0800 Subject: [PATCH] 优化轮询获取出库单 --- src/main/java/com/zy/asrs/controller/MatController.java | 250 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 218 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java index b842a73..0eb8600 100644 --- a/src/main/java/com/zy/asrs/controller/MatController.java +++ b/src/main/java/com/zy/asrs/controller/MatController.java @@ -2,6 +2,7 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -10,19 +11,26 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.Mat; -import com.zy.asrs.entity.MatPrint; -import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.InFormIdParam; import com.zy.asrs.entity.result.KeyValueVo; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.MatService; +import com.zy.asrs.service.TagService; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; import com.zy.asrs.utils.MatExcelListener; import com.zy.common.CodeRes; import com.zy.common.config.AdminInterceptor; import com.zy.common.entity.MatExcel; import com.zy.common.utils.BarcodeUtils; +import com.zy.common.utils.HttpHandler; import com.zy.common.utils.QrCode; import com.zy.common.web.BaseController; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -32,24 +40,46 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; @RestController +@Slf4j public class MatController extends BaseController { + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.inaddress}") + //鍗曟嵁锛屽晢鍝佹。妗堝湴鍧� + private String inaddress; + + @Autowired + private TagService tagService; + + @Autowired + private ApiLogService apiLogService; @Autowired private MatService matService; @Autowired + private LocDetlService locDetlService; + @Autowired private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; @RequestMapping(value = "/mat/auto/matnr/auth") - public R autoMatnr(){ + public R autoMatnr() { return R.ok().add("YJ" + DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss).substring(0, 16)); } @RequestMapping(value = "/mat/list/pda/auth") @ManagerAuth - public R pdaList(@RequestParam(required = true)Long tagId){ + public R pdaList(@RequestParam(required = true) Long tagId) { EntityWrapper<Mat> wrapper = new EntityWrapper<>(); wrapper.eq("tag_id", tagId); wrapper.orderBy("create_time", false); @@ -59,7 +89,7 @@ @RequestMapping(value = "/mat/search/pda/auth") @ManagerAuth - public R pdaSearch(@RequestParam(required = false)String condition){ + public R pdaSearch(@RequestParam(required = false) String condition) { EntityWrapper<Mat> wrapper = new EntityWrapper<>(); if (!Cools.isEmpty(condition)) { wrapper.like("matnr", condition).or().like("maktx", condition); @@ -75,7 +105,7 @@ return R.ok(matService.selectById(String.valueOf(id))); } - @RequestMapping(value = "/matCode/auth0") + @RequestMapping(value = "/mat/auth") @ManagerAuth public R find(@RequestParam("matnr") String matnr) { return R.ok(matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr))); @@ -83,11 +113,11 @@ @RequestMapping(value = "/mat/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 Map<String, Object> param){ + public R list(@RequestParam(defaultValue = "1") Integer curr, + @RequestParam(defaultValue = "10") Integer limit, + @RequestParam(required = false) String orderByField, + @RequestParam(required = false) String orderByType, + @RequestParam Map<String, Object> param) { Object tagId = param.get("tag_id"); if (Cools.isEmpty(tagId)) { tagId = getOriginTag().getId(); @@ -95,15 +125,17 @@ return R.ok(matService.getPage(new Page<>(curr, limit) , String.valueOf(tagId) , param.get("matnr") - , param.get("maktx")) + , param.get("maktx") + , param.get("specs") + , param.get("model")) ); } - private void convert(Map<String, Object> map, EntityWrapper wrapper){ - for (Map.Entry<String, Object> entry : map.entrySet()){ + private void convert(Map<String, Object> map, EntityWrapper 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])); @@ -131,10 +163,158 @@ return R.ok(); } - @RequestMapping(value = "/mat/update/auth") - @ManagerAuth - public R update(Mat mat){ - if (Cools.isEmpty(mat) || null==mat.getId()){ + @RequestMapping(value = "/mat/KingDeeadd/auth") + @ManagerAuth + public R KingDeeadd() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //鐧诲綍閲戣澏 + ReturnT<String> start = loginAuthenticationHandler.start(); + + InFormIdParam inFormIdParam = new InFormIdParam(); + inFormIdParam.setFormId("BD_MATERIAL"); + inFormIdParam.setLimit(10000000); + inFormIdParam.setStartRow("0"); + String FDocumentStatus = "C"; + + // 鑾峰彇褰撳墠鏃ユ湡 + LocalDate currentDate = LocalDate.now(); + // 鑾峰彇鍓嶄竴涓湀鐨勫悓涓�澶� + LocalDate previousMonthDate = currentDate.minusMonths(1); + + // 鏍煎紡鍖栨棩鏈熶负 "yyyyMMdd" 鏍煎紡 + DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDate2 = previousMonthDate.format(formatter1); + + //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FormId", inFormIdParam.getFormId()); + jsonObject.put("Limit", inFormIdParam.getLimit()); + jsonObject.put("StartRow", inFormIdParam.getStartRow()); + jsonObject.put("FilterString", "FCreateDate>'" + formattedDate2 + "' and FDocumentStatus='" + FDocumentStatus + "' and FUseOrgId .FNumber='201'"); + jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus,FTuhao"); + // FName : 鐗╂枡鍚嶇О 锛� + // FNumber 锛氱墿鏂欑紪鍙凤紱 + // FCreateDate 锛氱墿鏂欏垱寤烘椂闂达紱 + // FSpecification 锛氱墿鏂欒鏍硷紱 + // FDocumentStatus 锛氱墿鏂欑姸鎬� + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("data", jsonObject); + String add = jsonObject1.toJSONString(); + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(inaddress) + .setJson(add) + .build() + .doPost(); + JSONArray data = JSON.parseArray(response); + int i = 0; + if (data.size() > 0) { + if (data.getJSONArray(0).get(0).toString().length() < 20) { + if (i == 0) { + for (int j = 0; j < data.size(); j++) { + JSONArray jsonArray = data.getJSONArray(j); + //鐢熸垚鍟嗗搧妗f + //鍟嗗搧缂栧彿 + Mat mat = matService.selectByMatnr(jsonArray.get(1).toString()); + if (mat == null) { + mat = new Mat(); + Tag tag = new Tag(); + mat.setMatnr(jsonArray.get(1).toString()); + mat.setMaktx(jsonArray.get(0).toString()); + mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸 + mat.setModel(jsonArray.get(5).toString());//鍥惧彿 + mat.setTagId(20L); + //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(2).toString(), formatter); + String format = dateFormat.format(dateTime); + Date date = sdf.parse(format); + mat.setCreateTime(date);//鍟嗗搧鍒涘缓鏃堕棿 + mat.setUpdateTime(new Date()); + mat.setStatus(1); + //鏈�鏂版姄鍙栧晢鍝佹椂闂� + tag.setCreateTime(date); + tagService.update(tag, new EntityWrapper<Tag>().eq("id", 20)); + if (!matService.insert(mat)) { + throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); + } else { + log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); + } + } + } + } + } + } + +// if (data.getJSONArray(0).get(0).toString().length() < 20) { +// success = true; +// JSONArray jsonArray = data.getJSONArray(0); +// //鐢熸垚鍟嗗搧妗f +// //鍟嗗搧缂栧彿 +// mat = matService.selectByMatnr(jsonArray.get(1).toString()); +// if (mat == null) { +// mat = new Mat(); +// Tag tag = new Tag(); +// mat.setMatnr(jsonArray.get(1).toString()); +// mat.setMaktx(jsonArray.get(0).toString()); +// mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸 +// mat.setTagId(20L); +// //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� +// DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); +// DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; +// LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(2).toString(), formatter); +// String format = dateFormat.format(dateTime); +// Date date = sdf.parse(format); +// mat.setCreateTime(date);//鍟嗗搧鍒涘缓鏃堕棿 +// mat.setUpdateTime(new Date()); +// mat.setStatus(1); +// //鏈�鏂版姄鍙栧晢鍝佹椂闂� +// tag.setCreateTime(date); +// tagService.update(tag, new EntityWrapper<Tag>().eq("id", 20)); +// if (!matService.insert(mat)) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); +// } else { +// log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); +// } +// } +// } else { +// throw new CoolException("娌℃湁鎵惧埌鎸囧畾鐗╂枡妗f锛岃鑱旂郴绠$悊鍛�"); +// } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "杞鏁版嵁", + URL + inaddress, + null, + "127.0.0.1", + add, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return R.ok(); + } + + @RequestMapping(value = "/mat/update/auth") + @ManagerAuth + public R update(Mat mat) { + if (Cools.isEmpty(mat) || null == mat.getId()) { return R.error(); } mat.setUpdateBy(getUserId()); @@ -145,12 +325,18 @@ @RequestMapping(value = "/mat/delete/auth") @ManagerAuth - public R delete(@RequestParam String param){ + @Transactional + public R delete(@RequestParam String param) { List<Mat> list = JSONArray.parseArray(param, Mat.class); - if (Cools.isEmpty(list)){ + if (Cools.isEmpty(list)) { return R.error(); } - for (Mat entity : list){ + + for (Mat entity : list) { + LocDetl locDetl = locDetlService.selectByMatnr(entity.getMatnr()); + if (!Cools.isEmpty(locDetl)) { + throw new CoolException("褰撳墠鐗╂枡鍦ㄥ簱锛屾棤娉曞垹闄わ紒"); + } if (!matService.delete(new EntityWrapper<>(entity))) { throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�"); } @@ -160,7 +346,7 @@ @RequestMapping(value = "/mat/export/auth") @ManagerAuth - public R export(@RequestBody JSONObject param){ + public R export(@RequestBody JSONObject param) { EntityWrapper<Mat> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("mat")); @@ -176,7 +362,7 @@ wrapper.like("matnr", condition).or().like("maktx", condition); Page<Mat> page = matService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); - for (Mat mat : page.getRecords()){ + for (Mat mat : page.getRecords()) { Map<String, Object> map = new HashMap<>(); map.put("id", mat.getId()); map.put("value", mat.getMatnr() + "(" + mat.getMaktx() + ")"); @@ -189,7 +375,7 @@ @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper<Mat> wrapper = new EntityWrapper<Mat>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); - if (null != matService.selectOne(wrapper)){ + if (null != matService.selectOne(wrapper)) { return R.parse(BaseRes.REPEAT).add(getComment(Mat.class, String.valueOf(param.get("key")))); } return R.ok(); @@ -203,7 +389,7 @@ return R.ok(); } OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(orderDetl); + orderDetl.sync(mat); orderDetl.setAnfme(0.0D); return R.ok().add(orderDetl); } @@ -216,7 +402,7 @@ , @RequestParam String param , HttpServletResponse response) throws Exception { AdminInterceptor.cors(response); - if (Cools.isEmpty(param)){ + if (Cools.isEmpty(param)) { return R.parse(BaseRes.EMPTY); } BufferedImage img; @@ -237,11 +423,11 @@ @RequestMapping(value = "/mat/print/auth") @ManagerAuth(memo = "鍟嗗搧缂栫爜鎵撳嵃") public R matCodePrint(@RequestParam(value = "param[]") String[] param) { - if(Cools.isEmpty(param)) { + if (Cools.isEmpty(param)) { return R.parse(CodeRes.EMPTY); } List<MatPrint> res = new ArrayList<>(); - for (String matnr : param){ + for (String matnr : param) { Mat mat = matService.selectByMatnr(matnr); // 鎵撳嵃鏁版嵁娉ㄥ叆 MatPrint print = new MatPrint(); @@ -282,7 +468,7 @@ public R matExcelImport(MultipartFile file) throws IOException { MatExcelListener listener = new MatExcelListener(getUserId()); EasyExcel.read(file.getInputStream(), MatExcel.class, listener).sheet().doRead(); - return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉″晢鍝佹暟鎹�"); + return R.ok("鎴愬姛鍚屾" + listener.getTotal() + "鏉″晢鍝佹暟鎹�"); } /*************************************** xm-select ***********************************************/ @@ -299,7 +485,7 @@ for (Mat mat : mats) { KeyValueVo vo = new KeyValueVo(); vo.setName(mat.getMatnr() + " - " + mat.getMaktx()); - vo.setValue(mat.getId()); + vo.setValue(mat.getMatnr()); valueVos.add(vo); } return R.ok().add(valueVos); -- Gitblit v1.9.1