|
@@ -1,7 +1,10 @@
|
|
|
package org.jeecg.modules.fbsWorkshopDispatchList.job;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
import org.jeecg.modules.appInterface.entity.FbsWorkingStatistics;
|
|
|
+import org.jeecg.modules.appInterface.service.IFbsWorkingStatisticsService;
|
|
|
import org.jeecg.modules.fbsMomOrder.entity.FbsMomOrderdetail;
|
|
|
import org.jeecg.modules.fbsMomOrder.service.IFbsMomOrderdetailService;
|
|
|
import org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList;
|
|
@@ -10,6 +13,7 @@ import org.quartz.Job;
|
|
|
import org.quartz.JobExecutionContext;
|
|
|
import org.quartz.JobExecutionException;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
@@ -23,12 +27,15 @@ import java.util.List;
|
|
|
* @Author: chenchuang
|
|
|
* @Date: 2021/1/7 10:36
|
|
|
*/
|
|
|
+@Transactional
|
|
|
public class FbsLatestCompletedQuantityUpdateJob implements Job {
|
|
|
@Autowired
|
|
|
IFbsWorkshopDispatchListService iFbsWorkshopDispatchListService;
|
|
|
|
|
|
@Autowired
|
|
|
IFbsMomOrderdetailService iFbsMomOrderdetailService;
|
|
|
+ @Autowired
|
|
|
+ IFbsWorkingStatisticsService iFbsWorkingStatisticsService;
|
|
|
|
|
|
@Override
|
|
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
|
@@ -54,34 +61,144 @@ public class FbsLatestCompletedQuantityUpdateJob implements Job {
|
|
|
//循环rep订单
|
|
|
for(FbsMomOrderdetail fbsMomOrderdetail:fbsMomOrderdetailList){
|
|
|
String modeCode=fbsMomOrderdetail.getMocode();//rep中的订单号
|
|
|
+ //派工数量
|
|
|
+ BigDecimal numberOfTasks=new BigDecimal("0.0");
|
|
|
+ if(fbsWorkshopDispatchList.getNumberOfTasks()!=null){
|
|
|
+ numberOfTasks=fbsWorkshopDispatchList.getNumberOfTasks();
|
|
|
+ }
|
|
|
//完工数量
|
|
|
BigDecimal latestCompletedQuantity=new BigDecimal("0.0");
|
|
|
- latestCompletedQuantity=getDecimal(Double.valueOf(fbsWorkshopDispatchList.getLatestCompletedQuantity()));
|
|
|
+ if(StringUtils.isNotBlank(fbsWorkshopDispatchList.getLatestCompletedQuantity())){
|
|
|
+ latestCompletedQuantity=getDecimal(fbsWorkshopDispatchList.getLatestCompletedQuantity());
|
|
|
+ }
|
|
|
//入库数量
|
|
|
BigDecimal qualifiedinqty=new BigDecimal("0.0");
|
|
|
- qualifiedinqty=getDecimal(Double.valueOf(String.valueOf(fbsMomOrderdetail.getQualifiedinqty())));
|
|
|
- if(code.equals(modeCode)&&latestCompletedQuantity.doubleValue()!=qualifiedinqty.doubleValue()){//找到对应的订单
|
|
|
+ if(StringUtils.isNotBlank(String.valueOf(fbsMomOrderdetail.getQualifiedinqty()))){
|
|
|
+ qualifiedinqty=getDecimal(String.valueOf(fbsMomOrderdetail.getQualifiedinqty()));
|
|
|
+ }
|
|
|
+ //找到对应需要更新的订单
|
|
|
+ if(code.equals(modeCode)&&latestCompletedQuantity.doubleValue()!=qualifiedinqty.doubleValue()){
|
|
|
Date date = new Date();//获取当前的日期
|
|
|
String str = df.format(date);//获取String类型的时间
|
|
|
//获取本次更新信息
|
|
|
- String memo="订单号:"+code+",更新前的派工数量:"+fbsWorkshopDispatchList.getLatestCompletedQuantity()+",更新后的派工数量:"+fbsMomOrderdetail.getQualifiedinqty()+",更新时间:"+str;
|
|
|
- String lamemo=fbsWorkshopDispatchList.getLatestCompletedQuantityU8Memo();
|
|
|
- if(lamemo==null){
|
|
|
- lamemo="";
|
|
|
- }
|
|
|
- fbsWorkshopDispatchList.setLatestCompletedQuantityU8Memo(lamemo+";"+memo);
|
|
|
- fbsWorkshopDispatchList.setLatestCompletedQuantity(qualifiedinqty.doubleValue()+"");
|
|
|
+ String memo="订单号:"+code+",更新前的完成数量:"+fbsWorkshopDispatchList.getLatestCompletedQuantity()+",更新后的完成数量:"+fbsMomOrderdetail.getQualifiedinqty();
|
|
|
|
|
|
- fbsWorkshopDispatchListListToUpdate.add(fbsWorkshopDispatchList);
|
|
|
+ memo+=",跟新前的状态:"+fbsWorkshopDispatchList.getState();
|
|
|
+ fbsWorkshopDispatchList.setLatestCompletedQuantity(qualifiedinqty.doubleValue()+"");
|
|
|
+ if(numberOfTasks.doubleValue()==qualifiedinqty.doubleValue()){//如果完工了更新状态完工
|
|
|
+ fbsWorkshopDispatchList.setState("3");
|
|
|
+ }
|
|
|
+ memo+=",更新后的状态:"+fbsWorkshopDispatchList.getState();
|
|
|
+ //更新所花时间
|
|
|
+ memo+=",更新前的完成时间:"+fbsWorkshopDispatchList.getManHoursCompleted();
|
|
|
+ BigDecimal manHoursCompleted=new BigDecimal("0.0");
|
|
|
+ if(StringUtils.isNotBlank(fbsWorkshopDispatchList.getManHoursCompleted())){
|
|
|
+ manHoursCompleted=getDecimal(fbsWorkshopDispatchList.getManHoursCompleted());
|
|
|
+ }
|
|
|
+ BigDecimal differNumber=new BigDecimal("0.0");//获取更新相差数量
|
|
|
+ BigDecimal differHour=new BigDecimal("0.0");//相差工时
|
|
|
+ ///////////////////////////////////////////////////////////////erp数量比派工多
|
|
|
if(qualifiedinqty.doubleValue()>latestCompletedQuantity.doubleValue()){
|
|
|
+ differNumber=qualifiedinqty.subtract(latestCompletedQuantity);//erp-派工
|
|
|
+ if(StringUtils.isNotBlank(fbsWorkshopDispatchList.getStandardWorkingHoursZ())){
|
|
|
+ //算出相差的时间
|
|
|
+ differHour=differNumber.multiply(getDecimal(fbsWorkshopDispatchList.getStandardWorkingHoursZ()));
|
|
|
+ //累计在完成工时上
|
|
|
+ fbsWorkshopDispatchList.setManHoursCompleted(manHoursCompleted.add(differHour)+"");
|
|
|
+ }
|
|
|
+ //新增扫码记录
|
|
|
FbsWorkingStatistics fbsWorkingStatistics=new FbsWorkingStatistics();
|
|
|
fbsWorkingStatistics.setPkWorkshopDispatchList(fbsWorkshopDispatchList.getId());
|
|
|
fbsWorkingStatistics.setPersonnelCode("更新");
|
|
|
fbsWorkingStatistics.setPersonnelName("更新");
|
|
|
fbsWorkingStatistics.setMaterielCode(fbsWorkshopDispatchList.getProductId());
|
|
|
fbsWorkingStatistics.setPersonnelName(fbsWorkshopDispatchList.getProduct());
|
|
|
+ fbsWorkingStatistics.setMaterielCode(fbsWorkshopDispatchList.getProductId());
|
|
|
+ fbsWorkingStatistics.setMaterielName(fbsWorkshopDispatchList.getProduct());
|
|
|
+ fbsWorkingStatistics.setStartDate(fbsWorkshopDispatchList.getPlannedStartTime());
|
|
|
+ fbsWorkingStatistics.setEndDate(fbsWorkshopDispatchList.getPlannedEndTime());
|
|
|
+ fbsWorkingStatistics.setFirstTime(new Date());
|
|
|
+ fbsWorkingStatistics.setFinalTime(new Date());
|
|
|
+ fbsWorkingStatistics.setFinalInfo("实时报工");
|
|
|
+ fbsWorkingStatistics.setFinalState("3");
|
|
|
+ fbsWorkingStatistics.setWorkingHours(differHour);
|
|
|
+ fbsWorkingStatistics.setDelFlag("0");
|
|
|
+ fbsWorkingStatistics.setOrderNumber(fbsWorkshopDispatchList.getProductionOrderNumberName());
|
|
|
+ fbsWorkingStatistics.setQualifiedNumber(differNumber.doubleValue()+"");
|
|
|
+ fbsWorkingStatistics.setState("1");
|
|
|
+ iFbsWorkingStatisticsService.save(fbsWorkingStatistics);
|
|
|
+ }
|
|
|
+ ///////////////////////////////////////////////////////////////////派工数量比erp
|
|
|
+ if(qualifiedinqty.doubleValue()<latestCompletedQuantity.doubleValue()){
|
|
|
+ differNumber=latestCompletedQuantity.subtract(qualifiedinqty);//派工-erp
|
|
|
+ if(StringUtils.isNotBlank(fbsWorkshopDispatchList.getStandardWorkingHoursZ())){
|
|
|
+ //算出相差的时间
|
|
|
+ differHour=differNumber.multiply(getDecimal(fbsWorkshopDispatchList.getStandardWorkingHoursZ()));
|
|
|
+ //在完成工时上减掉
|
|
|
+ fbsWorkshopDispatchList.setManHoursCompleted(manHoursCompleted.subtract(differHour)+"");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<FbsWorkingStatistics> fbsWorkingStatisticsLambdaQueryWrapper=new LambdaQueryWrapper<>();
|
|
|
+ fbsWorkingStatisticsLambdaQueryWrapper.eq(FbsWorkingStatistics::getDelFlag,"0");
|
|
|
+ fbsWorkingStatisticsLambdaQueryWrapper.eq(FbsWorkingStatistics::getPkWorkshopDispatchList,fbsWorkshopDispatchList.getId());
|
|
|
+ fbsWorkingStatisticsLambdaQueryWrapper.orderByAsc(FbsWorkingStatistics::getFinalTime);
|
|
|
+ List<FbsWorkingStatistics> fbsWorkingStatisticsList=iFbsWorkingStatisticsService.list(fbsWorkingStatisticsLambdaQueryWrapper);
|
|
|
+ if(fbsWorkingStatisticsList!=null){
|
|
|
+ BigDecimal differHourS=new BigDecimal("0.0");//相差时间
|
|
|
+ differHourS=differHourS.add(differHour);
|
|
|
+ BigDecimal differNumberS=new BigDecimal("0.0");//相差数量
|
|
|
+ differNumberS=differNumberS.add(differNumber);
|
|
|
+ for(FbsWorkingStatistics fbsWorkingStatistics:fbsWorkingStatisticsList){
|
|
|
+ String statisticMemo="更新前:时间:"+fbsWorkingStatistics.getWorkingHours()+"-数量:"+fbsWorkingStatistics.getQualifiedNumber();
|
|
|
+ //创建扫码修改对象
|
|
|
+ FbsWorkingStatistics fbsWorkingStatisticsUpdate=new FbsWorkingStatistics();
|
|
|
+ fbsWorkingStatisticsUpdate.setId(fbsWorkingStatistics.getId());
|
|
|
+ //扫码的工时
|
|
|
+ BigDecimal workingHours=new BigDecimal("0.0");
|
|
|
+ if(fbsWorkingStatistics.getWorkingHours()!=null){
|
|
|
+ workingHours=fbsWorkingStatistics.getWorkingHours();
|
|
|
+ }
|
|
|
+ //扫码的数量
|
|
|
+ BigDecimal qualifiedNumber=new BigDecimal("0.0");
|
|
|
+ if(StringUtils.isNotBlank(fbsWorkingStatistics.getQualifiedNumber())){
|
|
|
+ qualifiedNumber=getDecimal(fbsWorkingStatistics.getQualifiedNumber());
|
|
|
+ }
|
|
|
+ //如果还有相差时间没减掉则继续扫码记录减工时
|
|
|
+ if(differHourS.doubleValue()>0.0){
|
|
|
+ //如果相差时间比当前扫码记录时间还大 则直接扫码记录工时变0
|
|
|
+ if(differHourS.doubleValue()>workingHours.doubleValue()){
|
|
|
+ fbsWorkingStatisticsUpdate.setWorkingHours(new BigDecimal("0.0"));
|
|
|
+ differHourS.subtract(workingHours);//相差时间减去扫码记录时间
|
|
|
+ }else {//相差时间比扫码时间小 则扫码时间去除相差时间 时间更新完毕
|
|
|
+ fbsWorkingStatisticsUpdate.setWorkingHours(workingHours.subtract(differHourS));
|
|
|
+ differHourS=new BigDecimal("0.0");//相差时间清零
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果还有相差数量没减掉则继续扫码记录减工时
|
|
|
+ if(differNumberS.doubleValue()>0.0){
|
|
|
+ //如果相差数量比当前扫码记录数量还大 则直接扫码记录数量变0
|
|
|
+ if(differNumberS.doubleValue()>qualifiedNumber.doubleValue()){
|
|
|
+ fbsWorkingStatisticsUpdate.setQualifiedNumber("0");
|
|
|
+ differNumberS.subtract(qualifiedNumber);//相差时间减去扫码记录时间
|
|
|
+ }else {//相差数量比扫码数量小 则扫码数量去除相差数量 数量更新完毕
|
|
|
+ fbsWorkingStatisticsUpdate.setQualifiedNumber((qualifiedNumber.subtract(differNumberS).doubleValue())+"");
|
|
|
+ differNumberS=new BigDecimal("0.0");//相差数量清零
|
|
|
+ }
|
|
|
+ }
|
|
|
+ statisticMemo+=";更新后:时间:"+fbsWorkingStatisticsUpdate.getWorkingHours()+"-数量:"+fbsWorkingStatisticsUpdate.getQualifiedNumber()+"时间"+str;
|
|
|
+ fbsWorkingStatisticsUpdate.setRefuseInfo(statisticMemo);
|
|
|
+ iFbsWorkingStatisticsService.updateById(fbsWorkingStatisticsUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+ memo+=",更新后的完成时间:"+fbsWorkshopDispatchList.getManHoursCompleted()+",更新时间:"+str;
|
|
|
+ //更新备注
|
|
|
+ String lamemo=fbsWorkshopDispatchList.getLatestCompletedQuantityU8Memo();
|
|
|
+ if(lamemo==null){
|
|
|
+ lamemo="";
|
|
|
+ }
|
|
|
+ fbsWorkshopDispatchList.setLatestCompletedQuantityU8Memo(lamemo+";"+memo);
|
|
|
+ fbsWorkshopDispatchListListToUpdate.add(fbsWorkshopDispatchList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -95,7 +212,7 @@ public class FbsLatestCompletedQuantityUpdateJob implements Job {
|
|
|
|
|
|
|
|
|
|
|
|
- public BigDecimal getDecimal(Double d){
|
|
|
+ public BigDecimal getDecimal(String d){
|
|
|
BigDecimal decimal= new BigDecimal(d);
|
|
|
return decimal;
|
|
|
}
|