修改工单整理下达逻辑十事务代码

master
yangwl 3 years ago
parent 5a01c90837
commit a46ef2fa66

@ -4,11 +4,14 @@ import cn.hutool.core.date.DateUtil;
import com.foreverwin.mesnac.dispatch.model.ShopOrderRelease; import com.foreverwin.mesnac.dispatch.model.ShopOrderRelease;
import com.foreverwin.mesnac.dispatch.service.ShopOrderReleaseService; import com.foreverwin.mesnac.dispatch.service.ShopOrderReleaseService;
import com.foreverwin.mesnac.dispatch.service.impl.ShopOrderReleaseServiceImpl; import com.foreverwin.mesnac.dispatch.service.impl.ShopOrderReleaseServiceImpl;
import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.util.CommonMethods; import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.R; import com.foreverwin.modular.core.util.R;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -97,25 +100,33 @@ public class ShopOrderReleaseController {
@ResponseBody @ResponseBody
@PostMapping("shopOrderRelease") @PostMapping("shopOrderRelease")
public R shopOrderRelease(@RequestBody List<ShopOrderRelease> shopOrderList) { public R shopOrderRelease(@RequestBody List<ShopOrderRelease> shopOrderList) {
Boolean flag; Boolean flag = true;
StringBuffer message = new StringBuffer(); StringBuffer message = new StringBuffer();
try { String site = CommonMethods.getSite();
String site = CommonMethods.getSite(); String user = CommonMethods.getUser();
String user = CommonMethods.getUser(); if (shopOrderList == null || shopOrderList.size() <= 0) {
flag=shopOrderReleaseService.shopOrderRelease(site, user, message, shopOrderList); return R.failed("请至少选择一笔需要下达的工单");
} catch (Exception e) { // throw new BaseException("请至少选择一笔需要下达的工单");
return R.failed(e.getMessage());
} }
if (flag) { for (ShopOrderRelease shopOrderReleaseModel : shopOrderList) {
try {
shopOrderReleaseService.shopOrderRelease(site, user,message, shopOrderReleaseModel);
}catch (Exception e) {
flag = false;
message.append(e.getMessage());
}
}
if (flag){
message.insert(0, "工单下达成功"); message.insert(0, "工单下达成功");
return R.ok(message.toString()); return R.ok(message.toString());
} else { }else {
message.insert(0, "工单下达失败:"); message.insert(0, "工单下达失败:");
return R.failed(message.toString()); return R.failed(message.toString());
} }
// return R.ok();
} }

@ -60,9 +60,9 @@ public interface ShopOrderReleaseService {
* *
* @param site * @param site
* @param user * @param user
* @param shopOrderList * @param shopOrderRelease
*/ */
boolean shopOrderRelease(String site, String user,StringBuffer message, List<ShopOrderRelease> shopOrderList); Boolean shopOrderRelease(String site, String user,StringBuffer message, ShopOrderRelease shopOrderRelease);
/** /**
* - * -

@ -26,6 +26,7 @@ import com.sap.me.nonconformance.NCProductionServiceInterface;
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 org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -128,12 +129,8 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
customFieldsService.save(customFields); customFieldsService.save(customFields);
} }
} }
@Override @Override
public boolean shopOrderRelease(String site, String user,StringBuffer message, List<ShopOrderRelease> shopOrderList) { public Boolean shopOrderRelease(String site, String user,StringBuffer message,ShopOrderRelease shopOrderRelease) {
if (shopOrderList == null || shopOrderList.size() <= 0) {
throw new BaseException("请至少选择一笔需要下达的工单");
}
//工单标准服务 //工单标准服务
ShopOrderServiceInterface shopOrderServiceInterface = null; ShopOrderServiceInterface shopOrderServiceInterface = null;
try { try {
@ -141,112 +138,75 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
} catch (ClassNotFoundException ex) { } catch (ClassNotFoundException ex) {
throw BusinessException.build("获取ME标准服务失败"); throw BusinessException.build("获取ME标准服务失败");
} }
//查询工单信息
String shopOrder = shopOrderRelease.getShopOrder();
String shopOrderBo = shopOrderRelease.getShopOrderBo();
ShopOrder shopOrderModel = shopOrderService.getById(shopOrderBo);
int seq = 0; int seq = 0;
boolean flag = true; Boolean flag = true;
for (ShopOrderRelease shopOrderReleaseModel : shopOrderList) { if (shopOrderModel == null) {
//查询工单信息 throw new BaseException("工单[" + shopOrder + "]不存在");
String shopOrder = shopOrderReleaseModel.getShopOrder(); }
String shopOrderBo = shopOrderReleaseModel.getShopOrderBo();
ShopOrder shopOrderModel = shopOrderService.getById(shopOrderBo);
if (shopOrderModel == null) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工单[" + shopOrder + "]不存在");
continue;
// throw new BaseException("工单[" + shopOrder + "]不存在");
}
// 校验工单对应的工单BOM是否更新了组件数据 // 校验工单对应的工单BOM是否更新了组件数据
isUpdateBomComponent(shopOrderReleaseModel,false); isUpdateBomComponent(shopOrderRelease,false);
String statusBo = shopOrderModel.getStatusBo();
String statusBo = shopOrderModel.getStatusBo(); String routerBo = shopOrderModel.getPlannedRouterBo();
String routerBo = shopOrderModel.getPlannedRouterBo(); BigDecimal qtyToBuild = new BigDecimal(shopOrderModel.getQtyToBuild());
BigDecimal qtyToBuild = new BigDecimal(shopOrderModel.getQtyToBuild()); BigDecimal qtyReleased = new BigDecimal(shopOrderModel.getQtyReleased());
BigDecimal qtyReleased = new BigDecimal(shopOrderModel.getQtyReleased()); if (!"501".equals(StringUtils.trimHandle(statusBo))) {
if (!"501".equals(StringUtils.trimHandle(statusBo))) { throw new BaseException("工单[" +shopOrder+ "]不是可下达状态");
flag =false; }
message.append(seq++ % 3 == 0 ? "\n" : "| |"); if (qtyReleased.compareTo(qtyToBuild) >= 0) {
message.append("工单[" +shopOrder+ "]不是可下达状态"); throw new BaseException("工单[" +shopOrder+ "]没有可用下达数量");
continue; }
// throw new BaseException("工单[" +shopOrder+ "]不是可下达状态"); BigDecimal qtyToRelease = qtyToBuild.subtract(qtyReleased);
}
if (qtyReleased.compareTo(qtyToBuild) >= 0) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工单[" +shopOrder+ "]没有可用下达数量");
continue;
// throw new BaseException("工单[" +shopOrder+ "]没有可用下达数量");
}
BigDecimal qtyToRelease = qtyToBuild.subtract(qtyReleased);
//查询工艺路线
Router routerModel = routerService.getCurrentRouter(routerBo);
if (routerModel == null) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]不存在");
continue;
// throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]不存在");
}
routerBo = routerModel.getHandle();
//查询工艺路线详细
List<RouterDTO> routerList = shopOrderReleaseMapper.selectShopOrderRouter(routerBo);
if (routerList == null || routerList.size() <= 0) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]主数据不完整,请确认");
continue;
// throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]主数据不完整,请确认");
}
//工单下达 //查询工艺路线
ReleaseShopOrderResponse response = null; Router routerModel = routerService.getCurrentRouter(routerBo);
try { if (routerModel == null) {
ReleaseShopOrderRequest request = new ReleaseShopOrderRequest(); throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]不存在");
request.setShopOrderRef(shopOrderBo); }
request.setQuantityToRelease(qtyToRelease); routerBo = routerModel.getHandle();
response = shopOrderServiceInterface.releaseShopOrder(request);
} catch (Exception e) { //查询工艺路线详细
flag=false; List<RouterDTO> routerList = shopOrderReleaseMapper.selectShopOrderRouter(routerBo);
message.append(seq++ % 3 == 0 ? "\n" : "| |"); if (routerList == null || routerList.size() <= 0) {
message.append(e.getMessage()); throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]主数据不完整,请确认");
continue; }
//工单下达
ReleaseShopOrderResponse response = null;
ReleaseShopOrderRequest request = new ReleaseShopOrderRequest();
request.setShopOrderRef(shopOrderBo);
request.setQuantityToRelease(qtyToRelease);
try {
response = shopOrderServiceInterface.releaseShopOrder(request);
} catch (Exception e) {
throw new BaseException(ExceptionUtil.getExceptionMsg(e));
}
// ExceptionUtil.throwException(e); // ExceptionUtil.throwException(e);
}
if (response == null) { if (response == null) {
// flag =false;
// message.append(seq++ % 3 == 0 ? "\n" : "| |");
// message.append("工单下达失败:调用标准接口处理异常");
// continue;
throw new BaseException("工单下达失败:调用标准接口处理异常"); throw new BaseException("工单下达失败:调用标准接口处理异常");
} }
List<ReleasedSfc> sfcList = response.getReleasedSfcList(); List<ReleasedSfc> sfcList = response.getReleasedSfcList();
if (sfcList == null || sfcList.size() <= 0) { if (sfcList == null || sfcList.size() <= 0) {
throw new BaseException("工单下达失败:获取生产批次清单为空"); throw new BaseException("工单下达失败:获取生产批次清单为空");
} }
//组装派工数据 //组装派工数据
for (int i = 0 ; i < sfcList.size(); i++) { for (int i = 0 ; i < sfcList.size(); i++) {
ReleasedSfc releasedSfc = sfcList.get(i); ReleasedSfc releasedSfc = sfcList.get(i);
Sfc sfcModel = new Sfc(); Sfc sfcModel = new Sfc();
sfcModel.setSfc(releasedSfc.getSfc()); sfcModel.setSfc(releasedSfc.getSfc());
sfcModel.setQty(releasedSfc.getQuantity().doubleValue()); sfcModel.setQty(releasedSfc.getQuantity().doubleValue());
sfcDispatch(site, user, shopOrderModel, sfcModel, routerList); sfcDispatch(site, user, shopOrderModel, sfcModel, routerList);
}//end for sfcList
//修改工单的计划工作中心
//工单对应多个车间,所以工单不写计划工作中心
/**if (StringUtils.notBlank(workCenter)) {
ShopOrder updateShopOrder = new ShopOrder();
updateShopOrder.setHandle(shopOrderBo);
updateShopOrder.setPlannedWorkCenterBo(workCenterBo);
shopOrderService.updateById(updateShopOrder);
}*/
} }
return flag;//end for shopOrderList return flag;
} }

Loading…
Cancel
Save