Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/dev' into dev

wfg 10 mesi fa
parent
commit
25aa8d2c74

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/staff/dto/BStaffInformationDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.dto;
+
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 员工信息表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class BStaffInformationDTO extends BStaffInformation {
+	private static final long serialVersionUID = 1L;
+
+}

+ 354 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/staff/entity/BStaffInformation.java

@@ -0,0 +1,354 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 员工信息表实体类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@Data
+@TableName("los_b_staff_information")
+@ApiModel(value = "BStaffInformation对象", description = "员工信息表")
+public class BStaffInformation implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+	/**
+	 * 单据编号
+	 */
+	@ApiModelProperty(value = "单据编号")
+	private String billNo;
+	/**
+	 * 岗位类型
+	 */
+	@ApiModelProperty(value = "岗位类型")
+	private String positionType;
+	/**
+	 * 核算部门
+	 */
+	@ApiModelProperty(value = "核算部门")
+	private Long accountingDepartmentId;
+	/**
+	 * 核算部门
+	 */
+	@ApiModelProperty(value = "核算部门")
+	private String accountingDepartmentName;
+	/**
+	 * 员工编号
+	 */
+	@ApiModelProperty(value = "员工编号")
+	private String staffNo;
+	/**
+	 * 姓名
+	 */
+	@ApiModelProperty(value = "姓名")
+	private String cname;
+	/**
+	 * 英文名字
+	 */
+	@ApiModelProperty(value = "英文名字")
+	private String ename;
+	/**
+	 * 性别
+	 */
+	@ApiModelProperty(value = "性别")
+	private String gender;
+	/**
+	 * 行政部门
+	 */
+	@ApiModelProperty(value = "行政部门")
+	private Long administrativeDepartmentId;
+	/**
+	 * 行政部门
+	 */
+	@ApiModelProperty(value = "行政部门")
+	private String administrativeDepartmentName;
+	/**
+	 * 职务
+	 */
+	@ApiModelProperty(value = "职务")
+	private String position;
+	/**
+	 * 婚否
+	 */
+	@ApiModelProperty(value = "婚否")
+	private String maritalStatus;
+	/**
+	 * 办公地点
+	 */
+	@ApiModelProperty(value = "办公地点")
+	private String officeLocation;
+	/**
+	 * 学历
+	 */
+	@ApiModelProperty(value = "学历")
+	private String educationalBackground;
+	/**
+	 * 专业
+	 */
+	@ApiModelProperty(value = "专业")
+	private String major;
+	/**
+	 * 是否在档
+	 */
+	@ApiModelProperty(value = "是否在档")
+	private String whetherOnFile;
+	/**
+	 * 毕业院校
+	 */
+	@ApiModelProperty(value = "毕业院校")
+	private String almaMater;
+	/**
+	 * 语言类别
+	 */
+	@ApiModelProperty(value = "语言类别")
+	private String languageCategory;
+	/**
+	 * 语言等级
+	 */
+	@ApiModelProperty(value = "语言等级")
+	private String languageLevel;
+	/**
+	 * 持有证件
+	 */
+	@ApiModelProperty(value = "持有证件")
+	private String holdCertificate;
+	/**
+	 * 进公司时间
+	 */
+	@ApiModelProperty(value = "进公司时间")
+	private Date advanceCompanyDate;
+	/**
+	 * 进公司时间
+	 */
+	@TableField(exist = false)
+	private List<String> advanceCompanyDateList;
+	/**
+	 * 合同期限开始
+	 */
+	@ApiModelProperty(value = "合同期限开始")
+	private Date contractPeriodStart;
+	/**
+	 * 合同期限结束
+	 */
+	@ApiModelProperty(value = "合同期限结束")
+	private Date contractPeriodEnd;
+	/**
+	 * 是否无期限合同
+	 */
+	@ApiModelProperty(value = "是否无期限合同")
+	private String whetherIndefinitelyContract;
+	/**
+	 * 是否在职
+	 */
+	@ApiModelProperty(value = "是否在职")
+	private String whetherEmployedOrNot;
+	/**
+	 * 社保编号
+	 */
+	@ApiModelProperty(value = "社保编号")
+	private String socialSecurityNo;
+	/**
+	 * 公积金
+	 */
+	@ApiModelProperty(value = "公积金")
+	private BigDecimal providentFund;
+	/**
+	 * 社保基数等级
+	 */
+	@ApiModelProperty(value = "社保基数等级")
+	private String socialSecurityBaseLevel;
+	/**
+	 * 公积金等级
+	 */
+	@ApiModelProperty(value = "公积金等级")
+	private String providentFundLevel;
+	/**
+	 * 是否农民工
+	 */
+	@ApiModelProperty(value = "是否农民工")
+	private String whetherMigrantWorkers;
+	/**
+	 * 离职日期
+	 */
+	@ApiModelProperty(value = "离职日期")
+	private Date terminationDate;
+	/**
+	 * 离职日期
+	 */
+	@TableField(exist = false)
+	private List<String> terminationDateList;
+	/**
+	 * 最后工作日
+	 */
+	@ApiModelProperty(value = "最后工作日")
+	private Date lastWorkingDay;
+	/**
+	 * 参加工作时间
+	 */
+	@ApiModelProperty(value = "参加工作时间")
+	private Date participateInWorkDate;
+	/**
+	 * 年假应休天数
+	 */
+	@ApiModelProperty(value = "年假应休天数")
+	private Integer annualLeaveDays;
+	/**
+	 * 出生日期
+	 */
+	@ApiModelProperty(value = "出生日期")
+	private Date dateOfBirth;
+	/**
+	 * 出生日期
+	 */
+	@TableField(exist = false)
+	private List<String> dateOfBirthList;
+	/**
+	 * 身份证号
+	 */
+	@ApiModelProperty(value = "身份证号")
+	private String idNumber;
+	/**
+	 * 民族
+	 */
+	@ApiModelProperty(value = "民族")
+	private String nationality;
+	/**
+	 * 政治面貌
+	 */
+	@ApiModelProperty(value = "政治面貌")
+	private String politicalStatus;
+	/**
+	 * 籍贯
+	 */
+	@ApiModelProperty(value = "籍贯")
+	private String nativePlace;
+	/**
+	 * 身高
+	 */
+	@ApiModelProperty(value = "身高")
+	private BigDecimal height;
+	/**
+	 * 户口所在地
+	 */
+	@ApiModelProperty(value = "户口所在地")
+	private String permanentResidence;
+	/**
+	 * 体重
+	 */
+	@ApiModelProperty(value = "体重")
+	private BigDecimal weight;
+	/**
+	 * 健康状况
+	 */
+	@ApiModelProperty(value = "健康状况")
+	private String healthStatus;
+	/**
+	 * 家庭住址
+	 */
+	@ApiModelProperty(value = "家庭住址")
+	private String homeAddress;
+	/**
+	 * 家庭电话
+	 */
+	@ApiModelProperty(value = "家庭电话")
+	private String homePhone;
+	/**
+	 * 手机电话
+	 */
+	@ApiModelProperty(value = "手机电话")
+	private String tel;
+
+	/**
+	 * 编码生成code
+	 */
+	@TableField(exist = false)
+	private String billNoFormat;
+
+	/**
+	 * 业务类型表 code
+	 */
+	@TableField(exist = false)
+	private String businessTypeCode;
+
+	/**
+	 * 年龄
+	 */
+	@TableField(exist = false)
+	private Integer age;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/staff/vo/BStaffInformationVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.vo;
+
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 员工信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "BStaffInformationVO对象", description = "员工信息表")
+public class BStaffInformationVO extends BStaffInformation {
+	private static final long serialVersionUID = 1L;
+
+}

