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

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.service.ShopOrderReleaseService;
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.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 java.text.SimpleDateFormat;
@ -97,16 +100,25 @@ public class ShopOrderReleaseController {
@ResponseBody
@PostMapping("shopOrderRelease")
public R shopOrderRelease(@RequestBody List<ShopOrderRelease> shopOrderList) {
Boolean flag;
Boolean flag = true;
StringBuffer message = new StringBuffer();
try {
String site = CommonMethods.getSite();
String user = CommonMethods.getUser();
flag=shopOrderReleaseService.shopOrderRelease(site, user, message, shopOrderList);
if (shopOrderList == null || shopOrderList.size() <= 0) {
return R.failed("请至少选择一笔需要下达的工单");
// throw new BaseException("请至少选择一笔需要下达的工单");
}
for (ShopOrderRelease shopOrderReleaseModel : shopOrderList) {
try {
shopOrderReleaseService.shopOrderRelease(site, user,message, shopOrderReleaseModel);
}catch (Exception e) {
return R.failed(e.getMessage());
flag = false;
message.append(e.getMessage());
}
}
if (flag){
message.insert(0, "工单下达成功");
return R.ok(message.toString());
@ -115,7 +127,6 @@ public class ShopOrderReleaseController {
return R.failed(message.toString());
}
// return R.ok();
}

@ -60,9 +60,9 @@ public interface ShopOrderReleaseService {
*
* @param site
* @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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@ -128,12 +129,8 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
customFieldsService.save(customFields);
}
}
@Override
public boolean shopOrderRelease(String site, String user,StringBuffer message, List<ShopOrderRelease> shopOrderList) {
if (shopOrderList == null || shopOrderList.size() <= 0) {
throw new BaseException("请至少选择一笔需要下达的工单");
}
public Boolean shopOrderRelease(String site, String user,StringBuffer message,ShopOrderRelease shopOrderRelease) {
//工单标准服务
ShopOrderServiceInterface shopOrderServiceInterface = null;
try {
@ -141,84 +138,57 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
} catch (ClassNotFoundException ex) {
throw BusinessException.build("获取ME标准服务失败");
}
int seq = 0;
boolean flag = true;
for (ShopOrderRelease shopOrderReleaseModel : shopOrderList) {
//查询工单信息
String shopOrder = shopOrderReleaseModel.getShopOrder();
String shopOrderBo = shopOrderReleaseModel.getShopOrderBo();
String shopOrder = shopOrderRelease.getShopOrder();
String shopOrderBo = shopOrderRelease.getShopOrderBo();
ShopOrder shopOrderModel = shopOrderService.getById(shopOrderBo);
int seq = 0;
Boolean flag = true;
if (shopOrderModel == null) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工单[" + shopOrder + "]不存在");
continue;
// throw new BaseException("工单[" + shopOrder + "]不存在");
throw new BaseException("工单[" + shopOrder + "]不存在");
}
// 校验工单对应的工单BOM是否更新了组件数据
isUpdateBomComponent(shopOrderReleaseModel,false);
isUpdateBomComponent(shopOrderRelease,false);
String statusBo = shopOrderModel.getStatusBo();
String routerBo = shopOrderModel.getPlannedRouterBo();
BigDecimal qtyToBuild = new BigDecimal(shopOrderModel.getQtyToBuild());
BigDecimal qtyReleased = new BigDecimal(shopOrderModel.getQtyReleased());
if (!"501".equals(StringUtils.trimHandle(statusBo))) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工单[" +shopOrder+ "]不是可下达状态");
continue;
// throw new BaseException("工单[" +shopOrder+ "]不是可下达状态");
throw new BaseException("工单[" +shopOrder+ "]不是可下达状态");
}
if (qtyReleased.compareTo(qtyToBuild) >= 0) {
flag =false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append("工单[" +shopOrder+ "]没有可用下达数量");
continue;
// throw new BaseException("工单[" +shopOrder+ "]没有可用下达数量");
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)+ "]不存在");
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)+ "]主数据不完整,请确认");
throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]主数据不完整,请确认");
}
//工单下达
ReleaseShopOrderResponse response = null;
try {
ReleaseShopOrderRequest request = new ReleaseShopOrderRequest();
request.setShopOrderRef(shopOrderBo);
request.setQuantityToRelease(qtyToRelease);
try {
response = shopOrderServiceInterface.releaseShopOrder(request);
} catch (Exception e) {
flag=false;
message.append(seq++ % 3 == 0 ? "\n" : "| |");
message.append(e.getMessage());
continue;
// ExceptionUtil.throwException(e);
throw new BaseException(ExceptionUtil.getExceptionMsg(e));
}
// ExceptionUtil.throwException(e);
if (response == null) {
// flag =false;
// message.append(seq++ % 3 == 0 ? "\n" : "| |");
// message.append("工单下达失败:调用标准接口处理异常");
// continue;
throw new BaseException("工单下达失败:调用标准接口处理异常");
}
@ -235,18 +205,8 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
sfcModel.setSfc(releasedSfc.getSfc());
sfcModel.setQty(releasedSfc.getQuantity().doubleValue());
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