change - 员工工资改逻辑

boardTest
yinq 12 months ago
parent ba24a3b4d7
commit 14bf709535

@ -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();
}
}

@ -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<ProdPlanDetail> prodPlanDetailList;
public List<ProdPlanDetail> getProdPlanDetailList() {
return prodPlanDetailList;
}
public void setProdPlanDetailList(List<ProdPlanDetail> 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;
}

@ -58,4 +58,12 @@ public interface ProdPlanInfoMapper {
* @return
*/
public int deleteProdPlanInfoByObjIds(Long[] objIds);
/**
*
*
* @param prodPlanInfo
* @return
*/
public List<ProdPlanInfo> selectProdPlanAndDetailList(ProdPlanInfo prodPlanInfo);
}

@ -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;
}

@ -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<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();
//遍历工序
List<BaseProcessInfo> processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(new BaseProcessInfo());
ProdPlanInfo planInfo = new ProdPlanInfo();
Map<String, Object> 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<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);
for (BaseProcessInfo processInfo : processInfoList) {
String processCode = processInfo.getProcessCode();
planInfo.setProcessCode(processCode);
List<ProdPlanInfo> planInfoList = prodPlanInfoMapper.selectProdPlanAndDetailList(planInfo);
if (planInfoList.size() == 0) {
continue;
}
//遍历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();
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 (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<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
*
* @param recordStaffSalaryList
* @return
*/

@ -40,7 +40,7 @@
<where>
<if test="customType != null and customType != ''">and custom_type = #{customType}</if>
<if test="customFunction != null and customFunction != ''">and custom_function = #{customFunction}</if>
<if test="customCode != null and customCode != ''">and custom_code = #{customCode}</if>
<if test="customCode != null and customCode != ''">and custom_code like concat('%', #{customCode}, '%')</if>
<if test="customData != null and customData != ''">and custom_data = #{customData}</if>
<if test="customSort != null ">and custom_sort = #{customSort}</if>
<if test="isFlag != null and isFlag != ''">and is_flag = #{isFlag}</if>

@ -26,6 +26,25 @@
<result property="planEndTime" column="plan_end_time"/>
<result property="stationName" column="station_name"/>
<result property="teamName" column="team_name"/>
<result property="planStatus" column="plan_status"/>
<result property="classes" column="classes"/>
<result property="processCode" column="process_code"/>
<collection property="prodPlanDetailList" javaType="java.util.List" resultMap="ProdPlanDetailResult"/>
</resultMap>
<resultMap id="ProdPlanDetailResult" type="ProdPlanDetail">
<result property="objId" column="d_obj_id"/>
<result property="planCode" column="d_plan_code"/>
<result property="materialCode" column="d_material_code"/>
<result property="planAmount" column="d_plan_amount"/>
<result property="completeAmount" column="d_complete_amount"/>
<result property="beginTime" column="d_begin_time"/>
<result property="endTime" column="d_end_time"/>
<result property="currentStaffId" column="d_current_staff_id"/>
<result property="nextStaffId" column="d_next_staff_id"/>
<result property="endFlag" column="d_end_flag"/>
<result property="classes" column="d_classes"/>
<result property="processCode" column="d_process_code"/>
</resultMap>
<sql id="selectProdPlanInfoVo">
@ -55,14 +74,57 @@
left join base_team_members btm on btm.team_code = ppi.team_code
</sql>
<sql id="selectProdPlanDetailVo">
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
</sql>
<select id="selectProdPlanInfoList" parameterType="ProdPlanInfo" resultMap="ProdPlanInfoResult">
<include refid="selectProdPlanInfoVo"/>
<where>
<if test="planCode != null and planCode != ''">and ppi.plan_code = #{planCode}</if>
<if test="orderCode != null and orderCode != ''">and ppi.order_code = #{orderCode}</if>
<if test="materialCode != null and materialCode != ''">and ppi.material_code = #{materialCode}</if>
<if test="materialName != null and materialName != ''">and ppi.material_name like concat('%', #{materialName},
'%')
<if test="materialName != null and materialName != ''">and ppi.material_name like concat('%',
#{materialName}, '%')
</if>
<if test="stationCode != null and stationCode != ''">and ppi.station_code = #{stationCode}</if>
<if test="deviceCode != null and deviceCode != ''">and ppi.device_code = #{deviceCode}</if>
@ -80,6 +142,9 @@
<if test="updatedTime != null ">and ppi.updated_time = #{updatedTime}</if>
<if test="planBeginTime != null ">and ppi.plan_begin_time = #{planBeginTime}</if>
<if test="planEndTime != null ">and ppi.plan_end_time = #{planEndTime}</if>
<if test="planStatus != null and planStatus != ''">and plan_status = #{planStatus}</if>
<if test="classes != null and classes != ''">and classes = #{classes}</if>
<if test="processCode != null and processCode != ''">and process_code = #{processCode}</if>
</where>
</select>
@ -109,6 +174,9 @@
<if test="updatedTime != null">updated_time,</if>
<if test="planBeginTime != null">plan_begin_time,</if>
<if test="planEndTime != null">plan_end_time,</if>
<if test="planStatus != null">plan_status,</if>
<if test="classes != null">classes,</if>
<if test="processCode != null">process_code,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="planCode != null and planCode != ''">#{planCode},</if>
@ -129,6 +197,9 @@
<if test="updatedTime != null">#{updatedTime},</if>
<if test="planBeginTime != null">#{planBeginTime},</if>
<if test="planEndTime != null">#{planEndTime},</if>
<if test="planStatus != null">#{planStatus},</if>
<if test="classes != null">#{classes},</if>
<if test="processCode != null">#{processCode},</if>
</trim>
</insert>
@ -153,6 +224,9 @@
<if test="updatedTime != null">updated_time = #{updatedTime},</if>
<if test="planBeginTime != null">plan_begin_time = #{planBeginTime},</if>
<if test="planEndTime != null">plan_end_time = #{planEndTime},</if>
<if test="planStatus != null">plan_status = #{planStatus},</if>
<if test="classes != null">classes = #{classes},</if>
<if test="processCode != null">process_code = #{processCode},</if>
</trim>
where obj_id = #{objId}
</update>
@ -169,4 +243,17 @@
#{objId}
</foreach>
</delete>
<select id="selectProdPlanAndDetailList" parameterType="ProdPlanInfo" resultMap="ProdPlanInfoResult">
<include refid="selectProdPlanDetailVo"/>
<where>
<if test="planCode != null and planCode != ''">and ppi.plan_code = #{planCode}</if>
<if test="orderCode != null and orderCode != ''">and ppi.order_code = #{orderCode}</if>
<if test="processCode != null and processCode != ''">and ppi.process_code = #{processCode}</if>
<if test="params.beginOrderDate != null and params.beginOrderDate != '' and params.endOrderDate != null and params.endOrderDate != ''">
and LEFT(CONVERT(VARCHAR(17), ppd.begin_time, 120), 10) between #{params.beginOrderDate} and #{params.endOrderDate}
</if>
</where>
</select>
</mapper>

@ -21,6 +21,8 @@
<result property="machineCode" column="machine_code"/>
<result property="staffName" column="staff_name"/>
<result property="teamName" column="team_name"/>
<result property="wageCoefficient" column="wage_coefficient"/>
<result property="passWord" column="pass_word"/>
</resultMap>
<sql id="selectRecordStaffCommuteVo">
@ -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 @@
<if test="isFlag != null and isFlag != ''">and rsc.is_flag = #{isFlag}</if>
<if test="machineCode != null and machineCode != ''">and rsc.machine_code = #{machineCode}</if>
</where>
order by start_work_time desc
</select>
<select id="selectRecordStaffCommuteByObjId" parameterType="Long" resultMap="RecordStaffCommuteResult">

@ -23,53 +23,60 @@
<result property="endDate" column="end_date"/>
<result property="endDate" column="end_date"/>
<result property="objectId" column="object_id"/>
<result property="staffName" column="staff_name"/>
<result property="teamName" column="team_name"/>
</resultMap>
<sql id="selectRecordStaffSalaryVo">
select obj_id,
id_card,
group_id,
event_date,
salary_category,
revenue_class,
revenue_amount,
revenue_reason,
fine_class,
fine_amount,
fine_reason,
create_time,
task_code,
salary_coefficient,
object_id,
begin_date,
end_date
from record_staff_salary
select rss.obj_id,
rss.id_card,
rss.group_id,
rss.event_date,
rss.salary_category,
rss.revenue_class,
rss.revenue_amount,
rss.revenue_reason,
rss.fine_class,
rss.fine_amount,
rss.fine_reason,
rss.create_time,
rss.task_code,
rss.salary_coefficient,
rss.object_id,
rss.begin_date,
rss.end_date,
bsi.staff_name,
btm.team_name
from record_staff_salary rss
left join base_staff_info bsi on rss.id_card = bsi.pass_word
left join base_team_members btm on rss.group_id = btm.team_code
</sql>
<select id="selectRecordStaffSalaryList" parameterType="RecordStaffSalary" resultMap="RecordStaffSalaryResult">
<include refid="selectRecordStaffSalaryVo"/>
<where>
<if test="idCard != null and idCard != ''">and id_card = #{idCard}</if>
<if test="groupId != null and groupId != ''">and group_id = #{groupId}</if>
<if test="idCard != null and idCard != ''">and rss.id_card = #{idCard}</if>
<if test="groupId != null and groupId != ''">and rss.group_id = #{groupId}</if>
<if test="params.beginEventDate != null and params.beginEventDate != '' and params.endEventDate != null and params.endEventDate != ''">
and event_date between #{params.beginEventDate} and #{params.endEventDate}
and rss.event_date between #{params.beginEventDate} and #{params.endEventDate}
</if>
<if test="salaryCategory != null and salaryCategory != ''">and salary_category = #{salaryCategory}</if>
<if test="revenueClass != null and revenueClass != ''">and revenue_class = #{revenueClass}</if>
<if test="revenueAmount != null ">and revenue_amount = #{revenueAmount}</if>
<if test="revenueReason != null and revenueReason != ''">and revenue_reason = #{revenueReason}</if>
<if test="fineClass != null and fineClass != ''">and fine_class = #{fineClass}</if>
<if test="fineAmount != null ">and fine_amount = #{fineAmount}</if>
<if test="fineReason != null and fineReason != ''">and fine_reason = #{fineReason}</if>
<if test="taskCode != null and taskCode != ''">and task_code = #{taskCode}</if>
<if test="salaryCoefficient != null ">and salary_coefficient = #{salaryCoefficient}</if>
<if test="objectId != null ">and object_id = #{objectId}</if>
<if test="salaryCategory != null and salaryCategory != ''">and rss.salary_category = #{salaryCategory}</if>
<if test="revenueClass != null and revenueClass != ''">and rss.revenue_class = #{revenueClass}</if>
<if test="revenueAmount != null ">and rss.revenue_amount = #{revenueAmount}</if>
<if test="revenueReason != null and revenueReason != ''">and rss.revenue_reason = #{revenueReason}</if>
<if test="fineClass != null and fineClass != ''">and rss.fine_class = #{fineClass}</if>
<if test="fineAmount != null ">and rss.fine_amount = #{fineAmount}</if>
<if test="fineReason != null and fineReason != ''">and rss.fine_reason = #{fineReason}</if>
<if test="taskCode != null and taskCode != ''">and rss.task_code = #{taskCode}</if>
<if test="salaryCoefficient != null ">and rss.salary_coefficient = #{salaryCoefficient}</if>
<if test="objectId != null ">and rss.object_id = #{objectId}</if>
</where>
order by rss.task_code desc, rss.group_id
</select>
<select id="selectRecordStaffSalaryByObjId" parameterType="Long" resultMap="RecordStaffSalaryResult">
<include refid="selectRecordStaffSalaryVo"/>
where obj_id = #{objId}
where rss.obj_id = #{objId}
</select>
<insert id="insertRecordStaffSalary" parameterType="RecordStaffSalary" useGeneratedKeys="true" keyProperty="objId">

Loading…
Cancel
Save