合同添加proId修改
This commit is contained in:
parent
aca597c3a0
commit
6899afa3e6
|
|
@ -300,7 +300,7 @@ public class PmWorkerController extends BaseController {
|
||||||
public AjaxResult workerEinImport(@RequestParam(value = "file") MultipartFile file, boolean updateSupport) throws Exception {
|
public AjaxResult workerEinImport(@RequestParam(value = "file") MultipartFile file, boolean updateSupport) throws Exception {
|
||||||
try {
|
try {
|
||||||
ExcelUtil<PmWorker> util = new ExcelUtil<>(PmWorker.class);
|
ExcelUtil<PmWorker> util = new ExcelUtil<>(PmWorker.class);
|
||||||
List<PmWorker> workerList = util.importExcel(file.getInputStream(),1);
|
List<PmWorker> workerList = util.importExcel(file.getInputStream(),3);
|
||||||
boolean allNull = workerList.stream().allMatch(Objects::isNull);
|
boolean allNull = workerList.stream().allMatch(Objects::isNull);
|
||||||
if (allNull) {
|
if (allNull) {
|
||||||
return error("导入文件为空或字段不匹配");
|
return error("导入文件为空或字段不匹配");
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@ public class PmWorker {
|
||||||
/**
|
/**
|
||||||
* 姓名
|
* 姓名
|
||||||
*/
|
*/
|
||||||
@Excel(name = "姓名", sort = 2)
|
@Excel(name = "*姓名", sort = 2)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 身份证
|
* 身份证
|
||||||
*/
|
*/
|
||||||
@Excel(name = "身份证号", sort = 3)
|
@Excel(name = "*身份证号", sort = 3)
|
||||||
private String idNumber;
|
private String idNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,6 +48,7 @@ public class PmWorker {
|
||||||
/**
|
/**
|
||||||
* 手机号
|
* 手机号
|
||||||
*/
|
*/
|
||||||
|
@Excel(name = "手机号码", type = Excel.Type.IMPORT)
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -58,33 +59,33 @@ public class PmWorker {
|
||||||
/**
|
/**
|
||||||
* 民族
|
* 民族
|
||||||
*/
|
*/
|
||||||
@Excel(name = "民族", type = Excel.Type.IMPORT)
|
@Excel(name = "*民族", type = Excel.Type.IMPORT)
|
||||||
private String nation;
|
private String nation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 签发机关
|
* 签发机关
|
||||||
*/
|
*/
|
||||||
@Excel(name = "签发机关", type = Excel.Type.IMPORT)
|
@Excel(name = "*签发机关", type = Excel.Type.IMPORT)
|
||||||
private String issuingAuthority;
|
private String issuingAuthority;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效期开始时间
|
* 有效期开始时间
|
||||||
*/
|
*/
|
||||||
@Excel(name = "生效日期", type = Excel.Type.IMPORT)
|
@Excel(name = "*生效日期", type = Excel.Type.IMPORT)
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有效期结束时间
|
* 有效期结束时间
|
||||||
*/
|
*/
|
||||||
@Excel(name = "失效日期", type = Excel.Type.IMPORT)
|
@Excel(name = "*失效日期", type = Excel.Type.IMPORT)
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date endTime;
|
private Date endTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 家庭住址
|
* 家庭住址
|
||||||
*/
|
*/
|
||||||
@Excel(name = "身份证住址", type = Excel.Type.IMPORT)
|
@Excel(name = "*身份证住址", type = Excel.Type.IMPORT)
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -131,7 +132,7 @@ public class PmWorker {
|
||||||
/**
|
/**
|
||||||
* 岗位名称
|
* 岗位名称
|
||||||
*/
|
*/
|
||||||
@Excel(name = "岗位名称", type = Excel.Type.EXPORT, sort = 4)
|
@Excel(name = "工种", sort = 4)
|
||||||
private String postName;
|
private String postName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -200,4 +201,29 @@ public class PmWorker {
|
||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
|
//导入字段
|
||||||
|
/**
|
||||||
|
* 银行卡号
|
||||||
|
*/
|
||||||
|
@Excel(name = "银行卡号", type = Excel.Type.IMPORT)
|
||||||
|
private String bankCardCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银行名称
|
||||||
|
*/
|
||||||
|
@Excel(name = "银行名称", type = Excel.Type.IMPORT)
|
||||||
|
private String bankName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银行支行名称
|
||||||
|
*/
|
||||||
|
@Excel(name = "银行支行名称", type = Excel.Type.IMPORT)
|
||||||
|
private String bankBranchName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银行联号
|
||||||
|
*/
|
||||||
|
@Excel(name = "银行联号", type = Excel.Type.IMPORT)
|
||||||
|
private String bankIdentifierCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public interface PmWorkerExitMapper {
|
||||||
|
|
||||||
List<PmWorker> selectWorkListByWorkerId(PmWorkerDto o);
|
List<PmWorker> selectWorkListByWorkerId(PmWorkerDto o);
|
||||||
|
|
||||||
List<MapBeanVo> getContractIdAndWageCard(Integer workerId);
|
List<MapBeanVo> getContractIdAndWageCard(@Param("workerId") Integer workerId,@Param("proId") Integer proId);
|
||||||
|
|
||||||
String getIdNumberByWorkerId(Integer workerId);
|
String getIdNumberByWorkerId(Integer workerId);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.bonus.bmw.mapper;
|
package com.bonus.bmw.mapper;
|
||||||
|
|
||||||
import com.bonus.bmw.domain.dto.PmWorkerDto;
|
import com.bonus.bmw.domain.dto.PmWorkerDto;
|
||||||
|
import com.bonus.bmw.domain.po.MapBeanPo;
|
||||||
|
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
|
||||||
import com.bonus.bmw.domain.vo.MapBeanVo;
|
import com.bonus.bmw.domain.vo.MapBeanVo;
|
||||||
import com.bonus.bmw.domain.vo.PmWorker;
|
import com.bonus.bmw.domain.vo.PmWorker;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
@ -150,4 +152,8 @@ public interface PmWorkerMapper {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Integer getContractIdByWorkerId(Integer id);
|
Integer getContractIdByWorkerId(Integer id);
|
||||||
|
|
||||||
|
List<MapBeanPo> getWageCardById(Integer workerId);
|
||||||
|
|
||||||
|
void insertWorkerWageCard(BmWorkerWageCard bmWorkerWageCard);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ public class AppServiceImpl implements AppService {
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult appWorkerExit(PmWorkerDto record) throws Exception {
|
public AjaxResult appWorkerExit(PmWorkerDto record) throws Exception {
|
||||||
//查询合同工资卡是否齐全
|
//查询合同工资卡是否齐全
|
||||||
List<MapBeanVo> list = pmWorkerExitMapper.getContractIdAndWageCard(record.getWorkerId());
|
List<MapBeanVo> list = pmWorkerExitMapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId());
|
||||||
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){
|
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){
|
||||||
//查询是否上海外
|
//查询是否上海外
|
||||||
PmWorkerDto data=pmWorkerExitMapper.getPmWorkInfo(record);
|
PmWorkerDto data=pmWorkerExitMapper.getPmWorkInfo(record);
|
||||||
|
|
|
||||||
|
|
@ -59,11 +59,9 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
|
||||||
//查询是否上海外
|
//查询是否上海外
|
||||||
Boolean isShangHai = mapper.getProLocationByProId(record.getProId());
|
Boolean isShangHai = mapper.getProLocationByProId(record.getProId());
|
||||||
//查询合同工资卡是否齐全
|
//查询合同工资卡是否齐全
|
||||||
List<MapBeanVo> list = mapper.getContractIdAndWageCard(record.getWorkerId());
|
List<MapBeanVo> list = mapper.getContractIdAndWageCard(record.getWorkerId(),record.getProId());
|
||||||
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){
|
if(Integer.parseInt(list.get(0).getValue())>0 && Integer.parseInt(list.get(1).getValue())>0){
|
||||||
|
|
||||||
contractService.deleteByWorkerId(record.getWorkerId(),record.getProId());
|
contractService.deleteByWorkerId(record.getWorkerId(),record.getProId());
|
||||||
|
|
||||||
//查询是不是上海内最后一个在场工程(一定要放在删除实时在场前查)
|
//查询是不是上海内最后一个在场工程(一定要放在删除实时在场前查)
|
||||||
int number = mapper.getEinProNum(record.getWorkerId());
|
int number = mapper.getEinProNum(record.getWorkerId());
|
||||||
//删除实时在场
|
//删除实时在场
|
||||||
|
|
@ -125,7 +123,7 @@ public class PmWorkerExitServiceImpl implements PmWorkerExitService {
|
||||||
List<Integer> teamId = new ArrayList<>();
|
List<Integer> teamId = new ArrayList<>();
|
||||||
for (PmWorkerDto bean : list) {
|
for (PmWorkerDto bean : list) {
|
||||||
//查询合同工资卡是否齐全
|
//查询合同工资卡是否齐全
|
||||||
List<MapBeanVo> listData = mapper.getContractIdAndWageCard(bean.getWorkerId());
|
List<MapBeanVo> listData = mapper.getContractIdAndWageCard(bean.getWorkerId(),bean.getProId());
|
||||||
if("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue())) {
|
if("1".equals(listData.get(0).getValue()) && "1".equals(listData.get(1).getValue())) {
|
||||||
//查询是否上海外
|
//查询是否上海外
|
||||||
Boolean isShangHai = mapper.getProLocationByProId(bean.getProId());
|
Boolean isShangHai = mapper.getProLocationByProId(bean.getProId());
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||||
import com.bonus.bmw.domain.dto.PmWorkerDto;
|
import com.bonus.bmw.domain.dto.PmWorkerDto;
|
||||||
import com.bonus.bmw.domain.dto.WebFileDto;
|
import com.bonus.bmw.domain.dto.WebFileDto;
|
||||||
import com.bonus.bmw.domain.po.FaceRecognitionBean;
|
import com.bonus.bmw.domain.po.FaceRecognitionBean;
|
||||||
|
import com.bonus.bmw.domain.po.MapBeanPo;
|
||||||
import com.bonus.bmw.domain.vo.BmWorkerContract;
|
import com.bonus.bmw.domain.vo.BmWorkerContract;
|
||||||
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
|
import com.bonus.bmw.domain.vo.BmWorkerWageCard;
|
||||||
import com.bonus.bmw.domain.vo.MapBeanVo;
|
import com.bonus.bmw.domain.vo.MapBeanVo;
|
||||||
|
|
@ -425,6 +426,13 @@ public class PmWorkerServiceImpl implements PmWorkerService{
|
||||||
worker.setEinStatus(0);
|
worker.setEinStatus(0);
|
||||||
worker.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
|
worker.setUpdateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
|
||||||
mapper.updateBasicWorkerData(worker);
|
mapper.updateBasicWorkerData(worker);
|
||||||
|
BmWorkerWageCard bmWorkerWageCard = new BmWorkerWageCard();
|
||||||
|
bmWorkerWageCard.setWorkerId(delWorker.getId());
|
||||||
|
bmWorkerWageCard.setBankCardCode(worker.getBankCardCode());
|
||||||
|
bmWorkerWageCard.setBankName(worker.getBankName());
|
||||||
|
bmWorkerWageCard.setBankBranchName(worker.getBankBranchName());
|
||||||
|
bmWorkerWageCard.setBankIdentifierCode(worker.getBankIdentifierCode());
|
||||||
|
insertWorkerWageCard(bmWorkerWageCard);
|
||||||
successNum++;
|
successNum++;
|
||||||
successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 更新成功");
|
successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 更新成功");
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -448,6 +456,13 @@ public class PmWorkerServiceImpl implements PmWorkerService{
|
||||||
BeanValidators.validateWithException(validator, worker);
|
BeanValidators.validateWithException(validator, worker);
|
||||||
worker.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
|
worker.setCreateUser(SecurityUtils.getLoginUser().getSysUser().getUserName());
|
||||||
mapper.insertBasicWorkerData(worker);
|
mapper.insertBasicWorkerData(worker);
|
||||||
|
BmWorkerWageCard bmWorkerWageCard = new BmWorkerWageCard();
|
||||||
|
bmWorkerWageCard.setWorkerId(worker.getId());
|
||||||
|
bmWorkerWageCard.setBankCardCode(worker.getBankCardCode());
|
||||||
|
bmWorkerWageCard.setBankName(worker.getBankName());
|
||||||
|
bmWorkerWageCard.setBankBranchName(worker.getBankBranchName());
|
||||||
|
bmWorkerWageCard.setBankIdentifierCode(worker.getBankIdentifierCode());
|
||||||
|
insertWorkerWageCard(bmWorkerWageCard);
|
||||||
successNum++;
|
successNum++;
|
||||||
successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 导入成功");
|
successMsg.append("|").append(successNum).append("、施工人员信息 ").append(worker.getName()).append(" 导入成功");
|
||||||
} else if (isUpdateSupport) {
|
} else if (isUpdateSupport) {
|
||||||
|
|
@ -483,6 +498,14 @@ public class PmWorkerServiceImpl implements PmWorkerService{
|
||||||
return successMsg.toString();
|
return successMsg.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void insertWorkerWageCard(BmWorkerWageCard bmWorkerWageCard) {
|
||||||
|
List<MapBeanPo> list = mapper.getWageCardById(bmWorkerWageCard.getWorkerId());
|
||||||
|
if(list == null || list.isEmpty()){
|
||||||
|
mapper.insertWorkerWageCard(bmWorkerWageCard);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从18位身份证号中提取年龄、性别、出生日期,返回Map
|
* 从18位身份证号中提取年龄、性别、出生日期,返回Map
|
||||||
* @param idCard 身份证号码
|
* @param idCard 身份证号码
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@
|
||||||
bwepr.sub_name
|
bwepr.sub_name
|
||||||
FROM
|
FROM
|
||||||
bm_worker_contract bwc
|
bm_worker_contract bwc
|
||||||
left join bm_worker_ein_pro_record bwepr on bwc.worker_id = bwepr.worker_id and bwc.id = bwepr.contract_id and bwc.pro_id = bwepr.pro_id
|
left join bm_worker_ein_pro_record bwepr on bwc.worker_id = bwepr.worker_id and bwc.pro_id = bwepr.pro_id
|
||||||
<where>
|
<where>
|
||||||
bwepr.pro_name is not null
|
bwepr.pro_name is not null
|
||||||
<if test="workerId != null">
|
<if test="workerId != null">
|
||||||
|
|
@ -127,6 +127,7 @@
|
||||||
AND bwc.id = #{id}
|
AND bwc.id = #{id}
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
GROUP BY bwc.id
|
||||||
order by
|
order by
|
||||||
bwc.id desc
|
bwc.id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
'合同' as `key`,
|
'合同' as `key`,
|
||||||
count(1) as `value`
|
count(1) as `value`
|
||||||
FROM
|
FROM
|
||||||
`bm_worker_contract` where is_active = 1 and worker_id = #{workerId}
|
`bm_worker_contract` where is_active = 1 and worker_id = #{workerId} and pro_id = #{proId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getIdNumberByWorkerId" resultType="java.lang.String">
|
<select id="getIdNumberByWorkerId" resultType="java.lang.String">
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<insert id="insertBasicWorkerData">
|
<insert id="insertBasicWorkerData" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
|
||||||
insert into pm_worker (`name`, id_number, sex, age, birthday, nation, issuing_authority,
|
insert into pm_worker (`name`, id_number, sex, age, birthday, nation, issuing_authority,
|
||||||
start_time, end_time, address, create_user)
|
start_time, end_time, address, create_user)
|
||||||
values (#{name}, #{idNumber}, #{sex}, #{age},#{birthday}, #{nation}, #{issuingAuthority},
|
values (#{name}, #{idNumber}, #{sex}, #{age},#{birthday}, #{nation}, #{issuingAuthority},
|
||||||
|
|
@ -209,7 +209,6 @@
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateBasicWorkerData">
|
<update id="updateBasicWorkerData">
|
||||||
|
|
||||||
update pm_worker
|
update pm_worker
|
||||||
<set>
|
<set>
|
||||||
<if test="name != null and name != ''">
|
<if test="name != null and name != ''">
|
||||||
|
|
@ -352,4 +351,13 @@
|
||||||
bwc.worker_id = #{workerId} and bwc.is_active = 1
|
bwc.worker_id = #{workerId} and bwc.is_active = 1
|
||||||
limit 1
|
limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getWageCardById" resultType="com.bonus.bmw.domain.po.MapBeanPo">
|
||||||
|
select id from bm_worker_wage_card where worker_id = #{workerId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertWorkerWageCard">
|
||||||
|
insert into bm_worker_wage_card (worker_id,bank_card_code,bank_name,bank_branch_name,bank_identifier_code)
|
||||||
|
values (#{workerId},#{bankCardCode},#{bankName},#{bankBranchName},#{bankIdentifierCode})
|
||||||
|
</insert>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class ThreeTableOneRosterTask {
|
||||||
*/
|
*/
|
||||||
public void createThreeTableOneRosterData(){
|
public void createThreeTableOneRosterData(){
|
||||||
try{
|
try{
|
||||||
// // 获取当前年月
|
// 获取当前年月
|
||||||
// YearMonth current = YearMonth.now();
|
// YearMonth current = YearMonth.now();
|
||||||
// // 获取上一个月
|
// // 获取上一个月
|
||||||
// YearMonth lastMonth = current.minusMonths(1);
|
// YearMonth lastMonth = current.minusMonths(1);
|
||||||
|
|
@ -57,15 +57,17 @@ public class ThreeTableOneRosterTask {
|
||||||
// String endTime = firstDayOfThisMonth.format(FORMATTER)+" 00:00:00";
|
// String endTime = firstDayOfThisMonth.format(FORMATTER)+" 00:00:00";
|
||||||
|
|
||||||
|
|
||||||
// 获取当前年月
|
// // 获取当前年月
|
||||||
String current = "2025-11";
|
String current = "2025-12";
|
||||||
// 获取上一个月
|
// 获取上一个月
|
||||||
String lastMonth = "2025-10";
|
String lastMonth = "2025-11";
|
||||||
// 获取上一个月的天数(即该月最后一天是几号)
|
// 获取上一个月的天数(即该月最后一天是几号)
|
||||||
int daysInLastMonth = 30;
|
int daysInLastMonth = 30;
|
||||||
|
|
||||||
String startTime = "2025-10-01"+" 00:00:00";
|
String startTime = "2025-10-01"+" 00:00:00";
|
||||||
String endTime = "2025-11-01"+" 00:00:00";
|
String endTime = "2025-11-01"+" 00:00:00";
|
||||||
|
|
||||||
|
|
||||||
//先去检测上一月是否已经生成三表一册
|
//先去检测上一月是否已经生成三表一册
|
||||||
boolean isExist = mapper.getThreeTableOneRosterDataByLastMonth(lastMonth.toString());
|
boolean isExist = mapper.getThreeTableOneRosterDataByLastMonth(lastMonth.toString());
|
||||||
|
|
||||||
|
|
@ -84,6 +86,7 @@ public class ThreeTableOneRosterTask {
|
||||||
List<ThreeTableOneRosterPo> listApply = mapper.getWorkerApplyData(lastMonth.toString(),mapBeanVo.getId());
|
List<ThreeTableOneRosterPo> listApply = mapper.getWorkerApplyData(lastMonth.toString(),mapBeanVo.getId());
|
||||||
//3.考勤明细表
|
//3.考勤明细表
|
||||||
List<ThreeTableOneRosterPo> listAtt = mapper.getWorkerAttData(lastMonth.toString(),mapBeanVo.getId());
|
List<ThreeTableOneRosterPo> listAtt = mapper.getWorkerAttData(lastMonth.toString(),mapBeanVo.getId());
|
||||||
|
//YearMonth.parse(lastMonth)
|
||||||
List<ThreeTableOneRosterPo> listAttDeal = dealAttData(listAtt,YearMonth.parse(lastMonth));
|
List<ThreeTableOneRosterPo> listAttDeal = dealAttData(listAtt,YearMonth.parse(lastMonth));
|
||||||
//4.农民工资支付表
|
//4.农民工资支付表
|
||||||
// 数据串联生成工资支付数据
|
// 数据串联生成工资支付数据
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue