Browse Source

自动计算工时提成

zhanglei
fanzongzhe 6 months ago
parent
commit
fa85263147
  1. 3
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillsitemrepairer/AsBusrepairBillSitemRepairer.java
  2. 53
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  3. 3
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.java
  4. 10
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.xml
  5. 4
      yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailService.java

3
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillsitemrepairer/AsBusrepairBillSitemRepairer.java

@ -5,6 +5,7 @@ import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -30,6 +31,8 @@ public class AsBusrepairBillSitemRepairer extends BaseEntity {
private String groupSid; private String groupSid;
@ApiModelProperty("所在班组名称") @ApiModelProperty("所在班组名称")
private String groupName; private String groupName;
@ApiModelProperty("维修提成")
private BigDecimal commission;

53
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -45,6 +45,7 @@ import com.yxt.anrui.as.biz.asbusrepairbillsitemrepairer.AsBusrepairBillSitemRep
import com.yxt.anrui.as.biz.asbusrepairbillvech.AsBusrepairBillVechService; import com.yxt.anrui.as.biz.asbusrepairbillvech.AsBusrepairBillVechService;
import com.yxt.anrui.as.biz.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailService; import com.yxt.anrui.as.biz.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailService;
import com.yxt.anrui.as.biz.asserviceitem.AsServiceItemService; import com.yxt.anrui.as.biz.asserviceitem.AsServiceItemService;
import com.yxt.anrui.as.biz.astechtitledetail.AsTechTitleDetailService;
import com.yxt.anrui.as.biz.astrackbill.AsTrackBillService; import com.yxt.anrui.as.biz.astrackbill.AsTrackBillService;
import com.yxt.anrui.as.feign.crm.CrmCustomerTemp; import com.yxt.anrui.as.feign.crm.CrmCustomerTemp;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign; import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign;
@ -150,6 +151,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
private AsBillSettelApplyService asBillSettelApplyService; private AsBillSettelApplyService asBillSettelApplyService;
@Autowired @Autowired
private AsBusrepairBillAitemspecService asBusrepairBillAitemspecService; private AsBusrepairBillAitemspecService asBusrepairBillAitemspecService;
@Autowired
private AsTechTitleDetailService asTechTitleDetailService;
/** /**
* 维修领料获取派工单 * 维修领料获取派工单
* *
@ -1438,6 +1442,54 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String sid = dto.getSid(); String sid = dto.getSid();
AsBusrepairBill asBusrepairBill = fetchBySid(sid); AsBusrepairBill asBusrepairBill = fetchBySid(sid);
if (asBusrepairBill.getNodeCode() == 5) { if (asBusrepairBill.getNodeCode() == 5) {
//计算工时提成分配维修人员
List<AsBusrepairBillSitem> sitems = asBusrepairBillSitemService.fetchByBillSid(sid);
if (sitems != null) {
if (!sitems.isEmpty()) {
for (AsBusrepairBillSitem sitem : sitems) {
BigDecimal examineHourPrice = BigDecimal.ZERO;
if (null != sitem.getExamineHourPrice()) {
examineHourPrice = sitem.getExamineHourPrice();
}
if (examineHourPrice.compareTo(BigDecimal.ZERO) > 0) {
String billSid = sitem.getBillSid();
String serviceItemSid = sitem.getServiceItemSid();
List<AsBusrepairBillSitemRepairer> repairers = asBusrepairBillSitemRepairerService.fetchByBillSid(billSid, serviceItemSid);
if (null != repairers) {
if (!repairers.isEmpty()) {
//查询权重之和
BigDecimal sum = BigDecimal.ZERO;
Map<String, BigDecimal> map = new HashMap<>();
for (AsBusrepairBillSitemRepairer repairer : repairers) {
String rSid = repairer.getSid();
String pSid = repairer.getRepairerSid();
BigDecimal weight = BigDecimal.ZERO;
String w = asTechTitleDetailService.selWeightByUserSid(pSid);
if (StringUtils.isNotBlank(w)) {
weight = new BigDecimal(w);
}
sum = sum.add(weight);
map.put(rSid,weight);
}
if (sum.compareTo(BigDecimal.ZERO) > 0) {
if (map.size() > 0) {
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
String mSid = entry.getKey();
BigDecimal mWeight = entry.getValue();
AsBusrepairBillSitemRepairer repairer = asBusrepairBillSitemRepairerService.fetchBySid(mSid);
BigDecimal finalWeight = mWeight.divide(sum, 2, BigDecimal.ROUND_HALF_UP).multiply(examineHourPrice);
repairer.setCommission(finalWeight);
asBusrepairBillSitemRepairerService.updateById(repairer);
}
}
}
}
}
}
}
}
}
if (asBusrepairBill.getSubject().equals("保内")) { if (asBusrepairBill.getSubject().equals("保内")) {
if (asBusrepairBill.getOldIsReclaim() != 1) { if (asBusrepairBill.getOldIsReclaim() != 1) {
return rb.setMsg("请先完成旧件入库,再进行操作!"); return rb.setMsg("请先完成旧件入库,再进行操作!");
@ -2127,6 +2179,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
public void updateOutFactory(String sid) { public void updateOutFactory(String sid) {
baseMapper.updateOutFactory(sid); baseMapper.updateOutFactory(sid);
} }
public PagerVo<GoodsReceiveVo> notConfirmList(PagerQuery<GoodsReceiveQuery> pagerQuery) { public PagerVo<GoodsReceiveVo> notConfirmList(PagerQuery<GoodsReceiveQuery> pagerQuery) {
GoodsReceiveQuery query = pagerQuery.getParams(); GoodsReceiveQuery query = pagerQuery.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>(); QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();

3
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.java

@ -31,6 +31,7 @@ import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleInit;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetail; import com.yxt.anrui.as.api.astechtitledetail.AsTechTitleDetail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import java.util.List; import java.util.List;
@ -58,4 +59,6 @@ public interface AsTechTitleDetailMapper extends BaseMapper<AsTechTitleDetail> {
List<AsTechTitleDetailDetailsVo> selByMainSid(String mainSid); List<AsTechTitleDetailDetailsVo> selByMainSid(String mainSid);
AsTechTitleInit selByTechSid(String titleSid); AsTechTitleInit selByTechSid(String titleSid);
String selWeightByUserSid(@Param("pSid") String pSid);
} }

10
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailMapper.xml

@ -34,4 +34,14 @@
) )
AND titleSid = #{titleSid}) AS a AND titleSid = #{titleSid}) AS a
</select> </select>
<select id="selWeightByUserSid" resultType="java.lang.String">
SELECT
t.weight
FROM
as_tech_title_detail AS t
LEFT JOIN as_tech_title_apply as ta ON t.mainSid = ta.sid
WHERE ta.nodeState = '已办结' and t.techSid = #{pSid}
ORDER BY t.weight DESC
LIMIT 1
</select>
</mapper> </mapper>

4
yxt-as/src/main/java/com/yxt/anrui/as/biz/astechtitledetail/AsTechTitleDetailService.java

@ -86,4 +86,8 @@ public class AsTechTitleDetailService extends MybatisBaseService<AsTechTitleDeta
public AsTechTitleInit selByTechSid(String titleSid) { public AsTechTitleInit selByTechSid(String titleSid) {
return baseMapper.selByTechSid(titleSid); return baseMapper.selByTechSid(titleSid);
} }
public String selWeightByUserSid(String pSid) {
return baseMapper.selWeightByUserSid(pSid);
}
} }
Loading…
Cancel
Save