|
|
@@ -5,16 +5,22 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ktg.common.core.text.Convert;
|
|
|
+import com.ktg.common.exception.ServiceException;
|
|
|
import com.ktg.common.utils.DateUtils;
|
|
|
+import com.ktg.common.utils.bean.BeanUtils;
|
|
|
import com.ktg.iscs.domain.IsMaterials;
|
|
|
+import com.ktg.iscs.domain.IsMaterialsType;
|
|
|
import com.ktg.iscs.domain.dto.materials.LoanMaterialDTO;
|
|
|
import com.ktg.iscs.domain.dto.materials.MaterialsPageDTO;
|
|
|
import com.ktg.iscs.domain.dto.materialsLoan.AddLoanDTO;
|
|
|
import com.ktg.iscs.domain.dto.materialsLoan.ReturnLoanDTO;
|
|
|
+import com.ktg.iscs.domain.vo.materials.ImportMaterialsVO;
|
|
|
import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
|
|
|
import com.ktg.iscs.mapper.IsMaterialsMapper;
|
|
|
import com.ktg.iscs.service.IIsMaterialsLoanService;
|
|
|
import com.ktg.iscs.service.IIsMaterialsService;
|
|
|
+import com.ktg.iscs.service.IIsMaterialsTypeService;
|
|
|
+import com.ktg.system.strategy.AutoCodeUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -35,6 +41,10 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
|
|
|
private IsMaterialsMapper isMaterialsMapper;
|
|
|
@Autowired
|
|
|
private IIsMaterialsLoanService iIsMaterialsLoanService;
|
|
|
+ @Autowired
|
|
|
+ private AutoCodeUtil autoCodeUtil;
|
|
|
+ @Autowired
|
|
|
+ private IIsMaterialsTypeService iIsMaterialsTypeService;
|
|
|
|
|
|
/**
|
|
|
* 查询物资
|
|
|
@@ -67,8 +77,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
|
|
|
@Override
|
|
|
public int insertIsMaterials(IsMaterials isMaterials) {
|
|
|
// 1.检查物资编码有没有被使用
|
|
|
- List<IsMaterials> list = list(Wrappers.<IsMaterials>lambdaQuery()
|
|
|
- .eq(IsMaterials::getMaterialsCode, isMaterials.getMaterialsCode()));
|
|
|
+ List<IsMaterials> list = list(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsCode, isMaterials.getMaterialsCode()));
|
|
|
Assert.isFalse(!list.isEmpty(), "该物资编码已被使用!");
|
|
|
isMaterials.setCreateTime(DateUtils.getNowDate());
|
|
|
return isMaterialsMapper.insertIsMaterials(isMaterials);
|
|
|
@@ -83,9 +92,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
|
|
|
@Override
|
|
|
public int updateIsMaterials(IsMaterials isMaterials) {
|
|
|
// 1.检查物资编码有没有被使用
|
|
|
- List<IsMaterials> list = list(Wrappers.<IsMaterials>lambdaQuery()
|
|
|
- .eq(IsMaterials::getMaterialsCode, isMaterials.getMaterialsCode())
|
|
|
- .ne(IsMaterials::getMaterialsId, isMaterials.getMaterialsId()));
|
|
|
+ List<IsMaterials> list = list(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsCode, isMaterials.getMaterialsCode()).ne(IsMaterials::getMaterialsId, isMaterials.getMaterialsId()));
|
|
|
Assert.isFalse(!list.isEmpty(), "该物资编码已被使用!");
|
|
|
isMaterials.setUpdateTime(DateUtils.getNowDate());
|
|
|
return isMaterialsMapper.updateIsMaterials(isMaterials);
|
|
|
@@ -127,10 +134,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
|
|
|
Assert.notNull(dto.getMaterialsId(), "请告诉我需要借出/归还的物资!");
|
|
|
Assert.isFalse(StringUtils.isBlank(dto.getLoanState()), "请告诉我是借出还是归还!");
|
|
|
// 2.开始更新物资状态
|
|
|
- update(Wrappers.<IsMaterials>lambdaUpdate()
|
|
|
- .eq(IsMaterials::getMaterialsId, dto.getMaterialsId())
|
|
|
- .set(IsMaterials::getLoanState, dto.getLoanState())
|
|
|
- .set(IsMaterials::getUpdateTime, new Date()));
|
|
|
+ update(Wrappers.<IsMaterials>lambdaUpdate().eq(IsMaterials::getMaterialsId, dto.getMaterialsId()).set(IsMaterials::getLoanState, dto.getLoanState()).set(IsMaterials::getUpdateTime, new Date()));
|
|
|
// 3.物资信息
|
|
|
IsMaterials materials = getById(dto.getMaterialsId());
|
|
|
Assert.notNull(materials, "该物资不存在!");
|
|
|
@@ -152,4 +156,139 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public String importMaterials(List<ImportMaterialsVO> itemList, boolean updateSupport, String operName) {
|
|
|
+ Assert.notNull(itemList, "导入物料产品数据不能为空!");
|
|
|
+ int successNum = 0;
|
|
|
+ int failureNum = 0;
|
|
|
+ StringBuilder successMsg = new StringBuilder();
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
+ for (ImportMaterialsVO materials : itemList) {
|
|
|
+ // 0.定义一个boolean,记录当前这条数据有没有问题
|
|
|
+ boolean result = true;
|
|
|
+ // 0.1定义一个物资类型id
|
|
|
+ Long materialsTypeId = null;
|
|
|
+
|
|
|
+ // 1.---------------物资如果没有编号,自动生成物资编号--------------------
|
|
|
+ if (StringUtils.isBlank(materials.getMaterialsCode())) {
|
|
|
+ String ruleCode = "MATERIALS_CODE";
|
|
|
+ materials.setMaterialsCode(autoCodeUtil.genSerialCode(ruleCode, null));
|
|
|
+ }
|
|
|
+ // 1.1检查物资的编号是否可用
|
|
|
+ List<IsMaterials> materialsCodeList = list(Wrappers.<IsMaterials>lambdaQuery().eq(IsMaterials::getMaterialsCode, materials.getMaterialsCode()));
|
|
|
+ if (!materialsCodeList.isEmpty()) {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资编号 " + materials.getMaterialsCode() + " 已被使用");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2.-----------------检查物资名称不能为空-------------------------------
|
|
|
+ if (StringUtils.isBlank(materials.getMaterialsName())) {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资名称 " + materials.getMaterialsName() + " 不能为空");
|
|
|
+ }
|
|
|
+ // 3.-----------------检查物资类型不能为空-------------------------------
|
|
|
+ if (StringUtils.isNotBlank(materials.getMaterialsTypeName())) {
|
|
|
+ // 3.1检查物资类型是否在我们的系统中
|
|
|
+ List<IsMaterialsType> materialsTypelist = iIsMaterialsTypeService.list(Wrappers.<IsMaterialsType>lambdaQuery()
|
|
|
+ .eq(IsMaterialsType::getMaterialsTypeName, materials.getMaterialsTypeName()));
|
|
|
+ if (materialsTypelist.isEmpty()) {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资分类 " + materials.getMaterialsName() + " 系统中无该物资类型");
|
|
|
+ } else {
|
|
|
+ materialsTypeId = materialsTypelist.get(0).getMaterialsTypeId();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资分类 " + materials.getMaterialsName() + " 不能为空");
|
|
|
+ }
|
|
|
+ // 4.---------------------检查rfid是否填写------------------------------
|
|
|
+ if (StringUtils.isNotBlank(materials.getMaterialsRfid())) {
|
|
|
+ // 4.1检查rfid是否被使用
|
|
|
+ List<IsMaterials> materialslist = list(Wrappers.<IsMaterials>lambdaQuery()
|
|
|
+ .eq(IsMaterials::getMaterialsRfid, materials.getMaterialsRfid()));
|
|
|
+ if (!materialslist.isEmpty()) {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资RFID " + materials.getMaterialsRfid() + " 已被使用");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result = false;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物资RFID " + materials.getMaterialsName() + " 不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开始做最后的插入操作
|
|
|
+ if (result) {
|
|
|
+ successNum++;
|
|
|
+ IsMaterials bean = BeanUtils.toBean(materials, IsMaterials.class);
|
|
|
+ bean.setMaterialsTypeId(materialsTypeId);
|
|
|
+ insertIsMaterials(bean);
|
|
|
+ } else {
|
|
|
+ failureNum++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ // 总结
|
|
|
+ if (failureNum > 0) {
|
|
|
+ failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
|
|
+ throw new ServiceException(failureMsg.toString());
|
|
|
+ } else {
|
|
|
+ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条");
|
|
|
+ }
|
|
|
+ /*for (IsMaterials item : itemList) {
|
|
|
+ try {
|
|
|
+ // 物料分类是否正确
|
|
|
+ if (com.ktg.common.utils.StringUtils.isNotNull(item.getItemTypeName())) {
|
|
|
+ List<ItemType> types = itemTypeMapper.selectItemTypeByName(item.getItemTypeName());
|
|
|
+ if (!CollectionUtils.isEmpty(types)) {
|
|
|
+ item.setItemTypeId(types.get(0).getItemTypeId());
|
|
|
+ item.setItemTypeCode(types.get(0).getItemTypeCode());
|
|
|
+ item.setItemTypeName(types.get(0).getItemTypeName());
|
|
|
+ item.setItemOrProduct(types.get(0).getItemOrProduct());
|
|
|
+
|
|
|
+ item.setSafeStockFlag(UserConstants.NO);
|
|
|
+ item.setEnableFlag(UserConstants.YES);
|
|
|
+ item.setHighValue(UserConstants.NO);
|
|
|
+
|
|
|
+ //是否存在
|
|
|
+ MdItem v = mdItemMapper.checkItemCodeUnique(item);
|
|
|
+ if (com.ktg.common.utils.StringUtils.isNull(v)) {
|
|
|
+ BeanValidators.validateWithException(validator, item);
|
|
|
+ String itemCode = autoCodeUtil.genSerialCode(UserConstants.ITEM_CODE, "");
|
|
|
+ item.setItemCode(itemCode);
|
|
|
+ this.insertMdItem(item);
|
|
|
+ barCodeUtil.generateBarCode(UserConstants.BARCODE_TYPE_ITEM, item.getItemId(), item.getItemCode(), item.getItemName());
|
|
|
+ successNum++;
|
|
|
+ } else if (isUpdateSupport) {
|
|
|
+ BeanValidators.validateWithException(validator, item);
|
|
|
+ item.setUpdateBy(operName);
|
|
|
+ item.setItemId(v.getItemId());
|
|
|
+ this.updateMdItem(item);
|
|
|
+ successNum++;
|
|
|
+ } else {
|
|
|
+ failureNum++;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物料/产品 " + item.getItemName() + " 已存在");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ failureNum++;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物料/产品 " + item.getItemName() + " 请填写正确的分类");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ failureNum++;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、物料/产品 " + item.getItemName() + " 请填写分类");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ failureNum++;
|
|
|
+ String msg = "<br/>" + failureNum + "、物料/产品 " + item.getItemName() + " 导入失败:";
|
|
|
+ failureMsg.append(msg + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (failureNum > 0) {
|
|
|
+ failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
|
|
+ throw new ServiceException(failureMsg.toString());
|
|
|
+ } else {
|
|
|
+ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条");
|
|
|
+ }*/
|
|
|
+ return successMsg.toString();
|
|
|
+ }
|
|
|
+
|
|
|
}
|