|
@@ -7,9 +7,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jeeplus.core.excel.utils.EasyPoiUtil;
|
|
|
+import com.jeeplus.sys.constant.enums.OfficeTypeEnum;
|
|
|
+import com.jeeplus.sys.domain.Office;
|
|
|
+import com.jeeplus.sys.domain.User;
|
|
|
+import com.jeeplus.sys.service.OfficeService;
|
|
|
+import com.jeeplus.sys.service.UserService;
|
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
+import com.jeeplus.sys.utils.DictUtils;
|
|
|
import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
+import com.jeeplus.test.cw.invoice.service.dto.CwFinanceInvoiceDetailDTO;
|
|
|
+import com.jeeplus.test.jobPosion.service.dto.JobPositionDTO;
|
|
|
import com.jeeplus.test.jobPosion.utils.BeanUtils;
|
|
|
import com.jeeplus.test.mould.service.SerialnumTplService;
|
|
|
import com.jeeplus.test.oss.service.OssService;
|
|
@@ -23,10 +32,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.jeeplus.test.jobPosion.utils.BeanUtils.objectCheckIsNull;
|
|
|
+
|
|
|
@Service
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase> {
|
|
@@ -64,6 +77,12 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
@Autowired
|
|
|
private SerialnumTplService serialnumTplService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OfficeService officeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
public IPage<RosterBaseDTO> findList(Page<RosterBaseDTO> page, QueryWrapper<RosterBase> queryWrapper){
|
|
|
queryWrapper.eq("rb.del_flag","0");
|
|
|
IPage<RosterBaseDTO> rosterBaseDTOIPage = rosterBaseMapper.findList(page, queryWrapper);
|
|
@@ -280,4 +299,89 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
}
|
|
|
return ResponseEntity.ok("花名册保存成功");
|
|
|
}
|
|
|
+
|
|
|
+ // 导入花名册excel
|
|
|
+ public ResponseEntity importFile(MultipartFile file) {
|
|
|
+ try {
|
|
|
+ Integer successNum = 0;
|
|
|
+ List<RosterBase> rosterList = new ArrayList<>();
|
|
|
+ // 获取上传文件中的数据
|
|
|
+ List <RosterBaseDTO> list = EasyPoiUtil.importExcel ( file, 1, 1, RosterBaseDTO.class );
|
|
|
+ //去除excel中的空行
|
|
|
+ list = getExcelList(list);
|
|
|
+ for (RosterBaseDTO rosterBaseDTO : list) {
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getName())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有姓名未填写");
|
|
|
+ }
|
|
|
+ // 查询这个人员姓名是否存在,已存在则抛出提示
|
|
|
+ List<RosterBase> rs = this.list(new QueryWrapper<RosterBase>().lambda().eq(RosterBase::getName, rosterBaseDTO.getName()));
|
|
|
+ if (CollectionUtil.isNotEmpty(rs)) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!人员“"+ rosterBaseDTO.getName() +"”已存在");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getOfficeName())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有部门未填写");
|
|
|
+ }
|
|
|
+ // 查询这个部门是否存在于当前系统中,不存在则不进行导入数据操作,抛出提示
|
|
|
+ List<Office> officeList = officeService.list(new QueryWrapper<Office>().lambda().eq(Office::getType, OfficeTypeEnum.OFFICE.getValue()).eq(Office::getName, rosterBaseDTO.getOfficeName()));
|
|
|
+ if (CollectionUtil.isEmpty(officeList)) {
|
|
|
+ return ResponseEntity.badRequest().body("导入花名册失败!文件中含有不存在的部门,请重新填写");
|
|
|
+ }
|
|
|
+ // 部门填写符合要求,将部门名字转换为部门id
|
|
|
+ rosterBaseDTO.setOfficeId(officeList.get(0).getId());
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getCertificatesType())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有证件类型未填写");
|
|
|
+ }
|
|
|
+ // 验证证件类型填写是否符合要求
|
|
|
+ String certificatesType = DictUtils.getDictValue(rosterBaseDTO.getCertificatesType(), "certificates_type","null");
|
|
|
+ if ("null".equals(certificatesType)) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有证件类型填写错误,请重新填写");
|
|
|
+ }
|
|
|
+ // 证件类型转换
|
|
|
+ rosterBaseDTO.setCertificatesType(certificatesType);
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getIdCard())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有证件号未填写");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getMobile())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有电话号码未填写");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(rosterBaseDTO.getWorkerType())) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有员工类型未填写");
|
|
|
+ }
|
|
|
+ // 验证员工类型填写是否符合要求
|
|
|
+ String workerType = DictUtils.getDictValue(rosterBaseDTO.getWorkerType(), "worker_type","null");
|
|
|
+ if ("null".equals(workerType)) {
|
|
|
+ return ResponseEntity.badRequest().body ("导入花名册失败!文件中有员工类型填写错误,请重新填写");
|
|
|
+ }
|
|
|
+ // 员工类型转换
|
|
|
+ rosterBaseDTO.setWorkerType(workerType);
|
|
|
+ // 新增数据
|
|
|
+ RosterBase rosterBase = RosterBaseWrapper.INSTANCE.toEntity(rosterBaseDTO);
|
|
|
+ rosterList.add(rosterBase);
|
|
|
+ successNum++;
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(rosterList)) {
|
|
|
+ this.saveBatch(rosterList);
|
|
|
+ }
|
|
|
+ return ResponseEntity.ok ( "已成功导入 " + successNum + " 条数据" );
|
|
|
+ } catch (Exception e) {
|
|
|
+ return ResponseEntity.badRequest().body ( "导入花名册失败!失败信息:" + e.getMessage ( ) );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 去除excel中的空行
|
|
|
+ * @param list
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ArrayList<RosterBaseDTO> getExcelList(List<RosterBaseDTO> list){
|
|
|
+
|
|
|
+ ArrayList<RosterBaseDTO> rosterBaseDTOS = new ArrayList<>();
|
|
|
+
|
|
|
+ list.stream().forEach(item->{
|
|
|
+ if(objectCheckIsNull(item)){
|
|
|
+ rosterBaseDTOS.add(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return rosterBaseDTOS;
|
|
|
+ }
|
|
|
}
|