+ 263 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/staff/controller/BStaffInformationController.java

@@ -0,0 +1,263 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import org.springblade.los.basic.staff.service.IBStaffInformationService;
+import org.springblade.los.basic.staff.vo.BStaffInformationVO;
+import org.springblade.los.excel.StaffInformationExcel;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.List;
+
+/**
+ * 员工信息表 控制器
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/bstaffinformation")
+@Api(value = "员工信息表", tags = "员工信息表接口")
+public class BStaffInformationController extends BladeController {
+
+	private final IBStaffInformationService bStaffInformationService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入bStaffInformation")
+	public R<BStaffInformation> detail(BStaffInformation bStaffInformation) {
+		BStaffInformation detail = bStaffInformationService.getOne(Condition.getQueryWrapper(bStaffInformation));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 员工信息表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入bStaffInformation")
+	public R<IPage<BStaffInformation>> list(BStaffInformation bStaffInformation, Query query) {
+		LambdaQueryWrapper<BStaffInformation> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BStaffInformation::getTenantId, AuthUtil.getTenantId())
+			.eq(BStaffInformation::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(bStaffInformation.getBillNo()), BStaffInformation::getBillNo, bStaffInformation.getBillNo())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPositionType()), BStaffInformation::getPositionType, bStaffInformation.getPositionType())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getAccountingDepartmentId()), BStaffInformation::getAccountingDepartmentId, bStaffInformation.getAccountingDepartmentId())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getAccountingDepartmentName()), BStaffInformation::getAccountingDepartmentName, bStaffInformation.getAccountingDepartmentName())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getStaffNo()), BStaffInformation::getStaffNo, bStaffInformation.getStaffNo())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getCname()), BStaffInformation::getCname, bStaffInformation.getCname())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getEname()), BStaffInformation::getEname, bStaffInformation.getEname())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getGender()), BStaffInformation::getGender, bStaffInformation.getGender())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getAdministrativeDepartmentId()), BStaffInformation::getAdministrativeDepartmentId, bStaffInformation.getAdministrativeDepartmentId())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getAdministrativeDepartmentName()), BStaffInformation::getAdministrativeDepartmentName, bStaffInformation.getAdministrativeDepartmentName())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPosition()), BStaffInformation::getPosition, bStaffInformation.getPosition())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getMaritalStatus()), BStaffInformation::getMaritalStatus, bStaffInformation.getMaritalStatus())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getOfficeLocation()), BStaffInformation::getOfficeLocation, bStaffInformation.getOfficeLocation())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getEducationalBackground()), BStaffInformation::getEducationalBackground, bStaffInformation.getEducationalBackground())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getMajor()), BStaffInformation::getMajor, bStaffInformation.getMajor())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherOnFile()), BStaffInformation::getWhetherOnFile, bStaffInformation.getWhetherOnFile())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getLanguageCategory()), BStaffInformation::getLanguageCategory, bStaffInformation.getLanguageCategory())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getLanguageLevel()), BStaffInformation::getLanguageLevel, bStaffInformation.getLanguageLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherIndefinitelyContract()), BStaffInformation::getWhetherIndefinitelyContract, bStaffInformation.getWhetherIndefinitelyContract())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getSocialSecurityNo()), BStaffInformation::getSocialSecurityNo, bStaffInformation.getSocialSecurityNo())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getSocialSecurityBaseLevel()), BStaffInformation::getSocialSecurityBaseLevel, bStaffInformation.getSocialSecurityBaseLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getProvidentFundLevel()), BStaffInformation::getProvidentFundLevel, bStaffInformation.getProvidentFundLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherMigrantWorkers()), BStaffInformation::getWhetherMigrantWorkers, bStaffInformation.getWhetherMigrantWorkers())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getNationality()), BStaffInformation::getNationality, bStaffInformation.getNationality())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPoliticalStatus()), BStaffInformation::getPoliticalStatus, bStaffInformation.getPoliticalStatus())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getIdNumber()), BStaffInformation::getIdNumber, bStaffInformation.getIdNumber())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getTel()), BStaffInformation::getTel, bStaffInformation.getTel())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getEname()), BStaffInformation::getEname, bStaffInformation.getEname())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherEmployedOrNot()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+			.ge(ObjectUtils.isNotNull(bStaffInformation.getContractPeriodStart()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+			.le(ObjectUtils.isNotNull(bStaffInformation.getContractPeriodEnd()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+		;
+		if (ObjectUtils.isNotNull(bStaffInformation.getAdvanceCompanyDateList()) && !bStaffInformation.getAdvanceCompanyDateList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getAdvanceCompanyDate, bStaffInformation.getAdvanceCompanyDateList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getAdvanceCompanyDate, bStaffInformation.getAdvanceCompanyDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bStaffInformation.getTerminationDateList()) && !bStaffInformation.getTerminationDateList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getTerminationDate, bStaffInformation.getTerminationDateList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getTerminationDate, bStaffInformation.getTerminationDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bStaffInformation.getDateOfBirthList()) && !bStaffInformation.getDateOfBirthList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getDateOfBirth, bStaffInformation.getDateOfBirthList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getDateOfBirth, bStaffInformation.getDateOfBirthList().get(1));
+		}
+		IPage<BStaffInformation> pages = bStaffInformationService.page(Condition.getPage(query), lambdaQueryWrapper);
+		LocalDate date = LocalDate.now();
+		for (BStaffInformation item : pages.getRecords()) {
+			if (ObjectUtils.isNotNull(item.getDateOfBirth())) {
+				java.time.Instant instant = item.getDateOfBirth().toInstant();
+				Period period = Period.between(instant.atZone(ZoneId.systemDefault()).toLocalDate(),date);
+				int year = period.getYears();
+				item.setAge(year);
+			}
+		}
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 员工信息表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入bStaffInformation")
+	public R<IPage<BStaffInformationVO>> page(BStaffInformationVO bStaffInformation, Query query) {
+		IPage<BStaffInformationVO> pages = bStaffInformationService.selectBStaffInformationPage(Condition.getPage(query), bStaffInformation);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 员工信息表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入bStaffInformation")
+	public R save(@Valid @RequestBody BStaffInformation bStaffInformation) {
+		return R.status(bStaffInformationService.save(bStaffInformation));
+	}
+
+	/**
+	 * 修改 员工信息表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入bStaffInformation")
+	public R update(@Valid @RequestBody BStaffInformation bStaffInformation) {
+		return R.status(bStaffInformationService.updateById(bStaffInformation));
+	}
+
+	/**
+	 * 新增或修改 员工信息表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入bStaffInformation")
+	public R submit(@Valid @RequestBody BStaffInformation bStaffInformation) {
+		return bStaffInformationService.submit(bStaffInformation);
+	}
+
+
+	/**
+	 * 删除 员工信息表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(bStaffInformationService.removeByIds(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 导出 员工信息
+	 */
+	@GetMapping("/exportStaff")
+	public void exportBPorts(BStaffInformation bStaffInformation, HttpServletResponse response) {
+		LambdaQueryWrapper<BStaffInformation> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(BStaffInformation::getTenantId, AuthUtil.getTenantId())
+			.eq(BStaffInformation::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(bStaffInformation.getBillNo()), BStaffInformation::getBillNo, bStaffInformation.getBillNo())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPositionType()), BStaffInformation::getPositionType, bStaffInformation.getPositionType())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getAccountingDepartmentId()), BStaffInformation::getAccountingDepartmentId, bStaffInformation.getAccountingDepartmentId())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getAccountingDepartmentName()), BStaffInformation::getAccountingDepartmentName, bStaffInformation.getAccountingDepartmentName())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getStaffNo()), BStaffInformation::getStaffNo, bStaffInformation.getStaffNo())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getCname()), BStaffInformation::getCname, bStaffInformation.getCname())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getEname()), BStaffInformation::getEname, bStaffInformation.getEname())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getGender()), BStaffInformation::getGender, bStaffInformation.getGender())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getAdministrativeDepartmentId()), BStaffInformation::getAdministrativeDepartmentId, bStaffInformation.getAdministrativeDepartmentId())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getAdministrativeDepartmentName()), BStaffInformation::getAdministrativeDepartmentName, bStaffInformation.getAdministrativeDepartmentName())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPosition()), BStaffInformation::getPosition, bStaffInformation.getPosition())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getMaritalStatus()), BStaffInformation::getMaritalStatus, bStaffInformation.getMaritalStatus())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getOfficeLocation()), BStaffInformation::getOfficeLocation, bStaffInformation.getOfficeLocation())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getEducationalBackground()), BStaffInformation::getEducationalBackground, bStaffInformation.getEducationalBackground())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getMajor()), BStaffInformation::getMajor, bStaffInformation.getMajor())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherOnFile()), BStaffInformation::getWhetherOnFile, bStaffInformation.getWhetherOnFile())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getLanguageCategory()), BStaffInformation::getLanguageCategory, bStaffInformation.getLanguageCategory())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getLanguageLevel()), BStaffInformation::getLanguageLevel, bStaffInformation.getLanguageLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherIndefinitelyContract()), BStaffInformation::getWhetherIndefinitelyContract, bStaffInformation.getWhetherIndefinitelyContract())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getSocialSecurityNo()), BStaffInformation::getSocialSecurityNo, bStaffInformation.getSocialSecurityNo())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getSocialSecurityBaseLevel()), BStaffInformation::getSocialSecurityBaseLevel, bStaffInformation.getSocialSecurityBaseLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getProvidentFundLevel()), BStaffInformation::getProvidentFundLevel, bStaffInformation.getProvidentFundLevel())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherMigrantWorkers()), BStaffInformation::getWhetherMigrantWorkers, bStaffInformation.getWhetherMigrantWorkers())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getNationality()), BStaffInformation::getNationality, bStaffInformation.getNationality())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getPoliticalStatus()), BStaffInformation::getPoliticalStatus, bStaffInformation.getPoliticalStatus())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getIdNumber()), BStaffInformation::getIdNumber, bStaffInformation.getIdNumber())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getTel()), BStaffInformation::getTel, bStaffInformation.getTel())
+			.like(ObjectUtils.isNotNull(bStaffInformation.getEname()), BStaffInformation::getEname, bStaffInformation.getEname())
+			.eq(ObjectUtils.isNotNull(bStaffInformation.getWhetherEmployedOrNot()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+			.ge(ObjectUtils.isNotNull(bStaffInformation.getContractPeriodStart()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+			.le(ObjectUtils.isNotNull(bStaffInformation.getContractPeriodEnd()), BStaffInformation::getWhetherEmployedOrNot, bStaffInformation.getWhetherEmployedOrNot())
+		;
+		if (ObjectUtils.isNotNull(bStaffInformation.getAdvanceCompanyDateList()) && !bStaffInformation.getAdvanceCompanyDateList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getAdvanceCompanyDate, bStaffInformation.getAdvanceCompanyDateList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getAdvanceCompanyDate, bStaffInformation.getAdvanceCompanyDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bStaffInformation.getTerminationDateList()) && !bStaffInformation.getTerminationDateList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getTerminationDate, bStaffInformation.getTerminationDateList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getTerminationDate, bStaffInformation.getTerminationDateList().get(1));
+		}
+		if (ObjectUtils.isNotNull(bStaffInformation.getDateOfBirthList()) && !bStaffInformation.getDateOfBirthList().isEmpty()) {
+			lambdaQueryWrapper.ge(BStaffInformation::getDateOfBirth, bStaffInformation.getDateOfBirthList().get(0));
+			lambdaQueryWrapper.le(BStaffInformation::getDateOfBirth, bStaffInformation.getDateOfBirthList().get(1));
+		}
+		List<BStaffInformation> bPortsList = bStaffInformationService.list(lambdaQueryWrapper);
+		LocalDate date = LocalDate.now();
+		for (BStaffInformation item : bPortsList) {
+			if (ObjectUtils.isNotNull(item.getDateOfBirth())) {
+				java.time.Instant instant = item.getDateOfBirth().toInstant();
+				Period period = Period.between(instant.atZone(ZoneId.systemDefault()).toLocalDate(),date);
+				int year = period.getYears();
+				item.setAge(year);
+			}
+		}
+		if ("1".equals(bStaffInformation.getWhetherEmployedOrNot())){
+			ExcelUtil.export(response, "在职员工信息", "在职员工信息", BeanUtil.copy(bPortsList, StaffInformationExcel.class), StaffInformationExcel.class);
+		}else{
+			ExcelUtil.export(response, "离职员工信息", "离职员工信息", BeanUtil.copy(bPortsList, StaffInformationExcel.class), StaffInformationExcel.class);
+		}
+
+	}
+
+
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/staff/mapper/BStaffInformationMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.mapper;
+
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import org.springblade.los.basic.staff.vo.BStaffInformationVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 员工信息表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+public interface BStaffInformationMapper extends BaseMapper<BStaffInformation> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param bStaffInformation
+	 * @return
+	 */
+	List<BStaffInformationVO> selectBStaffInformationPage(IPage page, BStaffInformationVO bStaffInformation);
+
+}

