修改表字段

tags/yfai-mes-ext-v1.0
LML丶 1 year ago
parent 91fd5c4d91
commit 9a76f2d9bc

@ -0,0 +1,20 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import java.util.List;
/**
* @Description:
* @CreateDate 2024/04/16
* @Author mingliang.li
*/
public interface IMesLoadingListDetailService extends IBaseMesService<MesLoadingListDetail> {
ListPager<MesLoadingListDetailModel> queryLoadingListDetail(MesLoadingListDetail detail, Pager pager);
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingList;
/**
* @Description:
* @CreateDate 2024/04/16
* @Author mingliang.li
*/
public interface IMesLoadingListService extends IBaseMesService<MesLoadingList> {
}

@ -1,13 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrderDetail;
/**
* @Description:
* @CreateDate 2024/04/16
* @Author mingliang.li
*/
public interface IMesLoadingVehiclesOrderDetailService extends IBaseMesService<MesLoadingVehiclesOrderDetail> {
}

@ -1,13 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrder;
/**
* @Description:
* @CreateDate 2024/04/16
* @Author mingliang.li
*/
public interface IMesLoadingVehiclesOrderService extends IBaseMesService<MesLoadingVehiclesOrder> {
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesLocationConfig;
/**
* @Description:
* @CreateDate 2024/04/16
* @Author mingliang.li
*/
public interface IMesLocationConfigService extends IBaseMesService<MesLocationConfig> {
}

@ -5,8 +5,6 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagementDetail;
import java.util.List;
/**
* @Description:
* @CreateDate 2024/04/16

@ -1,7 +1,6 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
@ -14,5 +13,8 @@ public interface IMesShippingOrderManagementService extends IBaseMesService<MesS
@ApiOperation(value = "发运", notes = "发运")
public void saveShipping(MesShippingOrderManagement shippingOrderManagement);
@ApiOperation(value = "关闭发运单", notes = "关闭发运单")
public void saveShippingClose(MesShippingOrderManagement shippingOrderManagement);
}

@ -1,8 +1,7 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrder;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingList;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -11,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrder")
public class MesLoadingVehiclesOrderController extends BaseMesController<MesLoadingVehiclesOrder> {
public class MesLoadingListController extends BaseMesController<MesLoadingList> {
}

@ -0,0 +1,47 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListDetailService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(description = "装车单明细页面")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrderDetail")
public class MesLoadingListDetailController extends BaseMesController<MesLoadingListDetail> {
@Autowired
private IMesLoadingListDetailService detailService;
@PostMapping(value = "/query-Detail")
@ApiOperation(value = "查询装车单明细")
public ResultBean getLoadingListDetail(MesLoadingListDetail detail, Pager pager) {
try {
detail.setOrganizeCode(AuthUtil.getOrganizeCode());
ListPager<MesLoadingListDetailModel> mesList = detailService.queryLoadingListDetail(detail, pager);
return ResultBean.success("查询成功").setListPager(mesList)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -1,16 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrderDetail;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(description = "装车单明细页面")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLoadingVehiclesOrderDetail")
public class MesLoadingVehiclesOrderDetailController extends BaseMesController<MesLoadingVehiclesOrderDetail> {
}

@ -0,0 +1,33 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesLocationConfig;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
@Api(description = "图片位置配置页面")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLocationConfig")
public class MesLocationConfigController extends BaseMesController<MesLocationConfig> {
}

@ -3,11 +3,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
@ -66,4 +66,37 @@ public class MesShippingOrderManagementController extends BaseMesController<MesS
}
}
@PostMapping(value = "/close")
@ApiOperation(value = "关闭发运单")
public ResultBean<MesShippingOrderManagement> saveShippingClose(@RequestBody List<MesShippingOrderManagement> beanList) {
try {
// List<String> orderNoList =
// beanList.stream().filter(k -> k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() &&
// k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()).map(k -> k.getShippingCode()).collect(Collectors.toList());
//
// if (!CollectionUtils.isEmpty(orderNoList)) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】发运单状态不是【%s】或【%s】请选择状态为【%s】或【%s】的数据", orderNoList, MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getDescription(),
// MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getDescription(),
// MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getDescription())
// .build();
// }
//新增初始化
for (MesShippingOrderManagement orderManagement : beanList) {
orderManagement.setOrganizeCode(AuthUtilExt.getOrganizeCode());
shippingOrderManagementService.saveShippingClose(orderManagement);
}
return ResultBean.success("操作成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException e) {
return ResultBean.fail(e).build();
} catch (Exception e) {
return ResultBean.fail(e);
}
}
}

@ -0,0 +1,24 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description : SAP
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/5/7 15:13
* @Modify:
**/
public interface IMesLoadingListDetailDao {
@ApiOperation(value = "分页查询装车单明细", notes = "分页查询装车单明细")
List<MesLoadingListDetailModel> queryLoadingListDetailModel(MesLoadingListDetail detail, Pager pager);
@ApiOperation(value = "分页查询装车单明细", notes = "分页查询装车单明细")
int queryLoadingListDetailModelCount(MesLoadingListDetail detail);
}

@ -0,0 +1,126 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesLoadingListDetailDao;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :SAP
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/5/6 15:52
* @Modify:
**/
@Service
@Slf4j
public class MesLoadingListDetailDaoImpl implements IMesLoadingListDetailDao {
@Autowired
private EntityManager entityManager;
@Override
public List<MesLoadingListDetailModel> queryLoadingListDetailModel(MesLoadingListDetail detail, Pager pager) {
StringBuffer hql = new StringBuffer("select mll.order_code ,mll.cust_name ,mll.cust_organize_name ,mll.shipping_group_name , ");
hql.append(" mlld.status , mll.truck_no ,mll.weather , ms.shipping_code ,ms.start_scan_time ,ms.end_scan_time ,ms.status as shipStatus ");
hql.append(" from mes_loading_list as mll");
hql.append(" inner join mes_loading_list_detail as mlld on mll.id = mlld.pid");
hql.append(" and mll.organize_code = mlld.organize_code and mll.is_deleted = mlld.is_deleted and mll.is_valid = mlld.is_valid ");
hql.append(" inner join mes_shipping as ms on mlld.shipping_id = ms.pid ");
hql.append(" and mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid ");
hql.append(" where mll.organize_code = :organizeCode ");
hql.append(" and mll.is_deleted = :isDeleted ");
hql.append(" and mll.is_valid = :isValid ");
hql.append(" and mlld.pid = :pid ");
if (!StringUtils.isEmpty(detail.getShippingCode())) {
hql.append(" and mlld.shipping_code = :shippingCode ");
}
Query query = entityManager.createNativeQuery(hql.toString());
query.setParameter("organizeCode", detail.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("pid", detail.getPid());
if (!StringUtils.isEmpty(detail.getShippingCode())) {
query.setParameter("shippingCode", detail.getShippingCode());
}
List list = query.getResultList();
List<MesLoadingListDetailModel> modelList = new ArrayList<>();
for (Object result : list) {
Object[] cells = (Object[]) result;
MesLoadingListDetailModel model = new MesLoadingListDetailModel();
model.setOrderCode(StringUtils.isEmpty(cells[0]) ? "" : String.valueOf(cells[0]));
model.setCustName(StringUtils.isEmpty(cells[1]) ? "" : String.valueOf(cells[1]));
model.setCustOrganizeName(StringUtils.isEmpty(cells[2]) ? "" : String.valueOf(cells[2]));
model.setShippingGroupName(StringUtils.isEmpty(cells[3]) ? "" : String.valueOf(cells[3]));
model.setStatus(StringUtils.isEmpty(cells[4]) ? 0 : Integer.parseInt(String.valueOf(cells[4])));
model.setTruckNo(StringUtils.isEmpty(cells[5]) ? "" : String.valueOf(cells[5]));
model.setWeather(StringUtils.isEmpty(cells[6]) ? 0 : Integer.parseInt(String.valueOf(cells[6])));
model.setShippingCode(StringUtils.isEmpty(cells[7]) ? "" : String.valueOf(cells[7]));
model.setStartScanTime(StringUtils.isEmpty(cells[8]) ? "" : String.valueOf(cells[8]));
model.setEndScanTime(StringUtils.isEmpty(cells[9]) ? "" : String.valueOf(cells[9]));
model.setShippingStatus(StringUtils.isEmpty(cells[10]) ? 0 : Integer.parseInt(String.valueOf(cells[10])));
modelList.add(model);
}
return modelList;
}
@Override
public int queryLoadingListDetailModelCount(MesLoadingListDetail detail) {
StringBuffer hql = new StringBuffer("select count(1) ");
hql.append(" from mes_loading_list as mll");
hql.append(" inner join mes_loading_list_detail as mlld on mll.id = mlld.pid");
hql.append(" and mll.organize_code = mlld.organize_code and mll.is_deleted = mlld.is_deleted and mll.is_valid = mlld.is_valid ");
hql.append(" inner join mes_shipping as ms on mlld.shipping_id = ms.pid ");
hql.append(" and mlld.organize_code = ms.organize_code and mlld.is_deleted = ms.is_deleted and mlld.is_valid = ms.is_valid ");
hql.append(" where mll.organize_code = :organizeCode ");
hql.append(" and mll.is_deleted = :isDeleted ");
hql.append(" and mll.is_valid = :isValid ");
hql.append(" and mlld.pid = :pid ");
if (!StringUtils.isEmpty(detail.getShippingCode())) {
hql.append(" and mlld.shipping_code = :shippingCode ");
}
Query query = entityManager.createNativeQuery(hql.toString());
query.setParameter("organizeCode", detail.getOrganizeCode());
query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter("pid", detail.getPid());
if (!StringUtils.isEmpty(detail.getShippingCode())) {
query.setParameter("shippingCode", detail.getShippingCode());
}
List list = query.getResultList();
if (CollectionUtils.isEmpty(list)) {
return 0;
}
return list.size();
}
}

@ -12,6 +12,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrderPart;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -52,6 +53,7 @@ public abstract class BaseMesService<T extends BaseBean> implements IBaseMesServ
@Override
public ListPager<T> queryPager(T bean, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode(), bean.getIsValid());
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
setPackQueryBean(bean, packBean);
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
List<T> list = baseRDao.findByHqlWherePage(packBean, pager);

@ -11,6 +11,8 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class MesCustomerDockService extends BaseMesService<MesCustomerDock> implements IMesCustomerDockService {
@ -58,4 +60,27 @@ public class MesCustomerDockService extends BaseMesService<MesCustomerDock> impl
DdlPreparedPack.getNumEqualPack(bean.getCustDockType(), "custDockType", packBean);
}
@Override
public void validateImport(List<MesCustomerDock> beanList) {
for (MesCustomerDock bean : beanList) {
// 数据校验
ValidatorBean.checkNotNull(bean.getCustCode(), "客户代码不能为空");
ValidatorBean.checkNotNull(bean.getCustDockCode(), "客户道口代码不能为空");
ValidatorBean.checkNotNull(bean.getCustDockDesc(), "客户道口描述不能为空");
//todo
//查询数据库校验字段,待确定
// DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
// MesCustomer customer = customerRepository.getByProperty(packBean);
// if (StringUtils.isEmpty(customer)) {
// throw new ImppBusiException(String.format("客户代码【%s】不存在", bean.getCustCode()));
// }
//
// bean.setCustName(customer.getCustName());
}
}
}

@ -0,0 +1,30 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListDetailService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesLoadingListDetailDao;
import cn.estsh.i3plus.ext.mes.pojo.model.MesLoadingListDetailModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class MesLoadingListDetailService extends BaseMesService<MesLoadingListDetail> implements IMesLoadingListDetailService {
@Autowired
private IMesLoadingListDetailDao detailDao;
@Override
public ListPager<MesLoadingListDetailModel> queryLoadingListDetail(MesLoadingListDetail detail, Pager pager) {
pager = PagerHelper.getPager(pager, detailDao.queryLoadingListDetailModelCount(detail));
List<MesLoadingListDetailModel> list = detailDao.queryLoadingListDetailModel(detail, pager);
return new ListPager<>(list, pager);
}
}

@ -1,16 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingVehiclesOrderService;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingListService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrder;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrderDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingList;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingListDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesShippingOrderManagement;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -29,33 +31,34 @@ import java.util.List;
@Service
@Slf4j
public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVehiclesOrder> implements IMesLoadingVehiclesOrderService {
public class MesLoadingListService extends BaseMesService<MesLoadingList> implements IMesLoadingListService {
@Autowired
private MesLoadingVehiclesOrderDetailService detailService;
private MesLoadingListDetailService detailService;
@Autowired
private MesPartShippingGroupRepository partShippingGroupRepository;
@Autowired
private MesShippingOrderManagementRepository shippingOrderManagementRepository;
@Autowired
private ISyncFuncService syncFuncService;
@Override
public MesLoadingVehiclesOrder insert(MesLoadingVehiclesOrder bean) {
public MesLoadingList insert(MesLoadingList bean) {
//插入前构造并校验数据
onInsertBean(bean);
MesShippingOrderManagement shippingOrderManagement = bean.getShippingOrderNoList().get(0);
DdlPackBean partShipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingGroupNo(), "shippingGroupNo", partShipGroupPackBean);
MesPartShippingGroup partShippingGroup = partShippingGroupRepository.getByProperty(partShipGroupPackBean);
MesPartShippingGroup partShippingGroup = partShippingGroupRepository.getById(shippingOrderManagement.getPartShippingId());
if (StringUtils.isEmpty(partShippingGroup)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组数据为空请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组数据为空请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
@ -63,14 +66,14 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
if (partShippingGroup.getIsLoading() == MesCommonConstant.FALSE_INTEGER) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否有装车配置为否则不需要生成装车单请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否有装车配置为否则不需要生成装车单请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
@ -78,14 +81,14 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
if (StringUtils.isEmpty(partShippingGroup.getIsEnableMemory()) || partShippingGroup.getIsEnableMemory() == 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
@ -94,48 +97,51 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组配置是否逆转为【是】逆转数不能小于1请检查数据", shippingOrderManagement.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组配置是否逆转为【是】逆转数不能小于1请检查数据", shippingOrderManagement.getShippingCode())
.build();
}
//生成工单号
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.LOADING_LIST_CODE);
// genSerialNoModel.setPartNo(bean.getPartNo());
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
bean.setOrderCode(resultList.get(0));
bean.setIsFirstInstall(partShippingGroup.getIsFirstInstall());
bean.setIsEnableMemory(partShippingGroup.getIsEnableMemory());
bean.setSeq(bean.getOrderCode());
bean.setStatus(MesExtEnumUtil.LOADING_ORDER_STATUS.CREATE.getValue());
String customerCode = bean.getShippingOrderNoList().get(0).getCustCode();
String customerName = bean.getShippingOrderNoList().get(0).getCustName();
String customerOrganizeCode = bean.getShippingOrderNoList().get(0).getCustOrganizeCode();
String customerOrganizeName = bean.getShippingOrderNoList().get(0).getCustOrganizeName();
bean.setCustCode(customerCode);
bean.setCustName(customerName);
bean.setCustOrganizeCode(customerOrganizeCode);
bean.setCustOrganizeName(customerOrganizeName);
bean = baseRDao.insert(bean);
List<MesLoadingVehiclesOrderDetail> detailList = new ArrayList<>();
MesLoadingVehiclesOrder finalBean = bean;
List<MesLoadingListDetail> detailList = new ArrayList<>();
MesLoadingList finalBean = bean;
List<String> orderNoList = new ArrayList<>();
bean.getShippingOrderNoList().forEach(k -> {
MesLoadingVehiclesOrderDetail detail = new MesLoadingVehiclesOrderDetail();
MesLoadingListDetail detail = new MesLoadingListDetail();
k.setOrderCode(finalBean.getOrderCode());
orderNoList.add(k.getShippingCode());
BeanUtils.copyProperties(k, detail, "id");
detail.setLoadingOrderNo(finalBean.getLoadingOrderNo());
detail.setWeatherCondition(finalBean.getWeatherCondition());
detail.setStatus(MesExtEnumUtil.LOADING_DETAIL_ORDER_STATUS.CREATE.getValue());
detail.setPid(finalBean.getId());
detail.setShippingId(k.getId());
ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName());
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
detailList.add(detail);
});
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getInPackList(orderNoList, "shippingOrderNo", orderPackBean);
List<MesShippingOrderManagement> orderManagementList = shippingOrderManagementRepository.findByHqlWhere(orderPackBean);
orderManagementList.forEach(k -> k.setLoadingOrderNo(finalBean.getLoadingOrderNo()));
String customerCode = bean.getShippingOrderNoList().get(0).getCustCode();
String customerName = bean.getShippingOrderNoList().get(0).getCustName();
String customerOrganizeCode = bean.getShippingOrderNoList().get(0).getCustOrganizeCode();
String customerOrganizeName = bean.getShippingOrderNoList().get(0).getCustomerOrganizeName();
bean.setSeq(bean.getLoadingOrderNo());
bean.setStatus(MesExtEnumUtil.LOADING_ORDER_STATUS.CREATE.getValue());
bean.setCustomerCode(customerCode);
bean.setCustomerName(customerName);
bean.setCustomerOrganizeCode(customerOrganizeCode);
bean.setCustomerOrganizeName(customerOrganizeName);
shippingOrderManagementRepository.saveAll(orderManagementList);
shippingOrderManagementRepository.saveAll(bean.getShippingOrderNoList());
detailService.insertBatch(detailList);
bean = baseRDao.insert(bean);
return bean;
}
@ -143,11 +149,11 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
public void deleteWeaklyByIds(Long[] ids, String userName) {
for (Long id : ids) {
MesLoadingVehiclesOrder bean = baseRDao.getById(id);
MesLoadingList bean = baseRDao.getById(id);
if (StringUtils.isEmpty(bean)) continue;
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getLoadingOrderNo(), "loadingOrderNo", detailPackBean);
List<MesLoadingVehiclesOrderDetail> detailDeleteList = detailService.findAll(detailPackBean);
DdlPreparedPack.getStringEqualPack(bean.getOrderCode(), "orderCode", detailPackBean);
List<MesLoadingListDetail> detailDeleteList = detailService.findAll(detailPackBean);
detailDeleteList.forEach(k -> {
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
@ -161,20 +167,20 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
// @Override
// public MesLoadingVehiclesOrder update(MesLoadingVehiclesOrder bean) {
// public MesLoadingList update(MesLoadingList bean) {
// //更新前构造并校验数据
// onUpdateBean(bean);
//
// MesShippingOrderManagement shippingOrderManagement = bean.getShippingOrderNoList().get(0);
// DdlPackBean partShipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
// DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingGroupNo(), "shippingGroupNo", partShipGroupPackBean);
// DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingGroupNo", partShipGroupPackBean);
// MesPartShippingGroup partShippingGroup = partShippingGroupRepository.getByProperty(partShipGroupPackBean);
//
// if (StringUtils.isEmpty(partShippingGroup)) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】零件发运组数据为空请检查数据", shippingOrderManagement.getShippingGroupNo())
// .setErrorDetail("【%s】零件发运组数据为空请检查数据", shippingOrderManagement.getShippingCode())
// .build();
// }
//
@ -182,14 +188,14 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
// .setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", shippingOrderManagement.getShippingCode())
// .build();
// }
// if (partShippingGroup.getIsLoading() == MesCommonConstant.FALSE_INTEGER) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】零件发运组是否有装车配置为否则不需要生成装车单请检查数据", shippingOrderManagement.getShippingGroupNo())
// .setErrorDetail("【%s】零件发运组是否有装车配置为否则不需要生成装车单请检查数据", shippingOrderManagement.getShippingCode())
// .build();
// }
//
@ -197,25 +203,25 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
// .setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", shippingOrderManagement.getShippingCode())
// .build();
// }
// if (StringUtils.isEmpty(partShippingGroup.getIsEnableMemory()) || partShippingGroup.getIsEnableMemory() == 0) {
// throw ImppExceptionBuilder.newInstance()
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
// .setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", shippingOrderManagement.getShippingGroupNo())
// .setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", shippingOrderManagement.getShippingCode())
// .build();
// }
//
// }
protected void onInsertBean(MesLoadingVehiclesOrder item) {
protected void onInsertBean(MesLoadingList item) {
List<String> shippingOrderNoList = new ArrayList<>();
// 数据校验
ValidatorBean.checkNotNull(item.getLoadingOrderNo(), "装车单号不能为空");
ValidatorBean.checkNotNull(item.getWeatherCondition(), "天气不能为空");
ValidatorBean.checkNotNull(item.getOrderCode(), "装车单号不能为空");
ValidatorBean.checkNotNull(item.getWeather(), "天气不能为空");
ValidatorBean.checkNotNull(item.getShippingOrderNoList(), "发运单不能为空");
item.getShippingOrderNoList().forEach(k -> {
if (k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue() && k.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()) {
@ -233,23 +239,22 @@ public class MesLoadingVehiclesOrderService extends BaseMesService<MesLoadingVeh
}
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getLoadingOrderNo(), "loadingOrderNo", partPackBean);
// DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", partPackBean);
DdlPreparedPack.getStringEqualPack(item.getOrderCode(), "orderCode", partPackBean);
boolean flg = baseRDao.isExitByHql(partPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("发运单【%s】已经存在请检查数据", item.getLoadingOrderNo())
.setErrorDetail("发运单【%s】已经存在请检查数据", item.getOrderCode())
.build();
}
}
protected void setPackQueryBean(MesLoadingVehiclesOrder bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getLoadingOrderNo(), "loadingOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustomerCode(), "customerCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustomerOrganizeCode(), "customerOrganizeCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCarNo(), "carNo", packBean);
protected void setPackQueryBean(MesLoadingList bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getOrderCode(), "orderCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustOrganizeCode(), "custOrganizeCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getTruckNo(), "truckNo", packBean);
}
}

@ -1,20 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLoadingVehiclesOrderDetailService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrder;
import cn.estsh.i3plus.pojo.mes.bean.MesLoadingVehiclesOrderDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesLoadingVehiclesOrderDetailService extends BaseMesService<MesLoadingVehiclesOrderDetail> implements IMesLoadingVehiclesOrderDetailService {
protected void setPackQueryBean(MesLoadingVehiclesOrderDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getLoadingOrderNo(), "loadingOrderNo", packBean);
}
}

@ -0,0 +1,11 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesLocationConfigService;
import cn.estsh.i3plus.pojo.mes.bean.MesLocationConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesLocationConfigService extends BaseMesService<MesLocationConfig> implements IMesLocationConfigService {
}

@ -12,6 +12,6 @@ import org.springframework.stereotype.Service;
public class MesPartShippingGroupDetailService extends BaseMesService<MesPartShippingGroupDetail> implements IMesPartShippingGroupDetailService {
protected void setPackQueryBean(MesPartShippingGroupDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);
}
}

@ -18,6 +18,8 @@ public class MesPartShippingGroupService extends BaseMesService<MesPartShippingG
protected void setPackQueryBean(MesPartShippingGroup bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getCustCode(), "custCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getCustOriganizeCode(), "custOriganizeCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getShippingGroupName(), "shippingGroupName", packBean);
}

@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesJisShippingRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -44,6 +45,9 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
@Autowired
private MesJisShippingRepository jisShippingRepository;
@Autowired
private MesProduceSnRepository produceSnRepository;
@Autowired
private IMesConfigService configService;
@ -55,13 +59,15 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
protected void setPackQueryBean(MesShippingOrderManagement bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustCode(), "custCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getCustOrganizeCode(), "custOrganizeCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", packBean);
DdlPreparedPack.getNumEqualPack(bean.getStatus(), "status", packBean);
DdlPreparedPack.getInPackArray(bean.getStatusArray(), "status", packBean);
if (!StringUtils.isEmpty(bean.getReleaseTimeStart()) || !StringUtils.isEmpty(bean.getReleaseTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getReleaseTimeStart(), bean.getReleaseTimeEnd(), "releaseTime", packBean, false);
}
// DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
}
@Override
@ -70,14 +76,14 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
onInsertBean(bean);
DdlPackBean partShipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", partShipGroupPackBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", partShipGroupPackBean);
MesPartShippingGroup partShippingGroup = partShippingGroupRepository.getByProperty(partShipGroupPackBean);
if (StringUtils.isEmpty(partShippingGroup)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组数据为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组数据为空请检查数据", bean.getShippingGroupCode())
.build();
}
@ -85,37 +91,38 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否有装车不能为空请检查数据", bean.getShippingGroupCode())
.build();
}
if (StringUtils.isEmpty(partShippingGroup.getIsFirstInstall()) || partShippingGroup.getIsFirstInstall() == 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否先装车不能为空请检查数据", bean.getShippingGroupCode())
.build();
}
if (StringUtils.isEmpty(partShippingGroup.getIsEnableMemory()) || partShippingGroup.getIsEnableMemory() == 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组是否启用记忆不能为空请检查数据", bean.getShippingGroupCode())
.build();
}
bean.setShippingType(MesExtEnumUtil.SHIPPING_ORDER_TYPE.SORT_SHIPPING.getValue());
bean.setIsLoading(partShippingGroup.getIsLoading());
bean.setIsFirstInstall(partShippingGroup.getIsFirstInstall());
bean.setIsEnableMemory(partShippingGroup.getIsEnableMemory());
//查询物料发运组明细数据
DdlPackBean shipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", shipGroupPackBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupCode", shipGroupPackBean);
List<MesPartShippingGroupDetail> groupDetailList = shippingGroupDetailService.findAll(shipGroupPackBean);
if (CollectionUtils.isEmpty(groupDetailList)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】零件发运组明细数据为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】零件发运组明细数据为空请检查数据", bean.getShippingGroupCode())
.build();
}
@ -159,7 +166,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
}
//判断是否修改发运组,如果不修改发运组,则不修改明细
if (!bean.getShippingGroupNo().equals(originBean.getShippingGroupNo())) {
if (!bean.getShippingGroupCode().equals(originBean.getShippingGroupCode())) {
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingCode", detailPackBean);
@ -170,13 +177,13 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
});
//查询物料发运组数据
DdlPackBean shipGroupPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupNo(), "shippingGroupNo", shipGroupPackBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingGroupCode(), "shippingGroupNo", shipGroupPackBean);
List<MesPartShippingGroupDetail> shippingGroupDetailList = shippingGroupDetailService.findAll(shipGroupPackBean);
if (CollectionUtils.isEmpty(shippingGroupDetailList)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】发运组明细数据为空请检查数据", bean.getShippingGroupNo())
.setErrorDetail("【%s】发运组明细数据为空请检查数据", bean.getShippingGroupCode())
.build();
}
//发运单明细
@ -185,7 +192,6 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
MesShippingOrderManagementDetail detail = new MesShippingOrderManagementDetail();
detail.setOrganizeCode(k.getOrganizeCode());
// ConvertBean.serviceModelInitialize(detail, "LML");
ConvertBean.serviceModelInitialize(detail, AuthUtil.getSessionUser().getUserName());
BeanUtils.copyProperties(k, detail, "id");
detailInsertList.add(detail);
@ -196,8 +202,6 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
detailService.insertBatch(detailInsertList);
}
onModifyBean();
// ConvertBean.serviceModelUpdate(bean, "LML");
ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName());
baseRDao.update(bean);
return originBean;
@ -211,7 +215,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
MesShippingOrderManagement bean = baseRDao.getById(id);
if (StringUtils.isEmpty(bean)) continue;
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingGroupNo", detailPackBean);
DdlPreparedPack.getStringEqualPack(bean.getShippingCode(), "shippingCode", detailPackBean);
List<MesShippingOrderManagementDetail> detailDeleteList = detailService.findAll(detailPackBean);
detailDeleteList.forEach(k -> {
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
@ -232,7 +236,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
ValidatorBean.checkNotNull(item.getSeq(), "顺序号不能为空");
ValidatorBean.checkNotNull(item.getCustCode(), "客户代码不能为空");
ValidatorBean.checkNotNull(item.getCustCode(), "客户工厂代码不能为空");
ValidatorBean.checkNotNull(item.getShippingGroupNo(), "发运组代码不能为空");
ValidatorBean.checkNotNull(item.getShippingGroupCode(), "发运组代码不能为空");
ValidatorBean.checkNotNull(item.getStatus(), "状态不能为空");
DdlPackBean shipGroupPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
@ -256,7 +260,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
ValidatorBean.checkNotNull(item.getSeq(), "顺序号不能为空");
ValidatorBean.checkNotNull(item.getCustCode(), "客户代码不能为空");
ValidatorBean.checkNotNull(item.getCustOrganizeCode(), "客户工厂代码不能为空");
ValidatorBean.checkNotNull(item.getShippingGroupNo(), "发运组代码不能为空");
ValidatorBean.checkNotNull(item.getShippingGroupCode(), "发运组代码不能为空");
ValidatorBean.checkNotNull(item.getStatus(), "状态不能为空");
}
@ -321,4 +325,42 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
jisShippingRepository.saveAll(jisShippingList);
}
@Override
public void saveShippingClose(MesShippingOrderManagement bean) {
MesShippingOrderManagement originBean = baseRDao.getById(bean.getId());
DdlPackBean detailPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(originBean.getShippingCode(), "shippingCode", detailPackBean);
List<MesShippingOrderManagementDetail> detailDeleteList = detailService.findAll(detailPackBean);
originBean.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue());
ConvertBean.serviceModelUpdate(originBean, AuthUtil.getSessionUser().getUserName());
//修改当前发运单明细状态
detailDeleteList.forEach(k -> {
k.setActualQty(0);
k.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CLOSE.getValue());
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
//若扫描过的条码 则恢复条码
if (!StringUtils.isEmpty(k.getBarcode())) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(k.getBarcode(), "productSn", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
produceSnRepository.save(produceSn);
}
});
baseRDao.save(originBean);
detailService.updates(detailDeleteList);
}
}

