package com.ruoyi.basicData.service.impl; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.ruoyi.basicData.domain.TGoods; import com.ruoyi.basicData.domain.TGoodsImport; import com.ruoyi.basicData.mapper.TGoodsMapper; import com.ruoyi.basicData.service.ITGoodsService; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.reportManagement.domain.TWhgenleg; import com.ruoyi.reportManagement.mapper.TWhgenlegMapper; import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems; import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.multipart.MultipartFile; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; /** * 商品详情Service业务层处理 * * @author ruoyi * @date 2020-12-11 */ @Service public class TGoodsServiceImpl implements ITGoodsService { @Autowired private TGoodsMapper tGoodsMapper; @Autowired private TWarehousebillsitemsMapper tWarehousebillsitemsMapper; @Autowired private TWhgenlegMapper tWhgenlegMapper; /** * 查询商品详情 * * @param fId 商品详情ID * @return 商品详情 */ @Override public TGoods selectTGoodsById(Long fId) { return tGoodsMapper.selectTGoodsById(fId); } /** * 查询商品详情列表 * * @param tGoods 商品详情 * @return 商品详情 */ @Override public List selectTGoodsList(TGoods tGoods) { return tGoodsMapper.selectTGoodsList(tGoods); } /** * 新增商品详情 * * @param tGoods 商品详情 * @return 结果 */ @Override public int insertTGoods(TGoods tGoods) { tGoods.setCreateTime(DateUtils.getNowDate()); tGoods.setCreateBy(SecurityUtils.getUsername()); if (ObjectUtils.isNull(tGoods.getStockWarning())) { tGoods.setStockWarning(new BigDecimal(0)); } return tGoodsMapper.insertTGoods(tGoods); } /** * 修改商品详情 * * @param tGoods 商品详情 * @return 结果 */ @Override public AjaxResult updateTGoods(TGoods tGoods) { if (tGoods.getfStatus() != null && tGoods.getfStatus().equals("1")) { TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems(); tWarehousebillsitems.setfGoodsid(tGoods.getfId()); List warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems); if (warehousebillsitemsList1 != null && !warehousebillsitemsList1.isEmpty()) { return AjaxResult.error("商品在库存总账有记录不可变更状态"); } } TWhgenleg tWhgenleg = new TWhgenleg(); tWhgenleg.setfGoodsid(tGoods.getfId()); List selectTWhgenlegList = tWhgenlegMapper.selectTWhgenlegV2(tWhgenleg); for (TWhgenleg selectTWhgenleg : selectTWhgenlegList) { if (ObjectUtils.isNotNull(selectTWhgenleg) && selectTWhgenleg.getfQtyblc() != 0) { return AjaxResult.error("该商品存在未出库库存,禁止修改"); } } if (ObjectUtils.isNull(tGoods.getStockWarning())) { tGoods.setStockWarning(new BigDecimal(0)); } tGoods.setUpdateTime(DateUtils.getNowDate()); tGoods.setUpdateBy(SecurityUtils.getUsername()); tGoodsMapper.updateTGoods(tGoods); return AjaxResult.success(); } /** * 批量删除商品详情 * * @param fIds 需要删除的商品详情ID * @return 结果 */ @Override @Transactional public AjaxResult deleteTGoodsByIds(Long[] fIds) { // return tGoodsMapper.deleteTGoodsByIds(fIds); int i = 1; for (Long id : fIds) { TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems(); tWarehousebillsitems.setfGoodsid(id); List warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems); if (warehousebillsitemsList1 != null && !warehousebillsitemsList1.isEmpty()) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("商品第" + i + "行 仓库有货物不可删除"); } tGoodsMapper.deleteTGoodsById(id); i++; } return AjaxResult.success(); } /** * 删除商品详情信息 * * @param fId 商品详情ID * @return 结果 */ @Override public int deleteTGoodsById(Long fId) { return tGoodsMapper.deleteTGoodsById(fId); } @Override public String checkUFNoUnique(TGoods tGoods) { TGoods tGoods1 = tGoodsMapper.checkFNoUnique(tGoods.getfNo()); if (StringUtils.isNotNull(tGoods1) && !tGoods1.getfId().equals(tGoods.getfId())) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkUFNnameUnique(TGoods tGoods) { TGoods tGoods1 = tGoodsMapper.checkUFNnameUnique(tGoods.getfName()); if (StringUtils.isNotNull(tGoods1) && !tGoods1.getfId().equals(tGoods.getfId())) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public List> getGoodName() { return tGoodsMapper.getGoodName(); } @Override public AjaxResult importGoods(MultipartFile file) { ExcelUtil util = new ExcelUtil<>(TGoodsImport.class); try { LoginUser loginUser = SecurityUtils.getLoginUser(); List tCorpsImportList = util.importExcel(file.getInputStream()); if (tCorpsImportList.isEmpty()) { throw new RuntimeException("导入数据为空"); } for (TGoodsImport item : tCorpsImportList) { TGoods goods = new TGoods(); BeanUtils.copyProperties(item, goods); if (UserConstants.NOT_UNIQUE.equals(this.checkUFNoUnique(goods))) { return AjaxResult.error("新增商品'" + goods.getfNo() + "'失败,编号已存在"); } else if (UserConstants.NOT_UNIQUE.equals(this.checkUFNnameUnique(goods))) { return AjaxResult.error("新增商品'" + goods.getfName() + "'失败,名称已存在"); } SysUser user = loginUser.getUser(); TGoods tGoods1 = tGoodsMapper.checkFNoUnique(goods.getfNo()); if (tGoods1 == null) { goods.setCreateTime(DateUtils.getNowDate()); goods.setCreateBy(SecurityUtils.getUsername()); if (ObjectUtils.isNull(goods.getStockWarning())) { goods.setStockWarning(new BigDecimal(0)); } tGoodsMapper.insertTGoods(goods); } else { goods.setfId(tGoods1.getfId()); goods.setUpdateBy(user.getUserName()); goods.setUpdateTime(new Date()); tGoodsMapper.updateTGoods(goods); } } } catch (Exception e) { e.printStackTrace(); } return AjaxResult.success(); } }