上传关联

dev_no_inv
zane 9 months ago
parent dbe6477e09
commit c565b37b4f

@ -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<RelCodeBatchResponse> relCodeBatchResponses = relCodeBatchService.filterList(relCodeBatchRequest);
PageInfo<RelCodeBatchResponse> pageInfo = new PageInfo<>(relCodeBatchResponses);
PageSimpleResponse<RelCodeBatchResponse> 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("修改成功!");
}
}

@ -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("修改成功!");
}
}

@ -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<RelCodeBatch> {
}
List<RelCodeBatchResponse> filterList(RelCodeBatchRequest relCodeBatchRequest);
}

@ -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;
}
}

@ -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;
}
}

@ -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;
}

@ -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;
}

@ -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<RelCodeBatchMapper, RelCodeBatch> {
@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<RelCodeDetail> 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<RelCodeBatchResponse> 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);
}
}

@ -7,7 +7,7 @@
<id column="id" jdbcType="INTEGER" property="id" />
<result column="productCode" jdbcType="VARCHAR" property="productCode" />
<result column="subTypeNo" jdbcType="VARCHAR" property="subTypeNo" />
<result column="cascade" jdbcType="VARCHAR" property="cascade" />
<result column="cascadeRatio" jdbcType="VARCHAR" property="cascadeRatio" />
<result column="packageSpec" jdbcType="VARCHAR" property="packageSpec" />
<result column="comment" jdbcType="VARCHAR" property="comment" />
<result column="batchNo" jdbcType="VARCHAR" property="batchNo" />
@ -19,7 +19,44 @@
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, productCode, subTypeNo, `cascade`, packageSpec, `comment`, batchNo, madeDate,
id, productCode, subTypeNo, `cascadeRatio`, packageSpec, `comment`, batchNo, madeDate,
validateDate, workShop, lineName, lineManager
</sql>
</mapper>
<select id="filterList" parameterType="com.glxp.api.req.collect.RelCodeBatchRequest" resultType="com.glxp.api.res.collect.RelCodeBatchResponse">
select
id,
productCode,
subTypeNo,
cascadeRatio,
packageSpec,
comment,
batchNo,
madeDate,
validateDate,
workShop,
lineName,
lineManager
from rel_code_batch
<where>
<if test="productCode != '' and productCode != null">
AND productCode LIKE concat('%', #{productCode}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="keyWords != '' and keyWords != null">
and (
productCode LIKE concat('%', #{keyWords}, '%')
or subTypeNo LIKE concat('%', #{keyWords}, '%')
or packageSpec LIKE concat('%', #{keyWords}, '%'))
</if>
<if test="lineName != '' and lineName != null">
AND lineName LIKE concat('%', #{lineName}, '%')
</if>
<if test="lineManager != '' and lineManager != null">
AND lineManager LIKE concat('%', #{lineManager}, '%')
</if>
</where>
</select>
</mapper>

Loading…
Cancel
Save