From c565b37b4fbd9fd5a18138e5a41b55ab06617260 Mon Sep 17 00:00:00 2001 From: zane Date: Thu, 26 Sep 2024 17:29:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/RelCodeBatchController.java | 66 ++++++++++ .../collect/RelCodeDetailController.java | 39 ++++++ .../api/dao/collect/RelCodeBatchMapper.java | 8 +- .../glxp/api/entity/collect/RelCodeBatch.java | 8 +- .../api/entity/collect/RelCodeDetail.java | 6 +- .../api/req/collect/RelCodeBatchRequest.java | 69 ++++++++++ .../api/res/collect/RelCodeBatchResponse.java | 66 ++++++++++ .../service/collect/RelCodeBatchService.java | 118 +++++++++++++++++- .../mapper/collect/RelCodeBatchMapper.xml | 43 ++++++- 9 files changed, 410 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java create mode 100644 src/main/java/com/glxp/api/controller/collect/RelCodeDetailController.java create mode 100644 src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java create mode 100644 src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java diff --git a/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java b/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java new file mode 100644 index 000000000..84df84f25 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/collect/RelCodeBatchController.java @@ -0,0 +1,66 @@ +package com.glxp.api.controller.collect; + +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.CusRedissonAnnotation; +import com.glxp.api.annotation.RepeatSubmit; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.RedissonCacheKey; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.collect.IoCollectOrder; +import com.glxp.api.entity.collect.RelCodeBatch; +import com.glxp.api.req.collect.IoCollectCodeRequest; +import com.glxp.api.req.collect.RelCodeBatchRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.collect.IoCollectCodeResponse; +import com.glxp.api.res.collect.RelCodeBatchResponse; +import com.glxp.api.service.collect.RelCodeBatchService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +@Slf4j +@RestController +public class RelCodeBatchController extends BaseController { + + @Resource + private RelCodeBatchService relCodeBatchService; + + @RepeatSubmit() + @PostMapping("/udiwms/relCode/batch/xmlUpload") + public BaseResponse xmlUpload(@RequestBody RelCodeBatchRequest relCodeBatchRequest, @RequestParam("file") MultipartFile file) { + relCodeBatchService.xmlUpload(file); + return ResultVOUtils.success("保存成功!"); + } + + @GetMapping("/udiwms/relCode/batch/filter") + public BaseResponse list(RelCodeBatchRequest relCodeBatchRequest, BindingResult bindingResult) { + List relCodeBatchResponses = relCodeBatchService.filterList(relCodeBatchRequest); + PageInfo pageInfo = new PageInfo<>(relCodeBatchResponses); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(relCodeBatchResponses); + return ResultVOUtils.success(pageSimpleResponse); + } + + @GetMapping("/udiwms/relCode/batch/get") + public BaseResponse get(Long id) { + RelCodeBatch relCodeBatch = relCodeBatchService.getById(id); + return ResultVOUtils.success(relCodeBatch); + } + + + @PostMapping("/udiwms/relCode/batch/update") + public BaseResponse update(@RequestBody @Valid RelCodeBatch relCodeBatch) { + relCodeBatchService.updateById(relCodeBatch); + return ResultVOUtils.success("修改成功!"); + } + +} diff --git a/src/main/java/com/glxp/api/controller/collect/RelCodeDetailController.java b/src/main/java/com/glxp/api/controller/collect/RelCodeDetailController.java new file mode 100644 index 000000000..cb1564cea --- /dev/null +++ b/src/main/java/com/glxp/api/controller/collect/RelCodeDetailController.java @@ -0,0 +1,39 @@ +package com.glxp.api.controller.collect; + + +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.collect.IoCollectSet; +import com.glxp.api.entity.collect.RelCodeDetail; +import com.glxp.api.service.collect.RelCodeDetailService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +@Slf4j +@RestController +public class RelCodeDetailController extends BaseController { + + @Resource + private RelCodeDetailService relCodeDetailService; + + @GetMapping("/udiwms/relCode/detail/get") + public BaseResponse get(Long id) { + RelCodeDetail relCodeDetail = relCodeDetailService.getById(id); + return ResultVOUtils.success(relCodeDetail); + } + + + @PostMapping("/udiwms/relCode/detail/update") + public BaseResponse update(@RequestBody @Valid RelCodeDetail relCodeDetail) { + relCodeDetailService.updateById(relCodeDetail); + return ResultVOUtils.success("修改成功!"); + } +} diff --git a/src/main/java/com/glxp/api/dao/collect/RelCodeBatchMapper.java b/src/main/java/com/glxp/api/dao/collect/RelCodeBatchMapper.java index 4e7e12b77..2d51b6b5b 100644 --- a/src/main/java/com/glxp/api/dao/collect/RelCodeBatchMapper.java +++ b/src/main/java/com/glxp/api/dao/collect/RelCodeBatchMapper.java @@ -2,8 +2,14 @@ package com.glxp.api.dao.collect; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.collect.RelCodeBatch; +import com.glxp.api.req.collect.RelCodeBatchRequest; +import com.glxp.api.res.collect.RelCodeBatchResponse; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface RelCodeBatchMapper extends BaseMapper { -} \ No newline at end of file + List filterList(RelCodeBatchRequest relCodeBatchRequest); + +} diff --git a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java index 3eb547fa4..aa307c3a2 100644 --- a/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java +++ b/src/main/java/com/glxp/api/entity/collect/RelCodeBatch.java @@ -14,7 +14,7 @@ import lombok.Data; @Data @TableName(value = "rel_code_batch") public class RelCodeBatch implements Serializable { - @TableId(value = "id", type = IdType.INPUT) + @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value="") private Integer id; @@ -35,9 +35,9 @@ public class RelCodeBatch implements Serializable { /** * 包装比例 */ - @TableField(value = "cascade") + @TableField(value = "cascadeRatio") @ApiModelProperty(value="包装比例") - private String cascade; + private String cascadeRatio; /** * 包装规格 @@ -95,4 +95,4 @@ public class RelCodeBatch implements Serializable { @ApiModelProperty(value="负责人") private String lineManager; -} \ No newline at end of file +} diff --git a/src/main/java/com/glxp/api/entity/collect/RelCodeDetail.java b/src/main/java/com/glxp/api/entity/collect/RelCodeDetail.java index 939cac0f3..e88ea5409 100644 --- a/src/main/java/com/glxp/api/entity/collect/RelCodeDetail.java +++ b/src/main/java/com/glxp/api/entity/collect/RelCodeDetail.java @@ -29,7 +29,7 @@ public class RelCodeDetail implements Serializable { */ @TableField(value = "packLayer") @ApiModelProperty(value="包装级别") - private Byte packLayer; + private Integer packLayer; /** * 父级码 @@ -43,7 +43,7 @@ public class RelCodeDetail implements Serializable { */ @TableField(value = "flag") @ApiModelProperty(value="状态") - private Byte flag; + private Integer flag; /** * 产品批次ID外键 @@ -52,4 +52,4 @@ public class RelCodeDetail implements Serializable { @ApiModelProperty(value="产品批次ID外键") private Integer batchIdFk; -} \ No newline at end of file +} diff --git a/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java b/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java new file mode 100644 index 000000000..a10ebf118 --- /dev/null +++ b/src/main/java/com/glxp/api/req/collect/RelCodeBatchRequest.java @@ -0,0 +1,69 @@ +package com.glxp.api.req.collect; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.Date; + +@Data +public class RelCodeBatchRequest extends ListPageRequest { + + private Integer id; + + /** + * 产品编码 + */ + private String productCode; + + /** + * 类型编码 + */ + private String subTypeNo; + + /** + * 包装比例 + */ + private String cascadeRatio; + + /** + * 包装规格 + */ + private String packageSpec; + + /** + * 备注 + */ + private String comment; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private Date madeDate; + + /** + * 有效期至 + */ + private Date validateDate; + + /** + * 生产车间 + */ + private String workShop; + + /** + * 生产线 + */ + private String lineName; + + /** + * 负责人 + */ + private String lineManager; + + String keyWords; +} diff --git a/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java b/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java new file mode 100644 index 000000000..83196f9cb --- /dev/null +++ b/src/main/java/com/glxp/api/res/collect/RelCodeBatchResponse.java @@ -0,0 +1,66 @@ +package com.glxp.api.res.collect; + +import lombok.Data; + +import java.util.Date; + +@Data +public class RelCodeBatchResponse { + + private Integer id; + + /** + * 产品编码 + */ + private String productCode; + + /** + * 类型编码 + */ + private String subTypeNo; + + /** + * 包装比例 + */ + private String cascadeRatio; + + /** + * 包装规格 + */ + private String packageSpec; + + /** + * 备注 + */ + private String comment; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private Date madeDate; + + /** + * 有效期至 + */ + private Date validateDate; + + /** + * 生产车间 + */ + private String workShop; + + /** + * 生产线 + */ + private String lineName; + + /** + * 负责人 + */ + private String lineManager; +} diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java index 41455ebd9..909fd4e00 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeBatchService.java @@ -1,12 +1,126 @@ package com.glxp.api.service.collect; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.XmlUtil; +import com.github.pagehelper.PageHelper; +import com.glxp.api.entity.collect.RelCodeDetail; +import com.glxp.api.exception.JsonException; +import com.glxp.api.req.collect.RelCodeBatchRequest; +import com.glxp.api.res.collect.RelCodeBatchResponse; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.dao.collect.RelCodeBatchMapper; import com.glxp.api.entity.collect.RelCodeBatch; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @Service +@Slf4j public class RelCodeBatchService extends ServiceImpl { + + @Resource + private RelCodeDetailService relCodeDetailService; + + /** + * 上传保存关联信息 + * @param file + */ + @Transactional(rollbackFor = Exception.class) + public void xmlUpload(MultipartFile file) { + String fileName = file.getOriginalFilename(); + String suffix = FileUtil.getSuffix(fileName); + if(! "xml".equals(suffix)){ + throw new JsonException("上传文件类型错误:"+suffix); + } + log.info(file.getSize()+"文件长度"); + try { + List relCodeDetails = new ArrayList<>(); + Document document = XmlUtil.readXML(file.getInputStream()); + //获取根 + Element rootElement = XmlUtil.getRootElement(document); + //截取Relation + NodeList relation = rootElement.getElementsByTagName("Relation"); + Element relationE = (Element) relation.item(0); + String productCode = relationE.getAttribute("productCode"); + String subTypeNo = relationE.getAttribute("subTypeNo"); + String cascade = relationE.getAttribute("cascade"); + String packageSpec = relationE.getAttribute("packageSpec"); + String comment = relationE.getAttribute("comment"); + //截取Batch + NodeList batch = rootElement.getElementsByTagName("Batch"); + for (int i = 0; i < batch.getLength(); i++) { + Node batchNode = batch.item(i); + RelCodeBatch relCodeBatch = new RelCodeBatch(); + String batchNo; + if (batchNode.getNodeType() == Node.ELEMENT_NODE) { + Element batchE = (Element) batchNode; + relCodeBatch.setProductCode(productCode); + relCodeBatch.setSubTypeNo(subTypeNo); + relCodeBatch.setCascadeRatio(cascade); + relCodeBatch.setPackageSpec(packageSpec); + relCodeBatch.setComment(comment); + batchNo = batchE.getAttribute("batchNo"); + relCodeBatch.setBatchNo(batchNo); + String madeDate = batchE.getAttribute("madeDate"); + relCodeBatch.setMadeDate(DateUtil.parse(madeDate,"yyyy-MM-dd")); + String validateDate = batchE.getAttribute("validateDate"); + relCodeBatch.setValidateDate(DateUtil.parse(validateDate,"yyyy-MM-dd")); + String workShop = batchE.getAttribute("workShop"); + relCodeBatch.setWorkShop(workShop); + String lineName = batchE.getAttribute("lineName"); + relCodeBatch.setLineName(lineName); + String lineManager = batchE.getAttribute("lineManager"); + relCodeBatch.setLineManager(lineManager); + this.save(relCodeBatch); + } + //batch下的节点code + NodeList code = batchNode.getChildNodes(); + for (int j = 0; j < code.getLength(); j++) { + Node codeNode = code.item(j); + RelCodeDetail relCodeDetail = new RelCodeDetail(); + if (codeNode.getNodeType() == Node.ELEMENT_NODE) { + Element codeE = (Element) codeNode; + relCodeDetail.setBatchIdFk(relCodeBatch.getId()); + String curCode = codeE.getAttribute("curCode"); + relCodeDetail.setCurCode(curCode); + String packLayer = codeE.getAttribute("packLayer"); + relCodeDetail.setPackLayer(Integer.valueOf(packLayer)); + String parentCode = codeE.getAttribute("parentCode"); + relCodeDetail.setParentCode(parentCode); + String flag = codeE.getAttribute("flag"); + relCodeDetail.setFlag(Integer.valueOf(flag)); + relCodeDetails.add(relCodeDetail); + } + } + } + relCodeDetailService.saveBatch(relCodeDetails); + }catch (Exception e){ + throw new JsonException("上传失败:"+e.getMessage()); + } + + } + + public List filterList(RelCodeBatchRequest relCodeBatchRequest) { + if (relCodeBatchRequest == null) { + return Collections.emptyList(); + } + if (relCodeBatchRequest.getPage() != null) { + int offset = (relCodeBatchRequest.getPage() - 1) * relCodeBatchRequest.getLimit(); + PageHelper.offsetPage(offset, relCodeBatchRequest.getLimit()); + } + return this.baseMapper.filterList(relCodeBatchRequest); + } + } diff --git a/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml b/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml index 5114e8117..ee69dbe2b 100644 --- a/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/RelCodeBatchMapper.xml @@ -7,7 +7,7 @@ - + @@ -19,7 +19,44 @@ - id, productCode, subTypeNo, `cascade`, packageSpec, `comment`, batchNo, madeDate, + id, productCode, subTypeNo, `cascadeRatio`, packageSpec, `comment`, batchNo, madeDate, validateDate, workShop, lineName, lineManager - \ No newline at end of file + + +