+ 69 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/staff/mapper/BStaffInformationMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.basic.staff.mapper.BStaffInformationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="bStaffInformationResultMap" type="org.springblade.los.basic.staff.entity.BStaffInformation">
+        <id column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+        <result column="bill_no" property="billNo"/>
+        <result column="position_type" property="positionType"/>
+        <result column="accounting_department_id" property="accountingDepartmentId"/>
+        <result column="accounting_department_name" property="accountingDepartmentName"/>
+        <result column="staff_no" property="staffNo"/>
+        <result column="cname" property="cname"/>
+        <result column="ename" property="ename"/>
+        <result column="gender" property="gender"/>
+        <result column="administrative_department_id" property="administrativeDepartmentId"/>
+        <result column="administrative_department_name" property="administrativeDepartmentName"/>
+        <result column="position" property="position"/>
+        <result column="marital_status" property="maritalStatus"/>
+        <result column="office_location" property="officeLocation"/>
+        <result column="educational_background" property="educationalBackground"/>
+        <result column="major" property="major"/>
+        <result column="whether_on_file" property="whetherOnFile"/>
+        <result column="alma_mater" property="almaMater"/>
+        <result column="language_category" property="languageCategory"/>
+        <result column="language_level" property="languageLevel"/>
+        <result column="hold_certificate" property="holdCertificate"/>
+        <result column="advance_company_date" property="advanceCompanyDate"/>
+        <result column="contract_period_start" property="contractPeriodStart"/>
+        <result column="contract_period_end" property="contractPeriodEnd"/>
+        <result column="whether_indefinitely_contract" property="whetherIndefinitelyContract"/>
+        <result column="whether_employed_or_not" property="whetherEmployedOrNot"/>
+        <result column="social_security_no" property="socialSecurityNo"/>
+        <result column="provident_fund" property="providentFund"/>
+        <result column="social_security_base_level" property="socialSecurityBaseLevel"/>
+        <result column="provident_fund_level" property="providentFundLevel"/>
+        <result column="whether_migrant_workers" property="whetherMigrantWorkers"/>
+        <result column="termination_date" property="terminationDate"/>
+        <result column="last_working_day" property="lastWorkingDay"/>
+        <result column="participate_in_work_date" property="participateInWorkDate"/>
+        <result column="annual_leave_days" property="annualLeaveDays"/>
+        <result column="date_of_birth" property="dateOfBirth"/>
+        <result column="id_number" property="idNumber"/>
+        <result column="nationality" property="nationality"/>
+        <result column="political_status" property="politicalStatus"/>
+        <result column="native_place" property="nativePlace"/>
+        <result column="height" property="height"/>
+        <result column="permanent_residence" property="permanentResidence"/>
+        <result column="weight" property="weight"/>
+        <result column="health_status" property="healthStatus"/>
+        <result column="home_address" property="homeAddress"/>
+        <result column="home_phone" property="homePhone"/>
+        <result column="tel" property="tel"/>
+    </resultMap>
+
+
+    <select id="selectBStaffInformationPage" resultMap="bStaffInformationResultMap">
+        select * from los_b_staff_information where is_deleted = 0
+    </select>
+
+</mapper>

