diff --git a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanDetail.java b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanDetail.java new file mode 100644 index 0000000..627317e --- /dev/null +++ b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanDetail.java @@ -0,0 +1,269 @@ +package com.os.mes.prod.domain; + +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.os.common.annotation.Excel; +import com.os.common.core.domain.BaseEntity; + +/** + * 工单明细对象 prod_plan_detail + * + * @author Yinq + * @date 2024-07-08 + */ +public class ProdPlanDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + private Long objId; + + /** + * 工单编号 + */ + @Excel(name = "工单编号") + private String planCode; + + /** + * 物料编号 + */ + @Excel(name = "物料编号") + private String materialCode; + + /** + * 计划数量 + */ + @Excel(name = "计划数量") + private BigDecimal planAmount; + + /** + * 完成数量 + */ + @Excel(name = "完成数量") + private BigDecimal completeAmount; + + /** + * 实际开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date beginTime; + + /** + * 实际完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "实际完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** + * 当前班组班长 + */ + @Excel(name = "当前班组班长") + private String currentStaffId; + + /** + * 下一班组班长 + */ + @Excel(name = "下一班组班长") + private String nextStaffId; + + /** + * 是否标识 + */ + @Excel(name = "是否标识") + private String endFlag; + + /** + * 创建人 + */ + @Excel(name = "创建人") + private String createdBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date createdTime; + + /** + * 更新人 + */ + @Excel(name = "更新人") + private String updatedBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date updatedTime; + + /** + * 班次(1早班 2小夜 3大夜) + */ + @Excel(name = "班次", readConverterExp = "1=早班,2=小夜,3=大夜") + private String classes; + + /** + * 工序编号 + */ + @Excel(name = "工序编号") + private String processCode; + + public void setObjId(Long objId) { + this.objId = objId; + } + + public Long getObjId() { + return objId; + } + + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + + public String getPlanCode() { + return planCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setPlanAmount(BigDecimal planAmount) { + this.planAmount = planAmount; + } + + public BigDecimal getPlanAmount() { + return planAmount; + } + + public void setCompleteAmount(BigDecimal completeAmount) { + this.completeAmount = completeAmount; + } + + public BigDecimal getCompleteAmount() { + return completeAmount; + } + + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + } + + public Date getBeginTime() { + return beginTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setCurrentStaffId(String currentStaffId) { + this.currentStaffId = currentStaffId; + } + + public String getCurrentStaffId() { + return currentStaffId; + } + + public void setNextStaffId(String nextStaffId) { + this.nextStaffId = nextStaffId; + } + + public String getNextStaffId() { + return nextStaffId; + } + + public void setEndFlag(String endFlag) { + this.endFlag = endFlag; + } + + public String getEndFlag() { + return endFlag; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + public Date getCreatedTime() { + return createdTime; + } + + public void setUpdatedBy(String updatedBy) { + this.updatedBy = updatedBy; + } + + public String getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + public Date getUpdatedTime() { + return updatedTime; + } + + public void setClasses(String classes) { + this.classes = classes; + } + + public String getClasses() { + return classes; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + + public String getProcessCode() { + return processCode; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("objId", getObjId()) + .append("planCode", getPlanCode()) + .append("materialCode", getMaterialCode()) + .append("planAmount", getPlanAmount()) + .append("completeAmount", getCompleteAmount()) + .append("beginTime", getBeginTime()) + .append("endTime", getEndTime()) + .append("currentStaffId", getCurrentStaffId()) + .append("nextStaffId", getNextStaffId()) + .append("endFlag", getEndFlag()) + .append("createdBy", getCreatedBy()) + .append("createdTime", getCreatedTime()) + .append("updatedBy", getUpdatedBy()) + .append("updatedTime", getUpdatedTime()) + .append("classes", getClasses()) + .append("processCode", getProcessCode()) + .toString(); + } +} diff --git a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java index 65b2e57..ae93799 100644 --- a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java +++ b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java @@ -2,6 +2,7 @@ package com.os.mes.prod.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -149,6 +150,52 @@ public class ProdPlanInfo extends BaseEntity { @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date planEndTime; + /** 工单状态(0未开始 1执行中 2执行完成 3取消) */ + @Excel(name = "工单状态", readConverterExp = "0=未开始,1=执行中,2=执行完成,3=取消") + private String planStatus; + + /** 班次(1早班 2小夜 3大夜) */ + @Excel(name = "班次", readConverterExp = "1=早班,2=小夜,3=大夜") + private String classes; + + /** 工序编号 */ + @Excel(name = "工序编号") + private String processCode; + + private List prodPlanDetailList; + + public List getProdPlanDetailList() { + return prodPlanDetailList; + } + + public void setProdPlanDetailList(List prodPlanDetailList) { + this.prodPlanDetailList = prodPlanDetailList; + } + + public String getPlanStatus() { + return planStatus; + } + + public void setPlanStatus(String planStatus) { + this.planStatus = planStatus; + } + + public String getClasses() { + return classes; + } + + public void setClasses(String classes) { + this.classes = classes; + } + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + public String getStationName() { return stationName; } diff --git a/os-mes/src/main/java/com/os/mes/prod/mapper/ProdPlanInfoMapper.java b/os-mes/src/main/java/com/os/mes/prod/mapper/ProdPlanInfoMapper.java index 64da7a4..e7d4677 100644 --- a/os-mes/src/main/java/com/os/mes/prod/mapper/ProdPlanInfoMapper.java +++ b/os-mes/src/main/java/com/os/mes/prod/mapper/ProdPlanInfoMapper.java @@ -58,4 +58,12 @@ public interface ProdPlanInfoMapper { * @return 结果 */ public int deleteProdPlanInfoByObjIds(Long[] objIds); + + /** + * 查询生产工单与明细列表 + * + * @param prodPlanInfo 生产工单 + * @return 生产工单集合 + */ + public List selectProdPlanAndDetailList(ProdPlanInfo prodPlanInfo); } diff --git a/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffCommute.java b/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffCommute.java index feb0587..e6ef8c6 100644 --- a/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffCommute.java +++ b/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffCommute.java @@ -85,6 +85,34 @@ public class RecordStaffCommute extends BaseEntity { @Excel(name = "机台编号") private String machineCode; + /** + * 工资系数 + */ + @Excel(name = "工资系数") + private BigDecimal wageCoefficient; + + /** + * 身份证 + */ + @Excel(name = "身份证") + private String passWord; + + public String getPassWord() { + return passWord; + } + + public void setPassWord(String passWord) { + this.passWord = passWord; + } + + public BigDecimal getWageCoefficient() { + return wageCoefficient; + } + + public void setWageCoefficient(BigDecimal wageCoefficient) { + this.wageCoefficient = wageCoefficient; + } + public String getStaffName() { return staffName; } diff --git a/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java b/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java index 6aca499..3d07fd3 100644 --- a/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java +++ b/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java @@ -3,21 +3,26 @@ package com.os.mes.record.service.impl; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; -import java.util.stream.Stream; 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.mes.api.domain.ERPParamDto; import com.os.mes.api.domain.LatestSalary; 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.BaseTeamMembers; +import com.os.mes.base.mapper.BaseProcessInfoMapper; import com.os.mes.base.mapper.BaseStaffInfoMapper; 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.ProdPlanDetail; +import com.os.mes.prod.domain.ProdPlanInfo; 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.stereotype.Service; import com.os.mes.record.mapper.RecordStaffSalaryMapper; @@ -44,6 +49,15 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { @Autowired private ProdOrderInfoMapper prodOrderInfoMapper; + @Autowired + private ProdPlanInfoMapper prodPlanInfoMapper; + + @Autowired + private BaseProcessInfoMapper baseProcessInfoMapper; + + @Autowired + private RecordStaffCommuteMapper recordStaffCommuteMapper; + @Autowired private IERPPortService portService; @@ -116,95 +130,226 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { /** * 生成班组员工工资 + * * @param recordStaffSalary * @return */ @Override public List selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) { List result = new ArrayList<>(); - BaseTeamMembers members = new BaseTeamMembers(); - members.setTeamCode(recordStaffSalary.getGroupId()); - List membersList = baseTeamMembersMapper.selectBaseTeamMembersList(members); + //调用最新工资系数接口 LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto()); - ProdOrderInfo orderInfo = new ProdOrderInfo(); + //遍历工序 + List processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(new BaseProcessInfo()); + + ProdPlanInfo planInfo = new ProdPlanInfo(); Map params = recordStaffSalary.getParams(); + planInfo.setParams(params); + Date beginOrderDate = null; Date endOrderDate = null; - if (params.containsKey("beginOrderDate")){ + if (params.containsKey("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"))); } - orderInfo.setParams(params); - List 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); + for (BaseProcessInfo processInfo : processInfoList) { + String processCode = processInfo.getProcessCode(); + planInfo.setProcessCode(processCode); + List planInfoList = prodPlanInfoMapper.selectProdPlanAndDetailList(planInfo); + if (planInfoList.size() == 0) { + continue; } + //遍历ERP生产工单 + for (ProdPlanInfo plan : planInfoList) { + ProdOrderInfo orderInfo = new ProdOrderInfo(); + orderInfo.setOrderCode(plan.getOrderCode()); + List orderInfoList = prodOrderInfoMapper.selectProdOrderInfoList(orderInfo); + List prodPlanDetailList = plan.getProdPlanDetailList(); + //遍历生产工单明细 + for (ProdPlanDetail prodPlanDetail : prodPlanDetailList) { + HashMap 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 staffCommuteList = recordStaffCommuteMapper.selectRecordStaffCommuteList(staffCommute); + BigDecimal totalWageCoefficient = staffCommuteList.stream().map(RecordStaffCommute::getWageCoefficient) + .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); - BaseStaffInfo selectStaffInfo = new BaseStaffInfo(); - selectStaffInfo.setTeamCode(team.getTeamCode()); - selectStaffInfo.setDelFlag("0"); - List staffInfoList = baseStaffInfoMapper.selectBaseStaffInfoList(selectStaffInfo); - BigDecimal totalWageCoefficient = staffInfoList.stream().map(BaseStaffInfo::getWageCoefficient) - .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + for (RecordStaffCommute recordStaffCommute : staffCommuteList) { + //工序工资系数 + BigDecimal coefficient = new BigDecimal(0); + //工序生产面积 + BigDecimal totalArea = new BigDecimal(0); - 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); + //硫化工序 工序硫化的工资 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和) + //硫化面积=硫化米数/客户要求总米数*硫化面积 + if (processCode.equals("1002")) { + coefficient = salaryData.getVulcanizationCoefficient(); + totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail) + .map(e -> prodPlanDetail.getCompleteAmount().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); + } + + BigDecimal staffCoefficient = recordStaffCommute.getWageCoefficient().divide(totalWageCoefficient, 6, RoundingMode.HALF_UP); + 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; } +// /** +// * 生成班组员工工资 +// * @param recordStaffSalary +// * @return +// */ +// @Override +// public List selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) { +// List result = new ArrayList<>(); +// BaseTeamMembers members = new BaseTeamMembers(); +// members.setTeamCode(recordStaffSalary.getGroupId()); +// List membersList = baseTeamMembersMapper.selectBaseTeamMembersList(members); +// //调用最新工资系数接口 +// LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto()); +// +// ProdOrderInfo orderInfo = new ProdOrderInfo(); +// Map 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 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 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 + * * @param recordStaffSalaryList * @return */ diff --git a/os-mes/src/main/resources/mapper/mes/base/BaseCustomDataMapper.xml b/os-mes/src/main/resources/mapper/mes/base/BaseCustomDataMapper.xml index 5fb05a0..bdff573 100644 --- a/os-mes/src/main/resources/mapper/mes/base/BaseCustomDataMapper.xml +++ b/os-mes/src/main/resources/mapper/mes/base/BaseCustomDataMapper.xml @@ -40,7 +40,7 @@ and custom_type = #{customType} and custom_function = #{customFunction} - and custom_code = #{customCode} + and custom_code like concat('%', #{customCode}, '%') and custom_data = #{customData} and custom_sort = #{customSort} and is_flag = #{isFlag} diff --git a/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml b/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml index ac4ea94..7f7725f 100644 --- a/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml +++ b/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml @@ -26,6 +26,25 @@ + + + + + + + + + + + + + + + + + + + @@ -55,14 +74,57 @@ left join base_team_members btm on btm.team_code = ppi.team_code + + select ppi.obj_id, + ppi.plan_code, + ppi.order_code, + ppi.material_code, + ppi.material_name, + ppi.station_code, + bpl.product_line_name station_name, + ppi.device_code, + ppi.team_code, + btm.team_name, + ppi.plan_amount, + ppi.complete_amount, + ppi.begin_time, + ppi.end_time, + ppi.comp_flag, + ppi.created_by, + ppi.created_time, + ppi.updated_by, + ppi.updated_time, + ppi.plan_begin_time, + ppi.plan_end_time, + ppi.plan_status, + ppi.classes, + ppi.process_code, + ppd.obj_id d_obj_id, + ppd.plan_code d_plan_code, + ppd.material_code d_material_code, + ppd.plan_amount d_plan_amount, + ppd.complete_amount d_complete_amount, + ppd.begin_time d_begin_time, + ppd.end_time d_end_time, + ppd.current_staff_id d_current_staff_id, + ppd.next_staff_id d_next_staff_id, + ppd.end_flag d_end_flag, + ppd.classes d_classes, + ppd.process_code d_process_code + from prod_plan_info ppi + left join base_product_line bpl on bpl.product_line_code = ppi.station_code + left join base_team_members btm on btm.team_code = ppi.team_code + left join prod_plan_detail ppd on ppd.plan_code = ppi.plan_code + + @@ -109,6 +174,9 @@ updated_time, plan_begin_time, plan_end_time, + plan_status, + classes, + process_code, #{planCode}, @@ -129,6 +197,9 @@ #{updatedTime}, #{planBeginTime}, #{planEndTime}, + #{planStatus}, + #{classes}, + #{processCode}, @@ -153,6 +224,9 @@ updated_time = #{updatedTime}, plan_begin_time = #{planBeginTime}, plan_end_time = #{planEndTime}, + plan_status = #{planStatus}, + classes = #{classes}, + process_code = #{processCode}, where obj_id = #{objId} @@ -169,4 +243,17 @@ #{objId} + + + \ No newline at end of file diff --git a/os-mes/src/main/resources/mapper/mes/record/RecordStaffCommuteMapper.xml b/os-mes/src/main/resources/mapper/mes/record/RecordStaffCommuteMapper.xml index 9adcfcb..04edfb3 100644 --- a/os-mes/src/main/resources/mapper/mes/record/RecordStaffCommuteMapper.xml +++ b/os-mes/src/main/resources/mapper/mes/record/RecordStaffCommuteMapper.xml @@ -21,6 +21,8 @@ + + @@ -39,7 +41,9 @@ rsc.create_time, rsc.update_by, rsc.update_time, - rsc.machine_code + rsc.machine_code, + bsi.wage_coefficient, + bsi.pass_word from record_staff_commute rsc left join base_staff_info bsi on bsi.staff_id = rsc.staff_id left join base_team_members btm on btm.team_code = rsc.team_code @@ -61,6 +65,7 @@ and rsc.is_flag = #{isFlag} and rsc.machine_code = #{machineCode} + order by start_work_time desc - and id_card = #{idCard} - and group_id = #{groupId} + and rss.id_card = #{idCard} + and rss.group_id = #{groupId} - and event_date between #{params.beginEventDate} and #{params.endEventDate} + and rss.event_date between #{params.beginEventDate} and #{params.endEventDate} - and salary_category = #{salaryCategory} - and revenue_class = #{revenueClass} - and revenue_amount = #{revenueAmount} - and revenue_reason = #{revenueReason} - and fine_class = #{fineClass} - and fine_amount = #{fineAmount} - and fine_reason = #{fineReason} - and task_code = #{taskCode} - and salary_coefficient = #{salaryCoefficient} - and object_id = #{objectId} + and rss.salary_category = #{salaryCategory} + and rss.revenue_class = #{revenueClass} + and rss.revenue_amount = #{revenueAmount} + and rss.revenue_reason = #{revenueReason} + and rss.fine_class = #{fineClass} + and rss.fine_amount = #{fineAmount} + and rss.fine_reason = #{fineReason} + and rss.task_code = #{taskCode} + and rss.salary_coefficient = #{salaryCoefficient} + and rss.object_id = #{objectId} + order by rss.task_code desc, rss.group_id