From a19133219811f9286fa71a0fb8c1deb628cf74a3 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期四, 28 十一月 2024 16:51:08 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java | 138 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 104 insertions(+), 34 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java index 36e50ef..b11d721 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java @@ -3,13 +3,18 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; -import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.R; +import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.MatField; +import com.zy.asrs.wms.asrs.entity.MatFieldValue; +import com.zy.asrs.wms.asrs.entity.Tag; +import com.zy.asrs.wms.asrs.entity.template.MatTemplate; import com.zy.asrs.wms.asrs.service.MatFieldService; +import com.zy.asrs.wms.asrs.service.MatFieldValueService; +import com.zy.asrs.wms.asrs.service.TagService; import com.zy.asrs.wms.common.annotation.OperationLog; import com.zy.asrs.wms.common.domain.BaseParam; import com.zy.asrs.wms.common.domain.KeyValVo; @@ -20,7 +25,9 @@ import com.zy.asrs.wms.utils.ExcelUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -33,6 +40,10 @@ private MatService matService; @Autowired private MatFieldService matFieldService; + @Autowired + private MatFieldValueService matFieldValueService; + @Autowired + private TagService tagService; @PreAuthorize("hasAuthority('asrs:mat:list')") @PostMapping("/mat/page") @@ -43,25 +54,12 @@ JSONObject data = JSON.parseObject(JSON.toJSONString(page)); - ArrayList<JSONObject> list = new ArrayList<>(); - data.put("records", list); List<Mat> records = page.getRecords(); - for (Mat record : records) { - JSONObject tmp = JSON.parseObject(JSON.toJSONString(record)); - String extend = record.getExtend(); - if (!Cools.isEmpty(extend)) { - List<JSONObject> matFields = JSON.parseArray(extend, JSONObject.class); - for (JSONObject matField : matFields) { - if (matField.getString("type").equals("num")) { - tmp.put(matField.getString("name"), matField.getDouble("value")); - } else if (matField.getString("type").equals("bool")) { - tmp.put(matField.getString("name"), matField.getBoolean("value")); - }else { - tmp.put(matField.getString("name"), matField.getString("value")); - } - } - } - list.add(tmp); + data.put("records", records); + for (Mat mat : records) { + List<MatFieldValue> list = matFieldValueService.list(new LambdaQueryWrapper<MatFieldValue>() + .eq(MatFieldValue::getMatId, mat.getId())); + mat.syncField(list); } return R.ok().add(data); @@ -84,13 +82,11 @@ @PostMapping("/mat/save") public R save(@RequestBody HashMap<String,Object> param) { Mat mat = JSON.parseObject(JSON.toJSONString(param), Mat.class, Feature.DisableCircularReferenceDetect); - //鑾峰彇鎵╁睍瀛楁 - List<JSONObject> fields = getMatFieldList(param); - mat.setExtend(JSON.toJSONString(fields, SerializerFeature.DisableCircularReferenceDetect)); - if (!matService.save(mat)) { return R.error("娣诲姞澶辫触"); } + //璁剧疆鎵╁睍瀛楁 + setMatField(param, mat); return R.ok("娣诲姞鎴愬姛"); } @@ -99,9 +95,8 @@ @PostMapping("/mat/update") public R update(@RequestBody HashMap<String,Object> param) { Mat mat = JSON.parseObject(JSON.toJSONString(param), Mat.class, Feature.DisableCircularReferenceDetect); - //鑾峰彇鎵╁睍瀛楁 - List<JSONObject> fields = getMatFieldList(param); - mat.setExtend(JSON.toJSONString(fields, SerializerFeature.DisableCircularReferenceDetect)); + //璁剧疆鎵╁睍瀛楁 + setMatField(param, mat); if (!matService.updateById(mat)) { return R.error("淇敼澶辫触"); @@ -136,21 +131,96 @@ @PreAuthorize("hasAuthority('asrs:mat:list')") @PostMapping("/mat/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { - ExcelUtil.build(ExcelUtil.create(matService.list(), Mat.class), response); + List<Mat> list = matService.parseMat(matService.list()); + List<MatField> matFields = matFieldService.getMatFields(); + ExcelUtil.build(ExcelUtil.create(list, Mat.class, matFields), response); } - private List<JSONObject> getMatFieldList(HashMap<String, Object> param) { + private void setMatField(Map<String, Object> param, Mat mat) { //鑾峰彇鎵╁睍瀛楁 List<MatField> matFields = matFieldService.list(); - ArrayList<JSONObject> fields = new ArrayList<>(); for (MatField matField : matFields) { - if(param.containsKey(matField.getName())){ - JSONObject parsed = JSON.parseObject(JSON.toJSONString(matField), Feature.DisableCircularReferenceDetect); - parsed.put("value", param.get(matField.getName())); - fields.add(parsed); + if (param.containsKey(matField.getName())) { + MatFieldValue fieldValue = matFieldValueService.getOne(new LambdaQueryWrapper<MatFieldValue>() + .eq(MatFieldValue::getMatId, mat.getId()) + .eq(MatFieldValue::getFieldId, matField.getId())); + Object valueObj = param.get(matField.getName()); + String value = ""; + if(valueObj != null) { + value = valueObj.toString(); + } + + if (fieldValue == null) { + fieldValue = new MatFieldValue(); + fieldValue.setMatId(mat.getId()); + fieldValue.setFieldId(matField.getId()); + fieldValue.setName(matField.getName()); + fieldValue.setValue(value); + matFieldValueService.save(fieldValue); + }else { + fieldValue.setValue(value); + matFieldValueService.updateById(fieldValue); + } } } - return fields; + } + + @PreAuthorize("hasAuthority('asrs:mat:list')") + @PostMapping("/mat/exportTemplate") + public void exportTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ArrayList<MatTemplate> list = new ArrayList<>(); + List<MatField> matFields = matFieldService.getMatFields(); + ExcelUtil.build(ExcelUtil.create(list, MatTemplate.class, matFields), response); + } + + @PostMapping("/mat/upload") + @Transactional + public R upload(@RequestParam("file") MultipartFile file) { + List<MatTemplate> list = ExcelUtil.parseExcelFile(file, MatTemplate.class); + for (MatTemplate matTemplate : list) { + String firstTag = matTemplate.getFirstTag(); + String secondTag = matTemplate.getSecondTag(); + Tag tag1 = null; + Long tagId = null; + + if (!Cools.isEmpty(firstTag)) { + Tag tag = tagService.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getName, firstTag)); + if (tag == null) { + tag = new Tag(); + tag.setName(firstTag); + tag.setParentId(0L); + tagService.save(tag); + } + + tagId = tag.getId(); + tag1 = tag; + } + + if (!Cools.isEmpty(secondTag)) { + if (tag1 != null) { + Tag tag = tagService.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getName, secondTag).eq(Tag::getParentId, tag1.getId())); + if (tag == null) { + tag = new Tag(); + tag.setName(secondTag); + tag.setParentId(tag1.getId()); + tagService.save(tag); + } + + tagId = tag.getId(); + } + } + + + Mat mat = new Mat(); + mat.sync(matTemplate); + mat.setTagId(tagId); + if (!matService.save(mat)) { + throw new CoolException("鍒涘缓鍟嗗搧澶辫触"); + } + //璁剧疆鎵╁睍瀛楁 + setMatField(matTemplate.getDynamicFields(), mat); + } + return R.ok(); } } -- Gitblit v1.9.1