From c845254d8e0d83bb9458d0236a1da201bfbeae42 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:18:23 +0800
Subject: [PATCH] 开发更新
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwMaterialServiceImpl.java | 309 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 236 insertions(+), 73 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwMaterialServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwMaterialServiceImpl.java
index 27e1c16..ea498da 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwMaterialServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwMaterialServiceImpl.java
@@ -1,20 +1,45 @@
package com.doumee.service.business.impl;
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.excel.ExcelImporter;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.model.LoginUserModel;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CategoryMapper;
import com.doumee.dao.business.YwMaterialMapper;
-import com.doumee.dao.business.model.YwMaterial;
+import com.doumee.dao.business.YwOutinboundMapper;
+import com.doumee.dao.business.YwOutinboundRecordMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.dto.ImportMaterialDTO;
+import com.doumee.dao.system.dto.ImportSystemUserDTO;
+import com.doumee.dao.system.model.Multifile;
import com.doumee.service.business.YwMaterialService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import javafx.scene.paint.Material;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 杩愮淮璧勪骇淇℃伅琛⊿ervice瀹炵幇
@@ -27,15 +52,80 @@
@Autowired
private YwMaterialMapper ywMaterialMapper;
+ @Autowired
+ private MultifileMapper multifileMapper;
+
+ @Autowired
+ private YwOutinboundRecordMapper ywOutinboundRecordMapper;
+
+ @Autowired
+ private CategoryMapper categoryMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+
@Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public Integer create(YwMaterial ywMaterial) {
+ //TODO rk 鎵�灞為」鐩�/鎴块棿闇�姹傞棶棰�
+ if(Objects.isNull(ywMaterial)
+ || StringUtils.isBlank(ywMaterial.getName())
+ || StringUtils.isBlank(ywMaterial.getQrcode())
+ || Objects.isNull(ywMaterial.getCateId())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ ywMaterial.setId(null);
+ if(StringUtils.isBlank(ywMaterial.getCode())){
+ //鑷姩鐢熸垚 TODO 瀛樺湪闂
+ YwMaterial lastAutoMaterial = ywMaterialMapper.selectOne(new QueryWrapper<YwMaterial>().lambda().eq(YwMaterial::getAutoCode,Constants.ONE).last("limit 1 "));
+ Long countCode = 0L;
+ String nextCode = StringUtils.leftPad(Long.toString(countCode + 1 ),4,"0");
+ if(Objects.nonNull(lastAutoMaterial)){
+ Long maxCode = Long.valueOf(lastAutoMaterial.getCode().replace("P",""));
+ nextCode = StringUtils.leftPad(Long.toString(maxCode + 1),4,"0");
+ while (ywMaterialMapper.selectCount(new QueryWrapper<YwMaterial>().lambda().eq(YwMaterial::getCode, "P"+nextCode))>Constants.ZERO){
+ countCode = countCode + 1 ;
+ nextCode = StringUtils.leftPad(Long.toString(countCode),4,"0");
+ }
+ }
+ ywMaterial.setCode("P"+nextCode);
+ ywMaterial.setAutoCode(Constants.ONE);
+ }else{
+ //楠岃瘉code鏄惁瀛樺湪
+ if(ywMaterialMapper.selectCount(new QueryWrapper<YwMaterial>().lambda().eq(YwMaterial::getCode, ywMaterial.getCode()))>0){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠缂栫爜宸插瓨鍦�");
+ };
+ ywMaterial.setAutoCode(Constants.ZERO);
+ }
+ LoginUserInfo loginUserInfo = ywMaterial.getLoginUserInfo();
+ ywMaterial.setCreator(loginUserInfo.getId());
+ ywMaterial.setCreateDate(new Date());
+ ywMaterial.setIsdeleted(Constants.ZERO);
+ ywMaterial.setStatus(Constants.ZERO);
ywMaterialMapper.insert(ywMaterial);
+
+ if(Objects.nonNull(ywMaterial.getMultifile())){
+ if(org.apache.commons.lang3.StringUtils.isBlank(ywMaterial.getMultifile().getFileurl())
+ || org.apache.commons.lang3.StringUtils.isBlank(ywMaterial.getMultifile().getName())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒");
+ }
+ ywMaterial.getMultifile().setCreator(loginUserInfo.getId());
+ ywMaterial.getMultifile().setCreateDate(new Date());
+ ywMaterial.getMultifile().setIsdeleted(Constants.ZERO);
+ ywMaterial.getMultifile().setObjType(Constants.MultiFile.MATERIAL_FILE.getKey());
+ ywMaterial.getMultifile().setObjId(ywMaterial.getId());
+ multifileMapper.insert(ywMaterial.getMultifile());
+ }
return ywMaterial.getId();
}
@Override
public void deleteById(Integer id) {
- ywMaterialMapper.deleteById(id);
+ if(ywOutinboundRecordMapper.selectCount(new QueryWrapper<YwOutinboundRecord>().lambda().eq(YwOutinboundRecord::getMaterialId,id))>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐗╂枡宸叉湁鍑哄叆搴撹褰曪紝涓嶅彲鍒犻櫎");
+ }
+ ywMaterialMapper.update(new UpdateWrapper<YwMaterial>().lambda().set(YwMaterial::getIsdeleted,Constants.ONE).eq(YwMaterial::getId,id));
}
@Override
@@ -53,8 +143,36 @@
}
@Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public void updateById(YwMaterial ywMaterial) {
+ //TODO rk 鎵�灞為」鐩�/鎴块棿闇�姹傞棶棰�
+ if(Objects.isNull(ywMaterial)
+ || StringUtils.isBlank(ywMaterial.getName())
+ || StringUtils.isBlank(ywMaterial.getCode())
+ || StringUtils.isBlank(ywMaterial.getQrcode())
+ || Objects.isNull(ywMaterial.getCateId())
+ || Objects.isNull(ywMaterial.getId())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ ywMaterial.setCode(null);
+ LoginUserInfo loginUserInfo = ywMaterial.getLoginUserInfo();
+ ywMaterial.setEditor(loginUserInfo.getId());
+ ywMaterial.setEditDate(new Date());
ywMaterialMapper.updateById(ywMaterial);
+ multifileMapper.delete(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjType,Constants.MultiFile.MATERIAL_FILE.getKey()).eq(Multifile::getObjId,ywMaterial.getId()));
+ if(Objects.nonNull(ywMaterial.getMultifile())){
+ if(org.apache.commons.lang3.StringUtils.isBlank(ywMaterial.getMultifile().getFileurl())
+ || org.apache.commons.lang3.StringUtils.isBlank(ywMaterial.getMultifile().getName())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒");
+ }
+ ywMaterial.getMultifile().setCreator(loginUserInfo.getId());
+ ywMaterial.getMultifile().setCreateDate(new Date());
+ ywMaterial.getMultifile().setIsdeleted(Constants.ZERO);
+ ywMaterial.getMultifile().setObjType(Constants.MultiFile.MATERIAL_FILE.getKey());
+ ywMaterial.getMultifile().setObjId(ywMaterial.getId());
+ multifileMapper.insert(ywMaterial.getMultifile());
+ }
}
@Override
@@ -68,8 +186,34 @@
}
@Override
+ public void updateStatus(YwMaterial ywMaterials) {
+ if(Objects.isNull(ywMaterials)
+ || Objects.isNull(ywMaterials.getId())
+ || Objects.isNull(ywMaterials.getStatus())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ ywMaterialMapper.update(new UpdateWrapper<YwMaterial>().lambda().eq(YwMaterial::getId,ywMaterials.getId()).set(YwMaterial::getStatus,ywMaterials.getStatus()));
+ }
+
+ @Override
public YwMaterial findById(Integer id) {
return ywMaterialMapper.selectById(id);
+ }
+
+ @Override
+ public YwMaterial getDetail(Integer id) {
+ YwMaterial ywMaterial = ywMaterialMapper.selectById(id);
+ if(Objects.isNull(ywMaterial)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.MATERIAL_FILE.getKey()));
+ if(Objects.nonNull(multifile)){
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_MATERIAL).getCode();
+ multifile.setFileurlFull(path + multifile.getFileurl());
+ ywMaterial.setMultifile(multifile);
+ }
+ return ywMaterial;
}
@Override
@@ -87,79 +231,35 @@
@Override
public PageData<YwMaterial> findPage(PageWrap<YwMaterial> pageWrap) {
IPage<YwMaterial> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<YwMaterial> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<YwMaterial> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(YwMaterial::getId, pageWrap.getModel().getId());
- }
- if (pageWrap.getModel().getCreator() != null) {
- queryWrapper.lambda().eq(YwMaterial::getCreator, pageWrap.getModel().getCreator());
- }
- if (pageWrap.getModel().getCreateDate() != null) {
- queryWrapper.lambda().ge(YwMaterial::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
- queryWrapper.lambda().le(YwMaterial::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
- }
- if (pageWrap.getModel().getEditor() != null) {
- queryWrapper.lambda().eq(YwMaterial::getEditor, pageWrap.getModel().getEditor());
- }
- if (pageWrap.getModel().getEditDate() != null) {
- queryWrapper.lambda().ge(YwMaterial::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
- queryWrapper.lambda().le(YwMaterial::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
- }
- if (pageWrap.getModel().getIsdeleted() != null) {
- queryWrapper.lambda().eq(YwMaterial::getIsdeleted, pageWrap.getModel().getIsdeleted());
- }
- if (pageWrap.getModel().getRemark() != null) {
- queryWrapper.lambda().eq(YwMaterial::getRemark, pageWrap.getModel().getRemark());
- }
- if (pageWrap.getModel().getName() != null) {
- queryWrapper.lambda().ge(YwMaterial::getName, Utils.Date.getStart(pageWrap.getModel().getName()));
- queryWrapper.lambda().le(YwMaterial::getName, Utils.Date.getEnd(pageWrap.getModel().getName()));
- }
- if (pageWrap.getModel().getStatus() != null) {
- queryWrapper.lambda().eq(YwMaterial::getStatus, pageWrap.getModel().getStatus());
- }
- if (pageWrap.getModel().getCode() != null) {
- queryWrapper.lambda().eq(YwMaterial::getCode, pageWrap.getModel().getCode());
- }
- if (pageWrap.getModel().getParentCateId() != null) {
- queryWrapper.lambda().eq(YwMaterial::getParentCateId, pageWrap.getModel().getParentCateId());
- }
- if (pageWrap.getModel().getCateId() != null) {
- queryWrapper.lambda().eq(YwMaterial::getCateId, pageWrap.getModel().getCateId());
- }
- if (pageWrap.getModel().getQrcode() != null) {
- queryWrapper.lambda().eq(YwMaterial::getQrcode, pageWrap.getModel().getQrcode());
- }
- if (pageWrap.getModel().getSortnum() != null) {
- queryWrapper.lambda().eq(YwMaterial::getSortnum, pageWrap.getModel().getSortnum());
- }
- if (pageWrap.getModel().getBrand() != null) {
- queryWrapper.lambda().eq(YwMaterial::getBrand, pageWrap.getModel().getBrand());
- }
- if (pageWrap.getModel().getAttr() != null) {
- queryWrapper.lambda().eq(YwMaterial::getAttr, pageWrap.getModel().getAttr());
- }
- if (pageWrap.getModel().getMinStock() != null) {
- queryWrapper.lambda().eq(YwMaterial::getMinStock, pageWrap.getModel().getMinStock());
- }
- if (pageWrap.getModel().getMaxStock() != null) {
- queryWrapper.lambda().eq(YwMaterial::getMaxStock, pageWrap.getModel().getMaxStock());
- }
- if (pageWrap.getModel().getUnitName() != null) {
- queryWrapper.lambda().eq(YwMaterial::getUnitName, pageWrap.getModel().getUnitName());
- }
- if (pageWrap.getModel().getRoomId() != null) {
- queryWrapper.lambda().eq(YwMaterial::getRoomId, pageWrap.getModel().getRoomId());
- }
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
+ YwMaterial model = pageWrap.getModel();
+ queryWrapper.selectAll(YwMaterial.class)
+ .leftJoin(YwRoom.class,YwRoom::getId,YwMaterial::getRoomId)
+ .and(StringUtils.isNotBlank(model.getCode()),i->i.like(YwMaterial::getCode,model.getCode()).or().like(YwMaterial::getName,model.getCode()))
+ .like(StringUtils.isNotBlank(model.getAttr()),YwMaterial::getAttr,model.getAttr())
+ .eq(Objects.nonNull(model.getProjectId()),YwRoom::getProjectId,model.getProjectId())
+ .eq(Objects.nonNull(model.getStatus()),YwMaterial::getStatus,model.getStatus())
+ .eq(Objects.nonNull(model.getRoomId()),YwMaterial::getRoomId,model.getRoomId())
+ .eq(Objects.nonNull(model.getCateId()),YwMaterial::getCateId,model.getCateId())
+ .eq(Objects.nonNull(model.getParentCateId()),YwMaterial::getParentCateId,model.getParentCateId())
+ .eq(Objects.nonNull(model.getFloorId()),YwRoom::getFloor,model.getFloorId())
+ .eq(Objects.nonNull(model.getBuildingId()),YwRoom::getBuildingId,model.getBuildingId())
+ .eq(YwMaterial::getIsdeleted,Constants.ZERO)
+ .orderByAsc(YwMaterial::getCode)
+ ;
+
+ IPage<YwMaterial> iPage = ywMaterialMapper.selectJoinPage(page,YwMaterial.class,queryWrapper);
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_MATERIAL).getCode();
+ for (YwMaterial ywMaterial:iPage.getRecords()) {
+ Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,ywMaterial.getId()).eq(Multifile::getObjType,Constants.MultiFile.MATERIAL_FILE.getKey()));
+ if(Objects.nonNull(multifile)){
+ multifile.setFileurlFull(path + multifile.getFileurl());
+ ywMaterial.setMultifile(multifile);
}
}
- return PageData.from(ywMaterialMapper.selectPage(page, queryWrapper));
+ return PageData.from(iPage);
}
@Override
@@ -167,4 +267,67 @@
QueryWrapper<YwMaterial> wrapper = new QueryWrapper<>(ywMaterial);
return ywMaterialMapper.selectCount(wrapper);
}
+
+
+ @Override
+ public Integer importMaterialBatch(MultipartFile file,LoginUserInfo loginUserInfo) {
+ try {
+ ExcelImporter ie = new ExcelImporter(file, 0, 0);
+ List<ImportMaterialDTO> dataList = ie.getDataList(ImportMaterialDTO.class, null);
+ if (CollectionUtils.isEmpty(dataList)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+ }
+
+ List<Category> allCategory = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+ .eq(Category::getIsdeleted,Constants.ZERO).eq(Category::getIsdeleted,Constants.ZERO)
+ .eq(Category::getType,Constants.SEVEN)
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(allCategory)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏃犲垎绫诲熀纭�鏁版嵁锛�");
+ }
+ List<Category> categoryList = allCategory.stream().filter(i->Objects.isNull(i.getParentId())).collect(Collectors.toList());
+ for (Category category: categoryList) {
+ category.setChildCategoryList(
+ allCategory.stream().filter(i->Objects.nonNull(i.getParentId())&&Constants.equalsInteger(i.getParentId(),category.getId())).collect(Collectors.toList())
+ );
+ }
+ List<YwMaterial> ywMaterialList = new ArrayList<>();
+ for (int i = 0; i < dataList.size(); i++) {
+ ImportMaterialDTO importMaterialDTO = dataList.get(i);
+ if(Objects.isNull(importMaterialDTO)
+ || StringUtils.isBlank(importMaterialDTO.getName())
+ || StringUtils.isBlank(importMaterialDTO.getCategoryName())
+ || StringUtils.isBlank(importMaterialDTO.getCategoryChildName())
+ || StringUtils.isBlank(importMaterialDTO.getQrcode())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�"+(i+1)+"琛屽繀濉」缂哄け锛�");
+ }
+ YwMaterial ywMaterial = new YwMaterial();
+ BeanUtils.copyProperties(importMaterialDTO,ywMaterial);
+ Optional<Category> categoryOptional = categoryList.stream().filter(j->j.getName().equals(importMaterialDTO.getCategoryName())).findAny();
+ if(categoryOptional.isPresent()){
+ Category category = categoryOptional.get();
+ ywMaterial.setParentCateId(category.getId());
+ Optional<Category> childCategoryOptional = category.getChildCategoryList().stream().filter(j->j.getName().equals(importMaterialDTO.getCategoryChildName())).findAny();
+ if(childCategoryOptional.isPresent()){
+ ywMaterial.setCateId(childCategoryOptional.get().getId());
+ }else{
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�"+(i+1)+"琛岀墿鏂欏瓙鍒嗙被鏈煡璇㈠埌锛�");
+ }
+ }else{
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�"+(i+1)+"琛岀墿鏂欏垎绫绘湭鏌ヨ鍒帮紒");
+ }
+ ywMaterialList.add(ywMaterial);
+ }
+
+ for (YwMaterial ywMaterial:ywMaterialList) {
+ ywMaterial.setLoginUserInfo(loginUserInfo);
+ this.create(ywMaterial);
+ }
+ } catch (Exception e) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),e.getMessage());
+
+ }
+ return null;
+ }
}
--
Gitblit v1.9.3