|
|
@ -3,21 +3,26 @@ package com.os.mes.record.service.impl;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.os.common.utils.DateUtils;
|
|
|
|
import com.os.common.utils.DateUtils;
|
|
|
|
import com.os.common.utils.Threads;
|
|
|
|
import com.os.common.utils.StringUtils;
|
|
|
|
import com.os.common.utils.uuid.PlanCodeUtils;
|
|
|
|
import com.os.common.utils.uuid.PlanCodeUtils;
|
|
|
|
import com.os.mes.api.domain.ERPParamDto;
|
|
|
|
import com.os.mes.api.domain.ERPParamDto;
|
|
|
|
import com.os.mes.api.domain.LatestSalary;
|
|
|
|
import com.os.mes.api.domain.LatestSalary;
|
|
|
|
import com.os.mes.api.service.IERPPortService;
|
|
|
|
import com.os.mes.api.service.IERPPortService;
|
|
|
|
|
|
|
|
import com.os.mes.base.domain.BaseProcessInfo;
|
|
|
|
import com.os.mes.base.domain.BaseStaffInfo;
|
|
|
|
import com.os.mes.base.domain.BaseStaffInfo;
|
|
|
|
import com.os.mes.base.domain.BaseTeamMembers;
|
|
|
|
import com.os.mes.base.domain.BaseTeamMembers;
|
|
|
|
|
|
|
|
import com.os.mes.base.mapper.BaseProcessInfoMapper;
|
|
|
|
import com.os.mes.base.mapper.BaseStaffInfoMapper;
|
|
|
|
import com.os.mes.base.mapper.BaseStaffInfoMapper;
|
|
|
|
import com.os.mes.base.mapper.BaseTeamMembersMapper;
|
|
|
|
import com.os.mes.base.mapper.BaseTeamMembersMapper;
|
|
|
|
import com.os.mes.prod.domain.ProdOrderDetail;
|
|
|
|
|
|
|
|
import com.os.mes.prod.domain.ProdOrderInfo;
|
|
|
|
import com.os.mes.prod.domain.ProdOrderInfo;
|
|
|
|
|
|
|
|
import com.os.mes.prod.domain.ProdPlanDetail;
|
|
|
|
|
|
|
|
import com.os.mes.prod.domain.ProdPlanInfo;
|
|
|
|
import com.os.mes.prod.mapper.ProdOrderInfoMapper;
|
|
|
|
import com.os.mes.prod.mapper.ProdOrderInfoMapper;
|
|
|
|
|
|
|
|
import com.os.mes.prod.mapper.ProdPlanInfoMapper;
|
|
|
|
|
|
|
|
import com.os.mes.record.domain.RecordStaffCommute;
|
|
|
|
|
|
|
|
import com.os.mes.record.mapper.RecordStaffCommuteMapper;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import com.os.mes.record.mapper.RecordStaffSalaryMapper;
|
|
|
|
import com.os.mes.record.mapper.RecordStaffSalaryMapper;
|
|
|
@ -44,6 +49,15 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private ProdOrderInfoMapper prodOrderInfoMapper;
|
|
|
|
private ProdOrderInfoMapper prodOrderInfoMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private ProdPlanInfoMapper prodPlanInfoMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private BaseProcessInfoMapper baseProcessInfoMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private RecordStaffCommuteMapper recordStaffCommuteMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IERPPortService portService;
|
|
|
|
private IERPPortService portService;
|
|
|
|
|
|
|
|
|
|
|
@ -116,95 +130,226 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 生成班组员工工资
|
|
|
|
* 生成班组员工工资
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param recordStaffSalary
|
|
|
|
* @param recordStaffSalary
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<RecordStaffSalary> selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) {
|
|
|
|
public List<RecordStaffSalary> selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) {
|
|
|
|
List<RecordStaffSalary> result = new ArrayList<>();
|
|
|
|
List<RecordStaffSalary> result = new ArrayList<>();
|
|
|
|
BaseTeamMembers members = new BaseTeamMembers();
|
|
|
|
|
|
|
|
members.setTeamCode(recordStaffSalary.getGroupId());
|
|
|
|
|
|
|
|
List<BaseTeamMembers> membersList = baseTeamMembersMapper.selectBaseTeamMembersList(members);
|
|
|
|
|
|
|
|
//调用最新工资系数接口
|
|
|
|
//调用最新工资系数接口
|
|
|
|
LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto());
|
|
|
|
LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto());
|
|
|
|
|
|
|
|
|
|
|
|
ProdOrderInfo orderInfo = new ProdOrderInfo();
|
|
|
|
//遍历工序
|
|
|
|
|
|
|
|
List<BaseProcessInfo> processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(new BaseProcessInfo());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ProdPlanInfo planInfo = new ProdPlanInfo();
|
|
|
|
Map<String, Object> params = recordStaffSalary.getParams();
|
|
|
|
Map<String, Object> params = recordStaffSalary.getParams();
|
|
|
|
|
|
|
|
planInfo.setParams(params);
|
|
|
|
|
|
|
|
|
|
|
|
Date beginOrderDate = null;
|
|
|
|
Date beginOrderDate = null;
|
|
|
|
Date endOrderDate = null;
|
|
|
|
Date endOrderDate = null;
|
|
|
|
if (params.containsKey("beginOrderDate")){
|
|
|
|
if (params.containsKey("beginOrderDate")) {
|
|
|
|
beginOrderDate = DateUtils.parseDate(String.valueOf(params.get("beginOrderDate")));
|
|
|
|
beginOrderDate = DateUtils.parseDate(String.valueOf(params.get("beginOrderDate")));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (params.containsKey("endOrderDate")){
|
|
|
|
if (params.containsKey("endOrderDate")) {
|
|
|
|
endOrderDate = DateUtils.parseDate(String.valueOf(params.get("endOrderDate")));
|
|
|
|
endOrderDate = DateUtils.parseDate(String.valueOf(params.get("endOrderDate")));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
orderInfo.setParams(params);
|
|
|
|
|
|
|
|
List<ProdOrderInfo> orderInfoList = prodOrderInfoMapper.selectProdOrderInfoList(orderInfo);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long objId = 1L;
|
|
|
|
long objId = 1L;
|
|
|
|
String taskCode = PlanCodeUtils.getTaskCode();
|
|
|
|
String taskCode = PlanCodeUtils.getTaskCode();
|
|
|
|
//按照班组 分工资;
|
|
|
|
|
|
|
|
for (BaseTeamMembers team : membersList) {
|
|
|
|
|
|
|
|
String processCode = team.getProcessCode();
|
|
|
|
|
|
|
|
//工序工资系数
|
|
|
|
|
|
|
|
BigDecimal coefficient = new BigDecimal(0);
|
|
|
|
|
|
|
|
//工序生产面积
|
|
|
|
|
|
|
|
BigDecimal totalArea = new BigDecimal(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//硫化工序 工序硫化的工资 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和)
|
|
|
|
for (BaseProcessInfo processInfo : processInfoList) {
|
|
|
|
//硫化面积=硫化米数/客户要求总米数*硫化面积
|
|
|
|
String processCode = processInfo.getProcessCode();
|
|
|
|
if(processCode.equals("1002")){
|
|
|
|
planInfo.setProcessCode(processCode);
|
|
|
|
coefficient = salaryData.getVulcanizationCoefficient();
|
|
|
|
List<ProdPlanInfo> planInfoList = prodPlanInfoMapper.selectProdPlanAndDetailList(planInfo);
|
|
|
|
totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
if (planInfoList.size() == 0) {
|
|
|
|
.map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
continue;
|
|
|
|
.multiply(e.getSulfurizationArea()))
|
|
|
|
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//成型工序
|
|
|
|
|
|
|
|
if(processCode.equals("1001")){
|
|
|
|
|
|
|
|
coefficient = salaryData.getFormingCoefficient();
|
|
|
|
|
|
|
|
totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
|
|
|
|
.map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
|
|
|
|
.multiply(e.getFormingArea()))
|
|
|
|
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//遍历ERP生产工单
|
|
|
|
|
|
|
|
for (ProdPlanInfo plan : planInfoList) {
|
|
|
|
|
|
|
|
ProdOrderInfo orderInfo = new ProdOrderInfo();
|
|
|
|
|
|
|
|
orderInfo.setOrderCode(plan.getOrderCode());
|
|
|
|
|
|
|
|
List<ProdOrderInfo> orderInfoList = prodOrderInfoMapper.selectProdOrderInfoList(orderInfo);
|
|
|
|
|
|
|
|
List<ProdPlanDetail> prodPlanDetailList = plan.getProdPlanDetailList();
|
|
|
|
|
|
|
|
//遍历生产工单明细
|
|
|
|
|
|
|
|
for (ProdPlanDetail prodPlanDetail : prodPlanDetailList) {
|
|
|
|
|
|
|
|
HashMap<String, Object> selectMap = new HashMap<>();
|
|
|
|
|
|
|
|
Date beginTime = prodPlanDetail.getBeginTime();
|
|
|
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
|
|
|
|
calendar.setTime(beginTime);
|
|
|
|
|
|
|
|
calendar.add(Calendar.HOUR, -8);
|
|
|
|
|
|
|
|
Date adjustedTime = calendar.getTime();
|
|
|
|
|
|
|
|
selectMap.put("beginStartWorkTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, adjustedTime));
|
|
|
|
|
|
|
|
selectMap.put("endStartWorkTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, beginTime));
|
|
|
|
|
|
|
|
RecordStaffCommute staffCommute = new RecordStaffCommute();
|
|
|
|
|
|
|
|
staffCommute.setParams(selectMap);
|
|
|
|
|
|
|
|
staffCommute.setTeamCode(plan.getTeamCode());
|
|
|
|
|
|
|
|
List<RecordStaffCommute> staffCommuteList = recordStaffCommuteMapper.selectRecordStaffCommuteList(staffCommute);
|
|
|
|
|
|
|
|
BigDecimal totalWageCoefficient = staffCommuteList.stream().map(RecordStaffCommute::getWageCoefficient)
|
|
|
|
|
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
|
|
|
|
BaseStaffInfo selectStaffInfo = new BaseStaffInfo();
|
|
|
|
for (RecordStaffCommute recordStaffCommute : staffCommuteList) {
|
|
|
|
selectStaffInfo.setTeamCode(team.getTeamCode());
|
|
|
|
//工序工资系数
|
|
|
|
selectStaffInfo.setDelFlag("0");
|
|
|
|
BigDecimal coefficient = new BigDecimal(0);
|
|
|
|
List<BaseStaffInfo> staffInfoList = baseStaffInfoMapper.selectBaseStaffInfoList(selectStaffInfo);
|
|
|
|
//工序生产面积
|
|
|
|
BigDecimal totalWageCoefficient = staffInfoList.stream().map(BaseStaffInfo::getWageCoefficient)
|
|
|
|
BigDecimal totalArea = new BigDecimal(0);
|
|
|
|
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (BaseStaffInfo staffInfo : staffInfoList) {
|
|
|
|
//硫化工序 工序硫化的工资 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和)
|
|
|
|
RecordStaffSalary staffSalary = new RecordStaffSalary();
|
|
|
|
//硫化面积=硫化米数/客户要求总米数*硫化面积
|
|
|
|
staffSalary.setObjId(objId++);
|
|
|
|
if (processCode.equals("1002")) {
|
|
|
|
staffSalary.setTaskCode(taskCode);
|
|
|
|
coefficient = salaryData.getVulcanizationCoefficient();
|
|
|
|
staffSalary.setIdCard(staffInfo.getPassWord());
|
|
|
|
totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
staffSalary.setGroupId(team.getTeamCode());
|
|
|
|
.map(e -> prodPlanDetail.getCompleteAmount().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
staffSalary.setEventDate(new Date());
|
|
|
|
.multiply(e.getSulfurizationArea()))
|
|
|
|
staffSalary.setSalaryCategory("收入");
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
staffSalary.setRevenueClass("完成生产任务");
|
|
|
|
}
|
|
|
|
BigDecimal staffCoefficient = staffInfo.getWageCoefficient().divide(totalWageCoefficient, 6, RoundingMode.HALF_UP);
|
|
|
|
//成型工序
|
|
|
|
BigDecimal revenueAmount = coefficient.multiply(totalArea).multiply(staffCoefficient);
|
|
|
|
if (processCode.equals("1001")) {
|
|
|
|
revenueAmount = revenueAmount.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
coefficient = salaryData.getFormingCoefficient();
|
|
|
|
staffSalary.setRevenueAmount(revenueAmount);
|
|
|
|
totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
staffSalary.setSalaryCoefficient(staffInfo.getWageCoefficient());
|
|
|
|
.map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
staffSalary.setStaffName(staffInfo.getStaffName());
|
|
|
|
.multiply(e.getFormingArea()))
|
|
|
|
staffSalary.setCardId(staffInfo.getCardId());
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
staffSalary.setTeamName(team.getTeamName());
|
|
|
|
}
|
|
|
|
staffSalary.setBeginDate(beginOrderDate);
|
|
|
|
|
|
|
|
staffSalary.setEndDate(endOrderDate);
|
|
|
|
BigDecimal staffCoefficient = recordStaffCommute.getWageCoefficient().divide(totalWageCoefficient, 6, RoundingMode.HALF_UP);
|
|
|
|
result.add(staffSalary);
|
|
|
|
BigDecimal revenueAmount = coefficient.multiply(totalArea).multiply(staffCoefficient);
|
|
|
|
|
|
|
|
revenueAmount = revenueAmount.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String staffId = recordStaffCommute.getStaffId();
|
|
|
|
|
|
|
|
String teamCode = recordStaffCommute.getTeamCode();
|
|
|
|
|
|
|
|
String teamName = recordStaffCommute.getTeamName();
|
|
|
|
|
|
|
|
RecordStaffSalary staffSalary = new RecordStaffSalary();
|
|
|
|
|
|
|
|
for (RecordStaffSalary staff : result) {
|
|
|
|
|
|
|
|
if (staff.getCardId().equals(staffId)
|
|
|
|
|
|
|
|
&& staff.getGroupId().equals(recordStaffCommute.getTeamCode())) {
|
|
|
|
|
|
|
|
staffSalary = staff;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(staffSalary.getCardId())) {
|
|
|
|
|
|
|
|
staffSalary.setObjId(objId++);
|
|
|
|
|
|
|
|
staffSalary.setTaskCode(taskCode);
|
|
|
|
|
|
|
|
staffSalary.setIdCard(recordStaffCommute.getPassWord());
|
|
|
|
|
|
|
|
staffSalary.setGroupId(teamCode);
|
|
|
|
|
|
|
|
staffSalary.setEventDate(new Date());
|
|
|
|
|
|
|
|
staffSalary.setSalaryCategory("收入");
|
|
|
|
|
|
|
|
staffSalary.setRevenueClass("完成生产任务");
|
|
|
|
|
|
|
|
revenueAmount = revenueAmount.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
|
|
staffSalary.setRevenueAmount(revenueAmount);
|
|
|
|
|
|
|
|
staffSalary.setSalaryCoefficient(recordStaffCommute.getWageCoefficient());
|
|
|
|
|
|
|
|
staffSalary.setStaffName(recordStaffCommute.getStaffName());
|
|
|
|
|
|
|
|
staffSalary.setCardId(staffId);
|
|
|
|
|
|
|
|
staffSalary.setTeamName(teamName);
|
|
|
|
|
|
|
|
staffSalary.setBeginDate(beginOrderDate);
|
|
|
|
|
|
|
|
staffSalary.setEndDate(endOrderDate);
|
|
|
|
|
|
|
|
result.add(staffSalary);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
staffSalary.setRevenueAmount(staffSalary.getRevenueAmount().add(revenueAmount));
|
|
|
|
|
|
|
|
staffSalary.setGroupId(teamCode);
|
|
|
|
|
|
|
|
staffSalary.setTeamName(teamName);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /**
|
|
|
|
|
|
|
|
// * 生成班组员工工资
|
|
|
|
|
|
|
|
// * @param recordStaffSalary
|
|
|
|
|
|
|
|
// * @return
|
|
|
|
|
|
|
|
// */
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
|
|
|
// public List<RecordStaffSalary> selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) {
|
|
|
|
|
|
|
|
// List<RecordStaffSalary> result = new ArrayList<>();
|
|
|
|
|
|
|
|
// BaseTeamMembers members = new BaseTeamMembers();
|
|
|
|
|
|
|
|
// members.setTeamCode(recordStaffSalary.getGroupId());
|
|
|
|
|
|
|
|
// List<BaseTeamMembers> membersList = baseTeamMembersMapper.selectBaseTeamMembersList(members);
|
|
|
|
|
|
|
|
// //调用最新工资系数接口
|
|
|
|
|
|
|
|
// LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// ProdOrderInfo orderInfo = new ProdOrderInfo();
|
|
|
|
|
|
|
|
// Map<String, Object> params = recordStaffSalary.getParams();
|
|
|
|
|
|
|
|
// Date beginOrderDate = null;
|
|
|
|
|
|
|
|
// Date endOrderDate = null;
|
|
|
|
|
|
|
|
// if (params.containsKey("beginOrderDate")){
|
|
|
|
|
|
|
|
// beginOrderDate = DateUtils.parseDate(String.valueOf(params.get("beginOrderDate")));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// if (params.containsKey("endOrderDate")){
|
|
|
|
|
|
|
|
// endOrderDate = DateUtils.parseDate(String.valueOf(params.get("endOrderDate")));
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// orderInfo.setParams(params);
|
|
|
|
|
|
|
|
// List<ProdOrderInfo> orderInfoList = prodOrderInfoMapper.selectProdOrderInfoList(orderInfo);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// long objId = 1L;
|
|
|
|
|
|
|
|
// String taskCode = PlanCodeUtils.getTaskCode();
|
|
|
|
|
|
|
|
// //按照班组 分工资;
|
|
|
|
|
|
|
|
// for (BaseTeamMembers team : membersList) {
|
|
|
|
|
|
|
|
// String processCode = team.getProcessCode();
|
|
|
|
|
|
|
|
// //工序工资系数
|
|
|
|
|
|
|
|
// BigDecimal coefficient = new BigDecimal(0);
|
|
|
|
|
|
|
|
// //工序生产面积
|
|
|
|
|
|
|
|
// BigDecimal totalArea = new BigDecimal(0);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// //硫化工序 工序硫化的工资 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和)
|
|
|
|
|
|
|
|
// //硫化面积=硫化米数/客户要求总米数*硫化面积
|
|
|
|
|
|
|
|
// if(processCode.equals("1002")){
|
|
|
|
|
|
|
|
// coefficient = salaryData.getVulcanizationCoefficient();
|
|
|
|
|
|
|
|
// totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
|
|
|
|
// .map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
|
|
|
|
// .multiply(e.getSulfurizationArea()))
|
|
|
|
|
|
|
|
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// //成型工序
|
|
|
|
|
|
|
|
// if(processCode.equals("1001")){
|
|
|
|
|
|
|
|
// coefficient = salaryData.getFormingCoefficient();
|
|
|
|
|
|
|
|
// totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail)
|
|
|
|
|
|
|
|
// .map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP)
|
|
|
|
|
|
|
|
// .multiply(e.getFormingArea()))
|
|
|
|
|
|
|
|
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// //获取这个时间段内员工打卡记录
|
|
|
|
|
|
|
|
// BaseStaffInfo selectStaffInfo = new BaseStaffInfo();
|
|
|
|
|
|
|
|
// selectStaffInfo.setTeamCode(team.getTeamCode());
|
|
|
|
|
|
|
|
// selectStaffInfo.setDelFlag("0");
|
|
|
|
|
|
|
|
// List<BaseStaffInfo> staffInfoList = baseStaffInfoMapper.selectBaseStaffInfoList(selectStaffInfo);
|
|
|
|
|
|
|
|
// BigDecimal totalWageCoefficient = staffInfoList.stream().map(BaseStaffInfo::getWageCoefficient)
|
|
|
|
|
|
|
|
// .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// for (BaseStaffInfo staffInfo : staffInfoList) {
|
|
|
|
|
|
|
|
// RecordStaffSalary staffSalary = new RecordStaffSalary();
|
|
|
|
|
|
|
|
// staffSalary.setObjId(objId++);
|
|
|
|
|
|
|
|
// staffSalary.setTaskCode(taskCode);
|
|
|
|
|
|
|
|
// staffSalary.setIdCard(staffInfo.getPassWord());
|
|
|
|
|
|
|
|
// staffSalary.setGroupId(team.getTeamCode());
|
|
|
|
|
|
|
|
// staffSalary.setEventDate(new Date());
|
|
|
|
|
|
|
|
// staffSalary.setSalaryCategory("收入");
|
|
|
|
|
|
|
|
// staffSalary.setRevenueClass("完成生产任务");
|
|
|
|
|
|
|
|
// BigDecimal staffCoefficient = staffInfo.getWageCoefficient().divide(totalWageCoefficient, 6, RoundingMode.HALF_UP);
|
|
|
|
|
|
|
|
// BigDecimal revenueAmount = coefficient.multiply(totalArea).multiply(staffCoefficient);
|
|
|
|
|
|
|
|
// revenueAmount = revenueAmount.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
|
|
// staffSalary.setRevenueAmount(revenueAmount);
|
|
|
|
|
|
|
|
// staffSalary.setSalaryCoefficient(staffInfo.getWageCoefficient());
|
|
|
|
|
|
|
|
// staffSalary.setStaffName(staffInfo.getStaffName());
|
|
|
|
|
|
|
|
// staffSalary.setCardId(staffInfo.getCardId());
|
|
|
|
|
|
|
|
// staffSalary.setTeamName(team.getTeamName());
|
|
|
|
|
|
|
|
// staffSalary.setBeginDate(beginOrderDate);
|
|
|
|
|
|
|
|
// staffSalary.setEndDate(endOrderDate);
|
|
|
|
|
|
|
|
// result.add(staffSalary);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// return result;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 维护员工工资记录
|
|
|
|
* 维护员工工资记录
|
|
|
|
* 上传ERP
|
|
|
|
* 上传ERP
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param recordStaffSalaryList
|
|
|
|
* @param recordStaffSalaryList
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|