package com.ruoyi.basicData.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ruoyi.basicData.domain.TWarehouse; import com.ruoyi.basicData.domain.TWarehouseArea; import com.ruoyi.basicData.mapper.TWarehouseAreaMapper; import com.ruoyi.basicData.mapper.TWarehouseMapper; import com.ruoyi.basicData.service.ITWarehouseService; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.warehouseBusiness.domain.TWarehouseBills; import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper; 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 java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 仓库Service业务层处理 * * @author ruoyi * @date 2020-12-11 */ @Service public class TWarehouseServiceImpl implements ITWarehouseService { @Autowired private TWarehouseMapper tWarehouseMapper; @Autowired private TWarehouseAreaMapper tWarehouseAreaMapper; @Autowired private TWarehouseBillsMapper tWarehouseBillsMapper; /** * 查询仓库 * * @param fId 仓库ID * @return 仓库 */ @Override public TWarehouse selectTWarehouseById(Long fId) { return tWarehouseMapper.selectTWarehouseById(fId); } @Override public Map selectTWarehouseById1(Long fId) { Map map = new HashMap<>(); TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(fId); if (StringUtils.isNotNull(tWarehouse)) { map.put("tWarehouse", tWarehouse); } TWarehouseArea tWarehouseArea= new TWarehouseArea(); tWarehouseArea.setfWarehouseid(fId); List tWarehouseAreaList =tWarehouseAreaMapper.selectTWarehouseAreaList(tWarehouseArea); if (StringUtils.isNotEmpty(tWarehouseAreaList)) { map.put("tWarehouseArea", tWarehouseAreaList); } return map; } /** * 查询仓库列表 * * @param tWarehouse 仓库 * @return 仓库 */ @Override public List selectTWarehouseList(TWarehouse tWarehouse) { return tWarehouseMapper.selectTWarehouseList(tWarehouse); } /** * 新增仓库 * * @param tWarehouse 仓库 * @return 结果 */ @Override @Transactional public int insertTWarehouse(TWarehouse tWarehouse) { tWarehouse.setCreateTime(DateUtils.getNowDate()); return tWarehouseMapper.insertTWarehouse(tWarehouse); } @Override @Transactional public AjaxResult insertTWarehouse1(String tWarehouse, String tWarehouseArea, LoginUser loginUser) { if (StringUtils.isEmpty(tWarehouse)) { return AjaxResult.error("提交失败:仓库信息为空"); } if ( StringUtils.isEmpty(tWarehouseArea) && !"[{}]".equals(tWarehouseArea) ) { return AjaxResult.error("提交失败:库区为空"); } Long fPid = null; TWarehouse tWarehouses = JSONArray.parseObject(tWarehouse, TWarehouse.class); JSONArray jsonArray = JSONArray.parseArray(tWarehouseArea); List tWarehouseAreaList = JSONObject.parseArray(jsonArray.toJSONString(), TWarehouseArea.class); if (StringUtils.isNull(tWarehouses.getfId())) { tWarehouses.setCreateBy(loginUser.getUser().getUserName()); tWarehouses.setCreateTime(new Date()); tWarehouses.setfStatus("0"); tWarehouseMapper.insertTWarehouse(tWarehouses); fPid=tWarehouses.getfId(); } else { fPid=tWarehouses.getfId(); tWarehouses.setUpdateBy(loginUser.getUser().getUserName()); tWarehouses.setUpdateTime(new Date()); if(tWarehouses.getfStatus()!=null && tWarehouses.getfStatus().equals("1") ){ TWarehouseBills tWarehouseBill =new TWarehouseBills(); tWarehouseBill.setfWarehouseid(tWarehouses.getfId()); List tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill); if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){ return AjaxResult.error("仓库在库存总账有记录不可变更状态"); } } tWarehouseMapper.updateTWarehouse(tWarehouses); // tWarehouseAreaMapper.deleteTWarehouseAreaByTWarehoused(fPid); } for (TWarehouseArea cc : tWarehouseAreaList) { if( StringUtils.isNull(cc.getfNo()) || StringUtils.isNull(cc.getfName()) || StringUtils.isNull(cc.getfAddr()) ){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("请完善库区明细信息"); } if(cc.getfId()!=null){ cc.setUpdateBy(loginUser.getUser().getUserName()); cc.setUpdateTime(new Date()); tWarehouseAreaMapper.updateTWarehouseArea(cc); } else { cc.setfWarehouseid(fPid); cc.setfStatus("0"); cc.setCreateBy(loginUser.getUser().getUserName()); cc.setCreateTime(new Date()); tWarehouseAreaMapper.insertTWarehouseArea(cc); } } return AjaxResult.success(); } /** * 修改仓库 * * @param tWarehouse 仓库 * @return 结果 */ @Override @Transactional public AjaxResult updateTWarehouse(TWarehouse tWarehouse) { if(tWarehouse.getfStatus()!=null && tWarehouse.getfStatus().equals("1") ){ TWarehouseBills tWarehouseBill =new TWarehouseBills(); tWarehouseBill.setfWarehouseid(tWarehouse.getfId()); List tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill); if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){ return AjaxResult.error("仓库在库存总账有记录不可变更状态"); } } tWarehouse.setUpdateTime(DateUtils.getNowDate()); tWarehouseMapper.updateTWarehouse(tWarehouse); return AjaxResult.success(); } /** * 批量删除仓库 * * @param fIds 需要删除的仓库ID * @return 结果 */ @Override @Transactional public AjaxResult deleteTWarehouseByIds(Long[] fIds) { // 查询仓库主表 是否有仓库在使用 int i = 1; for(Long id:fIds){ TWarehouseBills tWarehouseBill =new TWarehouseBills(); tWarehouseBill.setfWarehouseid(id); List tWarehouseBillList=tWarehouseBillsMapper.selectTWarehousebillsList(tWarehouseBill); if(tWarehouseBillList!=null && !tWarehouseBillList.isEmpty()){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("仓库第" + i + "行仓库有货物不可删除"); } tWarehouseMapper.deleteTWarehouseById(id); i++; } // tWarehouseMapper.deleteTWarehouseByIds(fIds); return AjaxResult.success(); } /** * 删除仓库信息 * * @param fId 仓库ID * @return 结果 */ @Override @Transactional public int deleteTWarehouseById(Long fId) { return tWarehouseMapper.deleteTWarehouseById(fId); } @Override public String checkUFNoUnique(TWarehouse tWarehouse) { TWarehouse tWarehouse1 = tWarehouseMapper.checkFNoUnique(tWarehouse.getfNo()); if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId()!=tWarehouse.getfId()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkUFNnameUnique(TWarehouse tWarehouse) { TWarehouse tWarehouse1 = tWarehouseMapper.checkUFNnameUnique(tWarehouse.getfName()); if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId()!=tWarehouse.getfId()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkUFAaddrUnique(TWarehouse tWarehouse) { TWarehouse tWarehouse1 = tWarehouseMapper.checkUFAaddrUnique(tWarehouse.getfAddr()); if (StringUtils.isNotNull(tWarehouse1) && tWarehouse1.getfId()!=tWarehouse.getfId()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkUFTWarehouseAreaNoUnique(TWarehouseArea tWarehouseAreas) { TWarehouseArea tWarehouseAreas1 = tWarehouseAreaMapper.checkFNoUnique(tWarehouseAreas.getfNo(),tWarehouseAreas.getfWarehouseid()); if (StringUtils.isNotNull(tWarehouseAreas1) && tWarehouseAreas1.getfId()!=tWarehouseAreas.getfId()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } @Override public String checkUTWarehouseAreaFNnameUnique(TWarehouseArea tWarehouseAreas) { TWarehouseArea tWarehouseAreas1 = tWarehouseAreaMapper.checkUFNnameUnique(tWarehouseAreas.getfName(),tWarehouseAreas.getfWarehouseid()); if (StringUtils.isNotNull(tWarehouseAreas1) && tWarehouseAreas1.getfId()!=tWarehouseAreas.getfId()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } }