package doumeemes.service.business.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import doumeemes.core.constants.ResponseStatus;
|
import doumeemes.core.exception.BusinessException;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.model.PageData;
|
import doumeemes.core.model.PageWrap;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.core.utils.DateUtil;
|
import doumeemes.core.utils.Utils;
|
import doumeemes.core.utils.dingding.DingDingUtil;
|
import doumeemes.core.utils.redis.RedisUtil;
|
import doumeemes.dao.business.BackOrderDetailMapper;
|
import doumeemes.dao.business.BackorderMapper;
|
import doumeemes.dao.business.dto.MaterialListDTO;
|
import doumeemes.dao.business.model.*;
|
import doumeemes.dao.business.vo.DdInstanceStatusVO;
|
import doumeemes.dao.ext.*;
|
import doumeemes.dao.ext.dto.QueryAppliancesExtDTO;
|
import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
|
import doumeemes.dao.ext.vo.*;
|
import doumeemes.service.business.BackorderService;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import doumeemes.service.business.CompanyService;
|
import doumeemes.service.business.WTransferService;
|
import doumeemes.service.ext.CompanyExtService;
|
import doumeemes.service.ext.DepartmentExtService;
|
import doumeemes.service.ext.PlansExtService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 工单类-返修申请单信息表Service实现
|
* @author 江蹄蹄
|
* @date 2022/07/19 14:29
|
*/
|
@Service
|
public class BackorderServiceImpl implements BackorderService {
|
@Autowired
|
private RedisTemplate<String, Object> redisTemplate;
|
@Autowired
|
private BackorderMapper backorderMapper;
|
@Autowired
|
private CompanyExtService companyExtService;
|
@Autowired
|
private WTransferService wTransferService;
|
|
@Autowired
|
private AppliancesExtMapper appliancesExtMapper;
|
@Autowired
|
private BackOrderDetailMapper backOrderDetailMapper;
|
@Autowired
|
private ProceduresExtMapper proceduresExtMapper;
|
@Autowired
|
private WarehouseExtMapper warehouseExtMapper;
|
|
@Autowired
|
private CompanyUserExtMapper companyUserExtMapper;
|
@Autowired
|
private PlansExtService plansExtService;
|
@Autowired
|
private DepartmentExtService departmentExtService;
|
@Autowired
|
private DepartmentExtMapper departmentExtMapper;
|
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public Integer create(Backorder backorder) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
|
}
|
if( StringUtils.isBlank(backorder.getContent())
|
|| backorder.getType()== null
|
|| backorder.getApplianceIdList()== null
|
|| backorder.getApplianceIdList().size()==0){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按要求填写和选择提交数据!");
|
}
|
|
Procedures procedures = null;
|
if(!Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
if(backorder.getBackProcedureId()== null
|
|| backorder.getPlanDate()== null) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按要求填写和选择提交数据!");
|
}
|
Date pDate = DateUtil.getDateFromString(DateUtil.getShortTime(backorder.getPlanDate()) +" 00:00:00");
|
Date nDate = DateUtil.getDateFromString(DateUtil.getShortTime(DateUtil.getCurrentDate()) +" 00:00:00");
|
if(DateUtil.dateAddDays(nDate,1).getTime() > pDate.getTime()){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,计划生产日期必须为今天以后的日期!");
|
}
|
procedures = new Procedures();
|
procedures.setDeleted(Constants.ZERO);
|
procedures.setRootDepartId(user.getRootDepartment().getId());
|
procedures.setId(backorder.getBackProcedureId());
|
procedures = proceduresExtMapper.selectOne(new QueryWrapper<>(procedures).last(" limit 1"));
|
if(procedures == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择正确的返工工序!");
|
}
|
backorder.setBackProcedureName(procedures.getName());
|
}else{
|
if(backorder.getWarehouseId() == null){
|
//入库仓库编码
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按要求填写和选择提交数据!");
|
}
|
Warehouse w = new Warehouse();
|
w.setRootDepartId(user.getRootDepartment().getId());
|
w.setDeleted(Constants.ZERO);
|
w.setId(backorder.getWarehouseId());
|
w = warehouseExtMapper.selectOne(new QueryWrapper<>(w).last(" limit 1"));
|
if(w == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,入库仓库不存在!");
|
}
|
backorder.setWarehouseName(w.getName());
|
}
|
|
Backorder order = new Backorder();
|
order.setDeleted(Constants.ZERO);
|
order.setStatus(Constants.BACKORDER_STATUS.ing);
|
String ids = "";
|
for(Integer tid : backorder.getApplianceIdList()){
|
if(StringUtils.isNotBlank(ids)){
|
ids+=",";
|
}
|
ids +=tid;
|
}
|
int count = backorderMapper.selectCount(new LambdaQueryWrapper<>(order).exists(" select b.id from back_order_detail b where b.backorder_id=backorder.id and b.deleted=0 and b.appliance_id in ("+ids+")"));
|
if(count>0){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,选择的工装有正在申请单,不可以再次申请!");
|
}
|
//根据请求数据,查询全部器具信息
|
List<AppliancesExtListVO> aList = appliancesExtMapper.selectList(initApplianceParam(user,backorder.getApplianceIdList()));
|
if(aList == null || aList.size() ==0){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择正确的工装器具!");
|
}
|
|
AppliancesExtListVO taModel = aList.get(0);
|
//累计总物料数量
|
BigDecimal num = new BigDecimal(0);
|
backorder.setDetailList(new ArrayList<>());
|
//不同篮筐的物料、生产工序、质量属性、仓库、批次必须相同
|
for(AppliancesExtListVO a : aList){
|
if(!Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)
|
&&(!Constants.equalsInteger(a.getMaterialId(),taModel.getMaterialId())
|
|| !Constants.equalsInteger(a.getProcedureId(),taModel.getProcedureId())
|
|| !StringUtils.equals(a.getBatch(),taModel.getBatch())
|
|| !Constants.equalsInteger(a.getQualityType(),taModel.getQualityType())
|
|| !Constants.equalsInteger(a.getWarehouseId(),taModel.getWarehouseId()) )){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,工装的物料、生产工序、质量属性、仓库必须相同!");
|
}
|
if(a.getBackorderId() !=null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,选择的工装【"+a.getCode()+"】有正绑定返修申请单,不可以再次申请!");
|
}
|
if(a.getPmodel() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,工装【"+a.getCode()+"】所属工序为空!");
|
}
|
if(a.getPmodel().getOrgId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,工装【"+a.getCode()+"】生产工序未绑定工厂,不能进行返工申请!");
|
}
|
if(a.getWarehouseId() == null){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,工装【"+a.getCode()+"】不在仓库内,不能进行返工申请!");
|
}
|
if(a.getBackorderId()!=null){
|
//篮筐有返工返修申请单号
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,工装【"+a.getCode()+"】已关联返工返修申请单,不能再申请!");
|
}
|
num = num.add(Constants.formatBigdecimal(a.getNum()));
|
BackOrderDetail detail = new BackOrderDetail();
|
detail.setDeleted(Constants.ZERO);
|
detail.setCreateUser(backorder.getCreateUser());
|
detail.setRootDepartId(backorder.getRootDepartId());
|
detail.setOrderDepartId(backorder.getOrderDepartId());
|
detail.setCreateTime(backorder.getCreateTime());
|
detail.setBackorderId(backorder.getId());
|
detail.setApplianceId(a.getId());
|
detail.setNum(a.getNum());
|
detail.setApplianceCode(a.getCode());
|
detail.setBatch(StringUtils.defaultString(a.getBatch(),""));
|
detail.setProcedureName(a.getPmodel()==null?"":a.getPmodel().getName());
|
detail.setMaterialId(a.getMaterialId());
|
detail.setUnitName(a.getUmodelName());
|
detail.setUnitData(a.getUmodelData());
|
detail.setMaterialCode(a.getMaterialCode());
|
detail.setMaterialName(a.getMaterialName());
|
detail.setProcedureId(a.getProcedureId());
|
backorder.getDetailList().add(detail);
|
}
|
if(!Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
//批次号
|
backorder.setBatch(taModel.getBatch());
|
}
|
//根据第一个篮筐的生产工序查询对应的工厂信息展示
|
backorder.setProcedureId(taModel.getProcedureId());
|
DepartmentExtListVO org = departmentExtService.getModelById(user.getCompany().getId(),taModel.getPmodel().getOrgId());
|
backorder.setOrgName(org==null?null:org.getName());
|
if(!Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
backorder.setMaterialId(taModel.getMaterialId());
|
backorder.setUnitId(taModel.getMdmodel()!=null?taModel.getMdmodel().getUnitId():null);
|
}
|
backorder.setFactoryId( taModel.getPmodel().getOrgId());
|
backorder.setDeleted(Constants.ZERO);
|
backorder.setCreateUser(user.getId());
|
backorder.setCreateTime(DateUtil.getCurrentDate());
|
backorder.setRootDepartId(user.getRootDepartment().getId());
|
backorder.setOrderDepartId(user.getCurComDepartment().getId());
|
backorder.setTitle(user.getCompanyUser().getName()+"提交的"+Constants.BACKORDER_TYPE.getTitleByType(backorder.getType()));
|
backorder.setWarehouseOutId(taModel.getWarehouseId());
|
backorder.setCode(getNextCode(user.getCompany().getId()));
|
backorder.setWarehouseOutName(taModel.getWhmodel()==null?"":taModel.getWhmodel().getName());
|
backorder.setStatus(Constants.BACKORDER_STATUS.ing);
|
backorder.setCreateUserName(user.getCompanyUser().getName() +" / " +user.getDepartment().getName());
|
backorder.setNum(num);
|
String info ="";
|
if(Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
//如果是报废申请
|
info = backorder.getCreateUserName()+",提交"
|
+Constants.BACKORDER_TYPE.getTitleByType(backorder.getType())
|
+",入库仓库为"+backorder.getWarehouseName();
|
}else if(Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.customer_back)){
|
//如果是可返单
|
info = backorder.getCreateUserName()+",提交"
|
+Constants.BACKORDER_TYPE.getTitleByType(backorder.getType())
|
+",返修客户:"+backorder.getCustomerName()
|
+",返修工序为"+backorder.getBackProcedureName();;
|
}else{
|
info = backorder.getCreateUserName()+",提交"
|
+Constants.BACKORDER_TYPE.getTitleByType(backorder.getType())
|
+",返修工序为"+backorder.getBackProcedureName();
|
}
|
backorder.setRemark(info);
|
//不良工序、返修工序负责人相同,则跳过审批直接自动创建返修工序的“返工返修”类型计划
|
boolean isSelf = procedures==null?false:Constants.equalsInteger(procedures.getUserId(),taModel.getPmodel().getUserId());
|
Integer orderId = null;
|
//报废必须走审批
|
if(!isSelf || Constants.equalsInteger(Constants.BACKORDER_TYPE.scrap,backorder.getType()) ){
|
if(StringUtils.isBlank(user.getCompanyUser().getDdUserid())) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,您不具备发起钉钉审批的条件,如有疑问请联系管理员!");
|
}
|
try {
|
String ddinfo = user.getCompany().getDingdingInfo();
|
JSONObject json = JSONObject.parseObject(ddinfo);
|
String processCode = json.getString("instance_tmp_"+backorder.getType()+"_"+backorder.getFactoryId());
|
String instanceid = DingDingUtil.startProcessInstance(companyExtService.getDingdingToken(user.getCompany().getId()),user.getCompanyUser().getDdUserid() , processCode, backorder);
|
if(StringUtils.isBlank(instanceid)){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,发起钉钉审批失败,请稍后重试!");
|
}
|
backorder.setInstanceId(instanceid);
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,发起钉钉审批失败,请稍后重试!");
|
}
|
//插入数据
|
backorderMapper.insert(backorder);
|
}else{
|
//审批通过agree
|
backorder.setStatus(Constants.BACKORDER_STATUS.yes);
|
//插入数据
|
orderId = backorderMapper.insert(backorder);
|
//生成生产计划
|
Plans p = new Plans();
|
p.setMaterialId(backorder.getMaterialId());
|
p.setDeleted(Constants.ZERO);
|
p.setCreateUser(backorder.getCreateUser());
|
p.setUserId(backorder.getCreateUser());
|
p.setCreateTime(DateUtil.getCurrentDate());
|
p.setBatch(backorder.getBatch());
|
// p.setBatch(plansExtService.getNextBatch(backorder.getCompanyId()));
|
p.setStatus(Constants.PLAN_STATUS.create);
|
p.setRootDepartId(backorder.getRootDepartId());
|
p.setDepartId(backorder.getOrderDepartId());
|
p.setUnitId(backorder.getUnitId());
|
p.setType(Constants.PLAN_TYPE.back);
|
p.setBackorderId(backorder.getId());
|
p.setPlanDate(backorder.getPlanDate());
|
p.setNum(Constants.formatBigdecimal(backorder.getNum()).intValue());
|
p.setProcedureId(backorder.getBackProcedureId());
|
p.setFactoryId(backorder.getFactoryId());
|
plansExtService.createDirect(p);
|
}
|
|
//遍历更新篮筐数据,并插入明细记录
|
for(AppliancesExtListVO a : aList){
|
Appliances aModel = new Appliances();
|
aModel.setId(a.getId());
|
aModel.setUpdateUser(user.getId());
|
// aModel.setWorkorderId(backorder.getId());
|
if(Constants.equalsInteger(backorder.getStatus(),Constants.BACKORDER_STATUS.yes)){
|
aModel.setBackProcedureId(backorder.getBackProcedureId());
|
}
|
aModel.setUpdateTime(backorder.getCreateTime());
|
aModel.setSaleorderId(backorder.getSaleorderId());
|
aModel.setBackorderId(Constants.formatIntegerNum(orderId) >0?backorder.getId():null);
|
aModel.setWarehouseId(a.getWarehouseId());
|
aModel.setLocationId(a.getLocationId());
|
appliancesExtMapper.updateById(aModel);
|
}
|
for(BackOrderDetail detail : backorder.getDetailList()){
|
detail.setBackorderId(backorder.getId());
|
backOrderDetailMapper.insert(detail);
|
}
|
|
return backorder.getId();
|
}
|
|
private QueryAppliancesExtDTO initApplianceParam(LoginUserInfo user,List<Integer> idList ) {
|
List<MaterialListDTO> apList = new ArrayList<>();
|
for(Integer id : idList){
|
MaterialListDTO t = new MaterialListDTO();
|
t.setApplianceId(id);
|
apList.add(t);
|
}
|
QueryAppliancesExtDTO appliancesExtDTO = new QueryAppliancesExtDTO();
|
appliancesExtDTO.setDeleted(Constants.ZERO);
|
appliancesExtDTO.setRootDepartId(user.getRootDepartment().getId());
|
appliancesExtDTO.setDepartId(user.getComDepartment().getId());
|
appliancesExtDTO.setRecordList(apList);
|
return appliancesExtDTO;
|
|
}
|
@Override
|
public void deleteById(Integer id) {
|
backorderMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(Backorder backorder) {
|
UpdateWrapper<Backorder> deleteWrapper = new UpdateWrapper<>(backorder);
|
backorderMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
backorderMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(Backorder backorder) {
|
backorderMapper.updateById(backorder);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<Backorder> backorders) {
|
if (CollectionUtils.isEmpty(backorders)) {
|
return;
|
}
|
for (Backorder backorder: backorders) {
|
this.updateById(backorder);
|
}
|
}
|
|
@Override
|
public Backorder findById(Integer id) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
|
}
|
Backorder model = new Backorder();
|
model.setId(id);
|
model.setDeleted(Constants.ZERO);
|
model.setRootDepartId(user.getRootDepartment().getId());
|
model = backorderMapper.selectByModel(model);
|
|
if(model == null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该数据不存在!");
|
}
|
List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
|
//用户信息
|
initProUser(user,model,allDepartList);
|
BackOrderDetail d = new BackOrderDetail();
|
d.setBackorderId(model.getId());
|
d.setDeleted(Constants.ZERO);
|
List<BackOrderDetail> detailList = backOrderDetailMapper.selectList(d);
|
model.setDetailList(detailList);
|
|
model.setRecordList(getRecordListFromDingding(user,model.getInstanceId()));
|
return model;
|
}
|
|
private List<DdInstanceStatusVO> getRecordListFromDingding(LoginUserInfo user,String instanceId) {
|
List<DdInstanceStatusVO> list = new ArrayList<>();
|
try {
|
List<OapiProcessinstanceGetResponse.OperationRecordsVo> result = DingDingUtil.getProcessInstance(companyExtService.getDingdingToken(user.getCompany().getId()) , instanceId);
|
if(result!=null){
|
for(OapiProcessinstanceGetResponse.OperationRecordsVo r : result){
|
DdInstanceStatusVO t = new DdInstanceStatusVO();
|
t.setUserid(r.getUserid());
|
t.setDate(r.getDate());
|
t.setOperationResult(r.getOperationResult());
|
t.setOperationType(r.getOperationType());
|
t.setRemark(r.getRemark());
|
t.setUserModel(getUserModelByDduserId(r.getUserid(),user));
|
list.add(t);
|
}
|
}
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,发起钉钉审批失败,请稍后重试!");
|
}
|
return list;
|
}
|
|
private CompanyUser getUserModelByDduserId(String userid, LoginUserInfo user) {
|
CompanyUser u = new CompanyUser();
|
u.setRootDepartId(user.getRootDepartment().getId());
|
u.setDeleted(Constants.ZERO);
|
u.setDdUserid(userid);
|
u = companyUserExtMapper.selectOne(new QueryWrapper<>(u).last(" limit 1"));
|
return u;
|
}
|
|
@Override
|
public Backorder findOne(Backorder backorder) {
|
QueryWrapper<Backorder> wrapper = new QueryWrapper<>(backorder);
|
return backorderMapper.selectOne(wrapper);
|
}
|
@Override
|
public void dealProcessInstance(String processInstanceId,String type,String result) {
|
if(StringUtils.isBlank(processInstanceId)){
|
return;
|
}
|
if(StringUtils.equals(type,"finish" ) || StringUtils.equals(type,"terminate" )){
|
//如果是审批结束或者终止
|
Backorder backorder = new Backorder();
|
backorder.setInstanceId(processInstanceId);
|
backorder= backorderMapper.selectByModel(backorder);
|
if(backorder!=null){
|
Backorder model = new Backorder();
|
model.setId(backorder.getId());
|
model.setUpdateTime(DateUtil.getCurrentDate());
|
if(StringUtils.equals(type,"finish" ) ){
|
//审批正常结束
|
if(StringUtils.equals(result,"agree" ) ){
|
//审批通过agree
|
model.setStatus(Constants.BACKORDER_STATUS.yes);
|
//生成生产计划
|
if(Constants.equalsInteger(backorder.getDeleted(),Constants.ZERO)
|
&& Constants.equalsInteger(backorder.getStatus(),Constants.BACKORDER_STATUS.ing)){
|
BackOrderDetail dModel = new BackOrderDetail();
|
dModel.setBackorderId(backorder.getId());
|
dModel.setDeleted(Constants.ZERO);
|
List<BackOrderDetail> details = backOrderDetailMapper.selectList(dModel);
|
if(details!=null){
|
for(BackOrderDetail d : details){
|
UpdateWrapper updateWrapper = new UpdateWrapper();
|
updateWrapper.eq("ID",d.getApplianceId());
|
updateWrapper.set("BACKORDER_ID",backorder.getId());
|
updateWrapper.set("UPDATE_TIME",DateUtil.getCurrentDate());
|
if(!Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
updateWrapper.set("BACK_PROCEDURE_ID",backorder.getBackProcedureId());
|
updateWrapper.set("SALEORDER_ID",backorder.getSaleorderId());
|
}
|
appliancesExtMapper.update(null,updateWrapper);
|
}
|
}
|
if(Constants.equalsInteger(backorder.getType(),Constants.BACKORDER_TYPE.scrap)){
|
//报废处理
|
Department d = departmentExtMapper.selectById(backorder.getRootDepartId());
|
if(d!=null){
|
CompanyExtListVO com = companyExtService.getModelById(d.getCompanyId());
|
wTransferService.dealScrapApply(backorder,com);
|
}
|
}else{
|
Plans p = new Plans();
|
p.setMaterialId(backorder.getMaterialId());
|
p.setDeleted(Constants.ZERO);
|
p.setCreateUser(backorder.getCreateUser());
|
p.setUserId(backorder.getCreateUser());
|
p.setCreateTime(DateUtil.getCurrentDate());
|
//从返修单取批次号
|
p.setBatch(backorder.getBatch());
|
// p.setBatch(plansExtService.getNextBatch(backorder.getCompanyId()));
|
p.setStatus(Constants.PLAN_STATUS.create);
|
p.setRootDepartId(backorder.getRootDepartId());
|
p.setDepartId(backorder.getOrderDepartId());
|
p.setUnitId(backorder.getUnitId());
|
p.setType(Constants.PLAN_TYPE.back);
|
p.setBackorderId(backorder.getId());
|
p.setPlanDate(backorder.getPlanDate());
|
p.setNum(Constants.formatBigdecimal(backorder.getNum()).intValue());
|
p.setProcedureId(backorder.getBackProcedureId());
|
p.setFactoryId(backorder.getFactoryId());
|
plansExtService.createDirect(p);
|
}
|
|
}
|
}else{
|
//审批不通过refuse
|
model.setStatus(Constants.BACKORDER_STATUS.no);
|
}
|
}else{
|
|
model.setStatus(Constants.BACKORDER_STATUS.stop);
|
}
|
//审批终止
|
UpdateWrapper updateWrapper = new UpdateWrapper();
|
updateWrapper.eq("ID",model.getId());
|
updateWrapper.set("STATUS",model.getStatus());
|
updateWrapper.set("UPDATE_TIME",DateUtil.getCurrentDate());
|
backorderMapper.update(null,updateWrapper);
|
// backorderMapper.updateById(model);
|
}
|
}
|
}
|
|
@Override
|
public List<Backorder> findList(Backorder backorder) {
|
QueryWrapper<Backorder> wrapper = new QueryWrapper<>(backorder);
|
return backorderMapper.selectList(wrapper);
|
}
|
@Override
|
public synchronized String getNextCode(Integer comId ){
|
String prefix = DateUtil.getDate(new Date(),"yyyyMMdd") +"-";
|
Integer countNum = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.COM_BACKORDER_CODE_KEY+comId,Integer.class);
|
countNum = Constants.formatIntegerNum(countNum)+1;
|
//更新缓存
|
RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_BACKORDER_CODE_KEY+comId,countNum);
|
String nextIndex =Integer.toString( countNum);
|
return prefix + StringUtils.leftPad(nextIndex,4,"0");
|
}
|
@Override
|
public PageData<Backorder> findPageNew(PageWrap<Backorder> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
|
}
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setDeleted(Constants.ZERO);
|
pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
|
pageWrap.getModel().setOrderDepartId(user.getCurComDepartment().getId());
|
//数据权限
|
List<Integer> dataPermission = user.getDepartPermissionList();
|
if(dataPermission!=null){
|
pageWrap.getModel().setCreateUser(user.getId());
|
pageWrap.getModel().setDepartIds(dataPermission);
|
/* if(dataPermission.size() == 0){
|
//只能看自己的
|
pageWrap.getModel().setCreateUser(user.getId());
|
}else{
|
//否则走数据权限
|
pageWrap.getModel().setDepartIds(dataPermission);
|
}*/
|
}
|
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
|
List<Backorder> result = backorderMapper.selectList(pageWrap.getModel());
|
if(result!=null){
|
List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
|
for(Backorder w : result){
|
initProUser(user,w,allDepartList);
|
}
|
}
|
return PageData.from(new PageInfo<>(result));
|
}
|
private void initProUser(LoginUserInfo user, Backorder data, List<DepartmentExtListVO> allDepartList) {
|
if(data.getCreateUser() ==null){
|
return;
|
}
|
CompanyUser query=new CompanyUser();
|
query.setUserId(data.getCreateUser());
|
query.setRootDepartId(user.getRootDepartment().getId());
|
query.setDeleted(Constants.ZERO);
|
CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1"));
|
if(comp!=null){
|
data.setCreateUserName(comp.getName());
|
DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList);
|
String dName =(d==null?"":StringUtils.defaultString(d.getName(),""));
|
data.setDepartmentName(dName);
|
}
|
}
|
@Override
|
public PageData<Backorder> findPage(PageWrap<Backorder> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!");
|
}
|
//只能查看当前根组织的数据
|
pageWrap.getModel().setDeleted(Constants.ZERO);
|
pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
|
pageWrap.getModel().setOrderDepartId(user.getCurComDepartment().getId());
|
IPage<Backorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Backorder> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
if (pageWrap.getModel().getId() != null) {
|
queryWrapper.lambda().eq(Backorder::getId, pageWrap.getModel().getId());
|
}
|
if (pageWrap.getModel().getDeleted() != null) {
|
queryWrapper.lambda().eq(Backorder::getDeleted, pageWrap.getModel().getDeleted());
|
}
|
if (pageWrap.getModel().getCreateUser() != null) {
|
queryWrapper.lambda().eq(Backorder::getCreateUser, pageWrap.getModel().getCreateUser());
|
}
|
if (pageWrap.getModel().getCreateTime() != null) {
|
queryWrapper.lambda().ge(Backorder::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
|
queryWrapper.lambda().le(Backorder::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
|
}
|
if (pageWrap.getModel().getUpdateUser() != null) {
|
queryWrapper.lambda().eq(Backorder::getUpdateUser, pageWrap.getModel().getUpdateUser());
|
}
|
if (pageWrap.getModel().getUpdateTime() != null) {
|
queryWrapper.lambda().ge(Backorder::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
|
queryWrapper.lambda().le(Backorder::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
|
}
|
if (pageWrap.getModel().getRemark() != null) {
|
queryWrapper.lambda().eq(Backorder::getRemark, pageWrap.getModel().getRemark());
|
}
|
if (pageWrap.getModel().getRootDepartId() != null) {
|
queryWrapper.lambda().eq(Backorder::getRootDepartId, pageWrap.getModel().getRootDepartId());
|
}
|
if (pageWrap.getModel().getOrderDepartId() != null) {
|
queryWrapper.lambda().eq(Backorder::getOrderDepartId, pageWrap.getModel().getOrderDepartId());
|
}
|
if (pageWrap.getModel().getProcedureId() != null) {
|
queryWrapper.lambda().eq(Backorder::getProcedureId, pageWrap.getModel().getProcedureId());
|
}
|
if (pageWrap.getModel().getMaterialId() != null) {
|
queryWrapper.lambda().eq(Backorder::getMaterialId, pageWrap.getModel().getMaterialId());
|
}
|
if (pageWrap.getModel().getBatch() != null) {
|
queryWrapper.lambda().eq(Backorder::getBatch, pageWrap.getModel().getBatch());
|
}
|
if (pageWrap.getModel().getType() != null) {
|
queryWrapper.lambda().eq(Backorder::getType, pageWrap.getModel().getType());
|
}
|
if (pageWrap.getModel().getPlanDate() != null) {
|
queryWrapper.lambda().ge(Backorder::getPlanDate, Utils.Date.getStart(pageWrap.getModel().getPlanDate()));
|
queryWrapper.lambda().le(Backorder::getPlanDate, Utils.Date.getEnd(pageWrap.getModel().getPlanDate()));
|
}
|
if (pageWrap.getModel().getBackProcedureId() != null) {
|
queryWrapper.lambda().eq(Backorder::getBackProcedureId, pageWrap.getModel().getBackProcedureId());
|
}
|
if (pageWrap.getModel().getContent() != null) {
|
queryWrapper.lambda().eq(Backorder::getContent, pageWrap.getModel().getContent());
|
}
|
if (pageWrap.getModel().getStatus() != null) {
|
queryWrapper.lambda().eq(Backorder::getStatus, pageWrap.getModel().getStatus());
|
}
|
if (pageWrap.getModel().getInstanceId() != null) {
|
queryWrapper.lambda().eq(Backorder::getInstanceId, pageWrap.getModel().getInstanceId());
|
}
|
if (pageWrap.getModel().getCode() != null) {
|
queryWrapper.lambda().eq(Backorder::getCode, pageWrap.getModel().getCode());
|
}
|
if (pageWrap.getModel().getNum() != null) {
|
queryWrapper.lambda().eq(Backorder::getNum, pageWrap.getModel().getNum());
|
}
|
if (pageWrap.getModel().getSaleorderId() != null) {
|
queryWrapper.lambda().eq(Backorder::getSaleorderId, pageWrap.getModel().getSaleorderId());
|
}
|
if (pageWrap.getModel().getWarehouseId() != null) {
|
queryWrapper.lambda().eq(Backorder::getWarehouseId, pageWrap.getModel().getWarehouseId());
|
}
|
for(PageWrap.SortData sortData: pageWrap.getSorts()) {
|
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
|
queryWrapper.orderByDesc(sortData.getProperty());
|
} else {
|
queryWrapper.orderByAsc(sortData.getProperty());
|
}
|
}
|
return PageData.from(backorderMapper.selectPage(page, queryWrapper));
|
}
|
|
@Override
|
public long count(Backorder backorder) {
|
QueryWrapper<Backorder> wrapper = new QueryWrapper<>(backorder);
|
return backorderMapper.selectCount(wrapper);
|
}
|
}
|