@ -0,0 +1,297 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel;
import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService;
import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.MesCarSeries;
import cn.estsh.i3plus.pojo.mes.bean.MesCarSeriesModel;
import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel;
import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description:
* @CreateDate 2022/6/27 17:28
* @Author
*/
@Service
@Slf4j
public class MesCarSeriesExcelService implements IExcelImportService {
@Autowired
private CommonService commonService;
@Autowired
private MesPartRepository partRepository;
@Autowired
private MesPartPtrRepository partPtrRepository;
@Override
public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) {
//读取表格
ExcelImportResultModel excelImportResultModel = this.sheetExtractMesStationBom(workbook.getSheetAt(0), organizeCode, userName);
//数据入库
this.insertExcelMesPartPtr(excelImportResultModel);
return excelImportResultModel;
// return null;
}
/**
* BOM-
*
* @param sheetAt
* @param organizeCode
* @param userName
* @return
*/
private ExcelImportResultModel sheetExtractMesStationBom(Sheet sheetAt, String organizeCode, String userName) {
//从0行开始读取
int totalNumberOfRows = sheetAt.getLastRowNum() + 1;
//MesStationBom集合
List<MesPartPtr> partPtrList = new ArrayList<>();
//成功数量
Integer successRowNum = 0;
//失败数量
Integer failRowNum = 0;
//错误的行号
String errorRows = "";
//错误行信息集合
List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>();
Map<String, String> map = new HashMap<>();
for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) {
Row row = sheetAt.getRow(i);
//空行跳过
if (null == row) {
continue;
}
//获取总列数
Short lastCellNum = row.getLastCellNum();
if (lastCellNum > 0) {
int rowNum = i + 1; //当前行号
int errorNum = 0; //错误数量
String cellNum = ""; //错误列号
String errorInfo = ""; //错误信息
//车系代码
String carSeriesCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
//车系名称
String carSeriesName = null;
try {
row.getCell(1).setCellType(CellType.STRING);
carSeriesName = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//客户代码
String custCode = null;
try {
row.getCell(2).setCellType(CellType.STRING);
custCode = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//客户工厂代码
String custOrganizeCode = null;
try {
row.getCell(3).setCellType(CellType.STRING);
custOrganizeCode = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//年型
String yearModel = null;
try {
row.getCell(4).setCellType(CellType.STRING);
yearModel = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//客户车型
String custCarType = null;
try {
row.getCell(5).setCellType(CellType.STRING);
custCarType = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//车系条码
String carSeriesSn = null;
try {
row.getCell(6).setCellType(CellType.STRING);
carSeriesSn = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//零件组
String partGroup = null;
try {
row.getCell(7).setCellType(CellType.STRING);
partGroup = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//车型代码
String carModelCode = null;
try {
row.getCell(8).setCellType(CellType.STRING);
carModelCode = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//车型名称
String carModelName = null;
try {
row.getCell(9).setCellType(CellType.STRING);
carModelName = row.getCell(9, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//颜色
String carModelColor = null;
try {
row.getCell(10).setCellType(CellType.STRING);
carModelColor = row.getCell(10, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//条码参数
String snParam = null;
try {
row.getCell(11).setCellType(CellType.STRING);
snParam = row.getCell(11, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//打印参数
String printParam = null;
try {
row.getCell(12).setCellType(CellType.STRING);
printParam = row.getCell(12, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//零件号
String partNo = null;
try {
row.getCell(13).setCellType(CellType.STRING);
partNo = row.getCell(13, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//客户零件号
String custPartNo = null;
try {
row.getCell(14).setCellType(CellType.STRING);
custPartNo = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//散件类型
String loosePartType = null;
try {
row.getCell(14).setCellType(CellType.STRING);
loosePartType = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//显示顺序
String displaySeq = null;
try {
row.getCell(15).setCellType(CellType.STRING);
displaySeq = row.getCell(15, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//显示名称
String displayName = null;
try {
row.getCell(16).setCellType(CellType.STRING);
displayName = row.getCell(16, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//装饰条颜色
String trimStripColor = null;
try {
row.getCell(17).setCellType(CellType.STRING);
trimStripColor = row.getCell(17, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//装饰条颜色
String remark = null;
try {
row.getCell(18).setCellType(CellType.STRING);
remark = row.getCell(18, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//没有错误的时候封装MesStationBom
if (errorNum == 0) {
MesCarSeries carSeries = new MesCarSeries();
carSeries.setCarSeriesCode(carSeriesCode);
carSeries.setCarSeriesName(carSeriesName);
carSeries.setCustCode(custCode);
carSeries.setCustOrganizeCode(custOrganizeCode);
carSeries.setYearModel(yearModel);
carSeries.setCustCarType(custCarType);
carSeries.setCarSeriesSn(carSeriesSn);
carSeries.setPartGroup(partGroup);
carSeries.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(carSeries, AuthUtil.getSessionUser().getUserName());
MesCarSeriesModel model = new MesCarSeriesModel();
model.setCarSeriesCode(carSeriesCode);
model.setCarSeriesName(carSeriesName);
model.setCarModelCode(carModelCode);
model.setCarModelName(carModelName);
model.setCarModelColor(carModelColor);
successRowNum++;
} else {
//封装错误行信息ExcelImportErrorModel
excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
errorRows += rowNum + ";";
failRowNum++;
}
}
}
//校验EXCEL数据
commonService.checkExcelData(failRowNum, successRowNum, errorRows);
//封装返回结果
ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList);
return excelImportResultModel;
}
private void insertExcelMesPartPtr(ExcelImportResultModel excelImportResultModel) {
if (excelImportResultModel == null) {
return;
}
List<MesPartPtr> partPtrList = excelImportResultModel.getExcelList();
if (CollectionUtils.isEmpty(partPtrList)) {
return;
}
partPtrList.forEach(k -> {
if (StringUtils.isEmpty(k.getId())) {
partPtrRepository.insert(k);
} else {
partPtrRepository.update(k);
}
});
}
}

@ -0,0 +1,364 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel;
import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService;
import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService;
import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerOriganze;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*/
@Service
@Slf4j
public class MesCustomerCarModelExcelService implements IExcelImportService {
@Autowired
private CommonService commonService;
@Autowired
private MesCustomerRepository customerRepository;
@Autowired
private MesCustomerOriganizeRepository customerOriganizeRepository;
@Autowired
private MesCustomerPartRepository customerPartRepository;
@Autowired
private MesPartRepository partRepository;
@Autowired
private MesCustomerCarModelRepository customerCarModelRepository;
@Override
public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) {
//读取表格
ExcelImportResultModel excelImportResultModel = this.sheetExtractMesStationBom(workbook.getSheetAt(0), organizeCode, userName);
// //数据入库
// this.insertExcelMesItemPartErrorPrevention(excelImportResultModel);
return excelImportResultModel;
// return null;
}
/**
* BOM-
*
* @param sheetAt
* @param organizeCode
* @param userName
* @return
*/
private ExcelImportResultModel sheetExtractMesStationBom(Sheet sheetAt, String organizeCode, String userName) {
//从0行开始读取
int totalNumberOfRows = sheetAt.getLastRowNum() + 1;
//客户车型信息集合
List<MesCustomerCarModel> modelList = new ArrayList<>();
List<MesCustomerCarModelDetail> modelDetailList = new ArrayList<>();
// 查询客户信息表
Map<String, Object> customerMap;
try {
customerMap = MesCommonUtil.getCodeEntityMap(customerRepository, "custCode", organizeCode, "客户信息表");
} catch (Exception e) {
customerMap = null;
}
// 查询客户工厂信息
Map<String, Object> customerOriganizeMap;
try {
customerOriganizeMap = MesCommonUtil.getCodeEntityMap(customerOriganizeRepository, "custOrganizeCode", organizeCode, "客户工厂信息表");
} catch (Exception e) {
customerOriganizeMap = null;
}
// 查询客户零件关系
Map<String, Object> customerPartMap;
try {
customerPartMap = MesCommonUtil.getCodeEntityMap(customerPartRepository, "customerPartNo", organizeCode, "客户零件关系表");
} catch (Exception e) {
customerPartMap = null;
}
// 查询客户零件关系
Map<String, Object> partMap;
try {
partMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料信息表");
} catch (Exception e) {
partMap = null;
}
// //查询关键件条码校验规则表
// List<MesItemPartErrorPrevention> itemPartErrorPreventionList = itemPartErrorPreventionRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED},
// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
// Map<String, List<MesItemPartErrorPrevention>> preventionMap =
// itemPartErrorPreventionList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo()));
//成功数量
Integer successRowNum = 0;
//失败数量
Integer failRowNum = 0;
//错误的行号
String errorRows = "";
//错误行信息集合
List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>();
Map<String, String> map = new HashMap<>();
for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) {
Row row = sheetAt.getRow(i);
//空行跳过
if (null == row) {
continue;
}
//获取总列数
Short lastCellNum = row.getLastCellNum();
if (lastCellNum > 0) {
int rowNum = i + 1; //当前行号
int errorNum = 0; //错误数量
String cellNum = ""; //错误列号
String errorInfo = ""; //错误信息
//客户代码
String custCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
//客户工厂代码
String custOrganizeCode = null;
try {
row.getCell(1).setCellType(CellType.STRING);
custOrganizeCode = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//车型代码
String carModelCode = null;
try {
row.getCell(2).setCellType(CellType.STRING);
carModelCode = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//车型名称
String carModelName = null;
try {
row.getCell(3).setCellType(CellType.STRING);
carModelName = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//客户零件号
String customerPartNo = null;
try {
row.getCell(4).setCellType(CellType.STRING);
customerPartNo = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//备注
String remark = null;
try {
row.getCell(5).setCellType(CellType.STRING);
remark = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//是否罕见车型
String isUncommon = null;
try {
row.getCell(6).setCellType(CellType.STRING);
isUncommon = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//零件号
String partNo = null;
try {
row.getCell(7).setCellType(CellType.STRING);
partNo = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//供货零件号
String supperPartNo = null;
try {
row.getCell(8).setCellType(CellType.STRING);
supperPartNo = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//供货数量
String qty = null;
try {
row.getCell(9).setCellType(CellType.STRING);
qty = row.getCell(9, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//校验客户代码
if (StringUtils.isEmpty(custCode)) {
errorNum++;
cellNum += "A;";
errorInfo += "第A列数据必填;";
} else {
if (CollectionUtils.isEmpty(customerMap) ||
(!CollectionUtils.isEmpty(customerMap) && !customerMap.containsKey(custCode))) {
errorNum++;
cellNum += "A;";
errorInfo += "第A列数据无效;";
}
}
//校验客户代码
if (StringUtils.isEmpty(custOrganizeCode)) {
errorNum++;
cellNum += "B;";
errorInfo += "第B列数据必填;";
} else {
if (CollectionUtils.isEmpty(customerOriganizeMap) ||
(!CollectionUtils.isEmpty(customerOriganizeMap) && !customerOriganizeMap.containsKey(custOrganizeCode))) {
errorNum++;
cellNum += "B;";
errorInfo += "第B列数据无效;";
}
}
//校验车型代码
if (StringUtils.isEmpty(carModelCode)) {
errorNum++;
cellNum += "C;";
errorInfo += "第C列数据必填;";
}
//校验车型名称
if (StringUtils.isEmpty(carModelName)) {
errorNum++;
cellNum += "D;";
errorInfo += "第D列数据必填;";
}
//校验客户零件号
if (StringUtils.isEmpty(customerPartNo)) {
errorNum++;
cellNum += "E;";
errorInfo += "第E列数据必填:";
} else {
if (CollectionUtils.isEmpty(customerPartMap) ||
(!CollectionUtils.isEmpty(customerPartMap) && !customerPartMap.containsKey(customerPartNo))) {
errorNum++;
cellNum += "E;";
errorInfo += "第E列数据无效;";
}
}
//校验客户零件号
if (StringUtils.isEmpty(partNo)) {
errorNum++;
cellNum += "G;";
errorInfo += "第G列数据必填:";
} else {
if (CollectionUtils.isEmpty(partMap) ||
(!CollectionUtils.isEmpty(partMap) && !partMap.containsKey(partNo))) {
errorNum++;
cellNum += "G;";
errorInfo += "第G列数据无效;";
}
}
//校验供货零件号
if (StringUtils.isEmpty(supperPartNo)) {
errorNum++;
cellNum += "H;";
errorInfo += "第H列数据必填:";
} else {
if (CollectionUtils.isEmpty(partMap) ||
(!CollectionUtils.isEmpty(partMap) && !partMap.containsKey(supperPartNo))) {
errorNum++;
cellNum += "H;";
errorInfo += "第H列数据无效;";
}
}
//校验客户零件号
if (StringUtils.isEmpty(qty)) {
errorNum++;
cellNum += "H;";
errorInfo += "第H列数据必填:";
} else {
//是否为数字
if (!NumberUtils.isDigits(qty)) {
errorNum++;
cellNum += "H;";
errorInfo += "第H列数据必须为数字;";
}
}
//没有错误的时候封装MesStationBom
if (errorNum == 0) {
MesCustomerCarModel model = new MesCustomerCarModel();
model.setCarModelCode(carModelCode);
model.setCarModelName(carModelName);
model.setCustCode(custCode);
model.setCustOrganizeCode(custOrganizeCode);
MesCustomerOriganze customerOriganze = (MesCustomerOriganze) customerOriganizeMap.get(custOrganizeCode);
model.setCustOrganizeName(customerOriganze.getCustOrganizeName());
model.setRemark(remark);
model.setIsUncommon(Integer.parseInt(isUncommon));
model.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(model, AuthUtil.getSessionUser().getUserName());
modelList.add(model);
MesCustomerCarModelDetail modelDetail = new MesCustomerCarModelDetail();
modelDetail.setOrganizeCode(organizeCode);
modelDetail.setCustomerPartNo(customerPartNo);
modelDetail.setPartNo(partNo);
modelDetail.setSupperPartNo(supperPartNo);
modelDetail.setQty(Integer.parseInt(qty));
ConvertBean.serviceModelInitialize(modelDetail, AuthUtil.getSessionUser().getUserName());
modelDetailList.add(modelDetail);
successRowNum++;
} else {
//封装错误行信息ExcelImportErrorModel
excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
errorRows += rowNum + ";";
failRowNum++;
}
}
}
//校验EXCEL数据
commonService.checkExcelData(failRowNum, successRowNum, errorRows);
//封装返回结果
ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
excelImportResultModel.setExcelList((failRowNum > 0) ? null : modelList);
if (CollectionUtils.isEmpty(modelList)) {
return excelImportResultModel;
} else {
//数据入库
modelList.forEach(k -> {
if (StringUtils.isEmpty(k.getId())) {
// itemPartErrorPreventionRepository.insert(k);
} else {
// itemPartErrorPreventionRepository.update(k);
}
});
}
return excelImportResultModel;
}
}

@ -0,0 +1,156 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel;
import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService;
import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService;
import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel;
import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description:
* @CreateDate 2022/6/27 17:28
* @Author
*/
@Service
@Slf4j
public class MesCustomerDockExcelService implements IExcelImportService {
@Autowired
private CommonService commonService;
@Autowired
private MesPartRepository partRepository;
@Autowired
private MesPartPtrRepository partPtrRepository;
@Override
public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) {
//读取表格
ExcelImportResultModel excelImportResultModel = this.sheetExtractMesStationBom(workbook.getSheetAt(0), organizeCode, userName);
//数据入库
this.insertExcelMesPartPtr(excelImportResultModel);
return excelImportResultModel;
// return null;
}
/**
* BOM-
*
* @param sheetAt
* @param organizeCode
* @param userName
* @return
*/
private ExcelImportResultModel sheetExtractMesStationBom(Sheet sheetAt, String organizeCode, String userName) {
//从0行开始读取
int totalNumberOfRows = sheetAt.getLastRowNum() + 1;
//MesStationBom集合
List<MesPartPtr> partPtrList = new ArrayList<>();
//成功数量
Integer successRowNum = 0;
//失败数量
Integer failRowNum = 0;
//错误的行号
String errorRows = "";
//错误行信息集合
List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>();
// 查询物料表
Map<String, Object> partCodeEntityMap;
try {
partCodeEntityMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料表");
} catch (Exception e) {
partCodeEntityMap = null;
}
// //查询关键件条码校验规则表
// List<MesPartPtr> partPtrList = partPtrRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED},
// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
// Map<String, List<MesPartPtr>> preventionMap =
// partPtrList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo()));
Map<String, String> map = new HashMap<>();
for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) {
Row row = sheetAt.getRow(i);
//空行跳过
if (null == row) {
continue;
}
//获取总列数
Short lastCellNum = row.getLastCellNum();
if (lastCellNum > 0) {
int rowNum = i + 1; //当前行号
int errorNum = 0; //错误数量
String cellNum = ""; //错误列号
String errorInfo = ""; //错误信息
//产线编号
String workCenterCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
//没有错误的时候封装MesStationBom
if (errorNum == 0) {
successRowNum++;
} else {
//封装错误行信息ExcelImportErrorModel
excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
errorRows += rowNum + ";";
failRowNum++;
}
}
}
//校验EXCEL数据
commonService.checkExcelData(failRowNum, successRowNum, errorRows);
//封装返回结果
ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList);
return excelImportResultModel;
}
private void insertExcelMesPartPtr(ExcelImportResultModel excelImportResultModel) {
if (excelImportResultModel == null) {
return;
}
List<MesPartPtr> partPtrList = excelImportResultModel.getExcelList();
if (CollectionUtils.isEmpty(partPtrList)) {
return;
}
partPtrList.forEach(k -> {
if (StringUtils.isEmpty(k.getId())) {
partPtrRepository.insert(k);
} else {
partPtrRepository.update(k);
}
});
}
}

@ -31,9 +31,7 @@ import java.util.*;
import java.util.stream.Collectors;
/**
* @Description:
* @CreateDate 2022/6/27 17:28
* @Author
*
*/
@Service
@Slf4j

@ -30,6 +30,8 @@ public class MesCommonConstant {
public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT";
//报工条码规则
public static final String REPORT_SN = "REPORT_SN";
//装车单号
public static final String LOADING_LIST_CODE = "LOADING_LIST_CODE";
}

@ -0,0 +1,52 @@
package cn.estsh.i3plus.ext.mes.pojo.model;
import io.swagger.annotations.ApiParam;
import lombok.Data;
@Data
public class MesLoadingListDetailModel {
@ApiParam("装车单号")
private String orderCode;
@ApiParam("客户代码")
private String custCode;
@ApiParam("客户名称")
private String custName;
@ApiParam("客户工厂代码")
private String custOrganizeCode;
@ApiParam("客户工厂名称")
private String custOrganizeName;
@ApiParam("发运组代码")
private String shippingGroupNo;
@ApiParam("发运组代码")
private String shippingGroupName;
@ApiParam("状态")
private Integer status;
@ApiParam("车牌号")
private String truckNo;
@ApiParam("天气情况")
private Integer weather;
@ApiParam("发运单号")
private String shippingCode;
@ApiParam("开始扫描时间")
private String startScanTime;
@ApiParam("结束扫描时间")
private String endScanTime;
@ApiParam("发运状态")
private Integer shippingStatus;
}

@ -25,5 +25,4 @@ public class MesShippingOrderManagementDetailModel {
@ApiParam("计量单位")
private String unit;
}

Loading…
Cancel
Save