+ 43 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/staff/service/IBStaffInformationService.java

@@ -0,0 +1,43 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import org.springblade.los.basic.staff.vo.BStaffInformationVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 员工信息表 服务类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+public interface IBStaffInformationService extends IService<BStaffInformation> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param bStaffInformation
+	 * @return
+	 */
+	IPage<BStaffInformationVO> selectBStaffInformationPage(IPage<BStaffInformationVO> page, BStaffInformationVO bStaffInformation);
+
+	R submit(BStaffInformation bStaffInformation);
+}

+ 107 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/staff/service/impl/BStaffInformationServiceImpl.java

@@ -0,0 +1,107 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.los.Util.IDeptUtils;
+import org.springblade.los.basic.business.entity.BusinessType;
+import org.springblade.los.basic.business.service.IBusinessTypeService;
+import org.springblade.los.basic.staff.entity.BStaffInformation;
+import org.springblade.los.basic.staff.mapper.BStaffInformationMapper;
+import org.springblade.los.basic.staff.service.IBStaffInformationService;
+import org.springblade.los.basic.staff.vo.BStaffInformationVO;
+import org.springblade.los.billno.entity.BusinessBillNo;
+import org.springblade.los.billno.service.IBusinessBillNoService;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.util.Date;
+
+/**
+ * 员工信息表 服务实现类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@Service
+@AllArgsConstructor
+public class BStaffInformationServiceImpl extends ServiceImpl<BStaffInformationMapper, BStaffInformation> implements IBStaffInformationService {
+
+	private final ISysClient sysClient;
+
+	private final IDeptUtils deptUtils;
+
+	private final IBusinessTypeService bBusinessTypeService;
+
+	private final IBusinessBillNoService businessBillNoService;
+
+	@Override
+	public IPage<BStaffInformationVO> selectBStaffInformationPage(IPage<BStaffInformationVO> page, BStaffInformationVO bStaffInformation) {
+		return page.setRecords(baseMapper.selectBStaffInformationPage(page, bStaffInformation));
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submit(BStaffInformation bStaffInformation) {
+		BStaffInformation detail = baseMapper.selectOne(new LambdaQueryWrapper<BStaffInformation>()
+			.eq(BStaffInformation::getIdNumber, bStaffInformation.getIdNumber())
+			.eq(BStaffInformation::getTenantId, AuthUtil.getTenantId())
+			.eq(BStaffInformation::getIsDeleted, 0));
+		if (bStaffInformation.getId() == null) {
+			if (detail != null){
+				throw new RuntimeException("职员已存在,请勿重复添加");
+			}
+			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
+				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
+				.eq(BusinessType::getIsDeleted, 0)
+				.eq(BusinessType::getStatus, 0)
+				.eq(BusinessType::getCode, bStaffInformation.getBusinessTypeCode()));
+			if (businessType == null) {
+				throw new RuntimeException("未找到可用业务类型");
+			}
+			BusinessBillNo businessBillNo = new BusinessBillNo();
+			businessBillNo.setBusinessTypeId(businessType.getId());
+			businessBillNo.setCode(bStaffInformation.getBillNoFormat());
+			R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
+			if (!clientBillNo.isSuccess()) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				return R.fail(500, "生成订单编号失败");
+			}
+			bStaffInformation.setBillNo((String) clientBillNo.getData());
+			bStaffInformation.setCreateTime(new Date());
+			bStaffInformation.setCreateUser(AuthUtil.getUserId());
+			bStaffInformation.setCreateUserName(AuthUtil.getUserName());
+		} else {
+			if (detail != null && !detail.getId().equals(bStaffInformation.getId())){
+				throw new RuntimeException("职员已存在,请勿重复添加");
+			}
+			bStaffInformation.setUpdateUser(AuthUtil.getUserId());
+			bStaffInformation.setUpdateTime(new Date());
+			bStaffInformation.setUpdateUserName(AuthUtil.getUserName());
+		}
+		this.saveOrUpdate(bStaffInformation);
+		return R.data(bStaffInformation);
+	}
+
+}

+ 151 - 0
blade-service/blade-los/src/main/java/org/springblade/los/excel/StaffInformationExcel.java

@@ -0,0 +1,151 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 员工信息表实体类
+ *
+ * @author BladeX
+ * @since 2025-02-26
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class StaffInformationExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 单据编号
+	 */
+	@ExcelProperty(value = "单据编号")
+	private String billNo;
+	/**
+	 * 创建时间
+	 */
+	@ExcelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 员工编号
+	 */
+	@ExcelProperty(value = "员工编号")
+	private String staffNo;
+	/**
+	 * 姓名
+	 */
+	@ExcelProperty(value = "姓名")
+	private String cname;
+	/**
+	 * 就职日期
+	 */
+	@ExcelProperty(value = "就职日期")
+	private Date advanceCompanyDate;
+	/**
+	 * 性别
+	 */
+	@ExcelProperty(value = "性别")
+	private String gender;
+	/**
+	 * 年龄
+	 */
+	@ExcelProperty(value = "年龄")
+	private Integer age;
+	/**
+	 * 出生日期
+	 */
+	@ExcelProperty(value = "出生日期")
+	private Date dateOfBirth;
+	/**
+	 * 身份证号
+	 */
+	@ExcelProperty(value = "身份证号")
+	private String idNumber;
+	/**
+	 * 学历
+	 */
+	@ExcelProperty(value = "学历")
+	private String educationalBackground;
+	/**
+	 * 专业
+	 */
+	@ExcelProperty(value = "专业")
+	private String major;
+	/**
+	 * 职务
+	 */
+	@ExcelProperty(value = "职务")
+	private String positionType;
+	/**
+	 * 家庭住址
+	 */
+	@ExcelProperty(value = "家庭住址")
+	private String homeAddress;
+	/**
+	 * 家庭电话
+	 */
+	@ExcelProperty(value = "家庭电话")
+	private String homePhone;
+	/**
+	 * 民族
+	 */
+	@ExcelProperty(value = "民族")
+	private String nationality;
+	/**
+	 * 政治面貌
+	 */
+	@ExcelProperty(value = "政治面貌")
+	private String politicalStatus;
+	/**
+	 * 社保编号
+	 */
+	@ExcelProperty(value = "社保编号")
+	private String socialSecurityNo;
+	/**
+	 * 合同期限开始
+	 */
+	@ExcelProperty(value = "合同期限开始")
+	private Date contractPeriodStart;
+	/**
+	 * 合同期限结束
+	 */
+	@ExcelProperty(value = "合同期限结束")
+	private Date contractPeriodEnd;
+	/**
+	 * 参加工作时间
+	 */
+	@ExcelProperty(value = "参加工作时间")
+	private Date participateInWorkDate;
+	/**
+	 * 行政部门
+	 */
+	@ExcelProperty(value = "行政部门")
+	private String administrativeDepartmentName;
+
+
+}

+ 7 - 7
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -324,13 +324,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 							continue;
 						}
 						feeCenter.setQuantity(new BigDecimal(quantity + ""));
-						feeCenter.setAmount(items.getPrice().multiply(feeCenter.getQuantity()));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
 					} else if ("2".equals(items.getQuantityRule())) {
 						feeCenter.setQuantity(new BigDecimal("1"));
-						feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(new BigDecimal("1")));
 					} else if ("3".equals(items.getQuantityRule())) {
 						feeCenter.setQuantity(bills.getGrossWeight());
-						feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
 					} else if ("4".equals(items.getQuantityRule())) {
 						if (preContainers.isEmpty()) {
 							text += "费用:" + items.getFeeCnName() + "未找到集装箱信息!";
@@ -344,15 +344,15 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 							continue;
 						}
 						feeCenter.setQuantity(new BigDecimal(quantity + ""));
-						feeCenter.setAmount(items.getPrice().multiply(feeCenter.getQuantity()));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
 					} else if ("5".equals(items.getQuantityRule())) {
 						feeCenter.setQuantity(bills.getMeasurement());
-						feeCenter.setAmount(items.getPrice().multiply(bills.getMeasurement()));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
 					} else {
 						feeCenter.setQuantity(new BigDecimal("1"));
-						feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
+						feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
 					}
-					if (ObjectUtils.isNotNull(feeCenter.getAmount())){
+					if (ObjectUtils.isNull(feeCenter.getAmount())){
 						feeCenter.setAmount(new BigDecimal("0"));
 					}
 					list.add(feeCenter);

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -722,6 +722,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order.getId() == null || ObjectUtils.isNotNull(order.getCustomerId())) {
 			throw new RuntimeException("缺少必要参数");
 		}
+		order.setUpdateTime(new Date());
+		order.setUpdateUser(AuthUtil.getUserId());
 		/*PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
 		if (corpsDesc == null) {
 			throw new RuntimeException("未查到客户信息");