Browse Source

合同编号自动生成

anderx 6 years ago
parent
commit
a12a6c5e35

+ 2 - 1
src/main/java/com/goafanti/common/controller/BaseApiController.java

@@ -71,10 +71,11 @@ public class BaseApiController extends BaseController {
 				res.getError().add(buildError("", "文件上传失败!"));
 			}
 		} else {
-			res.getError().add(buildError("", "文件上传失败!"));
+			res.getError().add(buildError("", "文件为空,上传失败!"));
 		}
 		return fileName;
 	}
+	
 
 	/**
 	 * 

+ 2 - 0
src/main/java/com/goafanti/common/dao/OrganizationManagementMapper.java

@@ -1,6 +1,7 @@
 package com.goafanti.common.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import com.goafanti.organization.bo.OrganizationListOut;
 import com.goafanti.admin.bo.AdminListBo;
@@ -133,4 +134,5 @@ public interface OrganizationManagementMapper {
 	 * @return
 	 */
 	List<OrganizationManagement> selectAllDeps();
+	Map<String, Object> getDepMaxNo(String orderDep);
 }

+ 1 - 0
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -89,5 +89,6 @@ public interface TOrderNewMapper {
     OrderRefundDetailBo orderRefundDetail(String id);
 
 	int updateFinance(@Param("aid")String aid, @Param("orderNo")String orderNo, @Param("newFinance")String newFinance);
+	int checkContractNo(String sno);
 
 }

+ 10 - 0
src/main/java/com/goafanti/common/mapper/OrganizationManagementMapper.xml

@@ -372,6 +372,9 @@
       <if test="status != null">
         status = #{status,jdbcType=VARCHAR},
       </if>
+      <if test="abbreviation != null">
+        abbreviation = #{abbreviation,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=VARCHAR}
   </update>
@@ -515,6 +518,7 @@
 		a.super_id as superId,
 		a.remarks,
 		a.status,
+		a.abbreviation,
 		b.name as managerName
 	from department a 
 	left join admin b on a.manager_id = b.id 
@@ -609,4 +613,10 @@
 	<select id="selectAllDeps" resultMap="BaseResultMap">
 		select id,name,dep_no from department
 	</select>
+	<select id="getDepMaxNo"  parameterType="java.lang.String" resultType="java.util.Map">
+select a.abbreviation ,b.maxNo
+from department a left join (select order_dep,max(contract_no) as maxNo from t_order_new
+where create_time > '2019-5-28'group by order_dep) b on b.order_dep=a.id
+where 	id = #{id,jdbcType=VARCHAR};
+	</select>
 </mapper>

+ 4 - 0
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1467,4 +1467,8 @@ where super_id is null ) e on e.order_no=a.order_no
 	where order_no= #{orderNo,jdbcType=VARCHAR}
 	and finance_id= #{aid,jdbcType=VARCHAR}
   </update>
+  <select id="checkContractNo" resultType="java.lang.Integer">
+  	select count(contract_no) from t_order_new
+	where contract_no= #{0}
+  </select>
 </mapper>

+ 13 - 1
src/main/java/com/goafanti/common/model/OrganizationManagement.java

@@ -64,12 +64,16 @@ public class OrganizationManagement {
 	 * @mbg.generated  Thu Nov 30 11:09:29 CST 2017
 	 */
 	private String status;
-
+	/**
+	 * 缩写
+	 */
+	private String abbreviation;
 	/**
 	 * This method was generated by MyBatis Generator. This method returns the value of the database column organization_management.id
 	 * @return  the value of organization_management.id
 	 * @mbg.generated  Thu Nov 30 11:09:29 CST 2017
 	 */
+	
 	public String getId() {
 		return id;
 	}
@@ -280,4 +284,12 @@ public class OrganizationManagement {
 	public void setStatus(String status) {
 		this.status = status;
 	}
+
+	public String getAbbreviation() {
+		return abbreviation;
+	}
+
+	public void setAbbreviation(String abbreviation) {
+		this.abbreviation = abbreviation;
+	}
 }

+ 1 - 0
src/main/java/com/goafanti/order/controller/OrderInvoiceApiController.java

@@ -190,4 +190,5 @@ public class OrderInvoiceApiController extends CertifyApiController {
 		res.setData(handleFile(res, "/order_invoice_file/", false, req, sign));
 		return res;
 	}
+	
 }

+ 70 - 2
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -31,6 +32,7 @@ import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.dao.AdminMapper;
 import com.goafanti.common.dao.NoticeMapper;
 import com.goafanti.common.dao.OrganizationContactBookMapper;
+import com.goafanti.common.dao.OrganizationManagementMapper;
 import com.goafanti.common.dao.TDunLogMapper;
 import com.goafanti.common.dao.TOrderBackMapper;
 import com.goafanti.common.dao.TOrderDunMapper;
@@ -98,6 +100,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	@Autowired
 	private OrganizationContactBookMapper	organizationContactBookMapper;
 	@Autowired
+	private OrganizationManagementMapper 	organizationManagementMapper ; 
+	@Autowired
 	private JDBCIdGenerator	idGenerator;
 	@Autowired
 	private AdminMapper	adminMapper;
@@ -216,7 +220,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if (StringUtils.isBlank(t.getOrderDep())) {
 			t.setOrderDep(adminMapper.selectByPrimaryKey(TokenManager.getAdminId()).getDepartmentId());
 		}
-		if (isSubmit==1) {//订单
+		if (isSubmit==1) {//订单提交
 			t.setOrderStatus(OrderNewState.QDDS.getCode());
 			t.setProcessStatus(ProcessStatus.YPYXGLY.getCode());
 			if (t2.getApproval()==ApprovalNewState.BH.getCode()){
@@ -224,7 +228,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			}
 			//生成流转
 			addOrderLog(t.getOrderNo(),OrderLogProcess.TJ.getCode());
-			
+			if (StringUtils.isBlank(t2.getContractNo())) {
+				//没有合同编号则生成
+				createContractNo(t);
+			}
 		}
 		if (t2.getApproval()==ApprovalNewState.BH.getCode()||
 				t2.getOrderStatus()==OrderNewState.QDSHJJ.getCode()||
@@ -232,11 +239,72 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			t.setCreateTime(new Date());
 			tOrderBackMapper.updateByOrderNoAndBackStatus(t.getOrderNo());
 		}
+			
+		
 		return tOrderNewMapper.updateByPrimaryKeySelective(t);
 	}
 
 
 
+	private void createContractNo(TOrderNew t) {
+		//根据订单部门或许合同编号前缀
+		Map<String, Object> mp;
+		mp=organizationManagementMapper.getDepMaxNo(t.getOrderDep());
+		//获取日期年份
+		Calendar c=Calendar.getInstance();
+		int y=c.getWeekYear();
+		String s=null;
+		if(mp!=null)s=(String) mp.get("maxNo");
+		if (mp==null) {
+			throw new BusinessException(new Error( "该部门缩写不存在","该部门缩写不存在"));
+		}
+		String sno=null;
+		if (StringUtils.isBlank(s)||s.length()<13) {
+			t.setContractNo(""+mp.get("abbreviation")+"-"+y+"0001");
+		}else {
+			int ty=Integer.parseInt(s.substring(s.indexOf("-")+1, s.length()-4));
+			int no=Integer.parseInt(s.substring(s.length()-4, s.length()));
+			no++;
+			//得出字符串
+			sno = countNo(mp.get("abbreviation"), sno, ty, no);
+			//迭代得出最后编码
+			sno=iterationNo(sno,mp.get("abbreviation"),ty,no);
+			//年份小于等于则获取最大值加1,大于则获取最新年份
+			if (y<=ty) {
+				t.setContractNo(sno);
+			}else {
+				t.setContractNo(""+mp.get("abbreviation")+"-"+y+"0001");
+			}
+		}
+	}
+
+
+
+	private String iterationNo(String sno ,Object mp, int ty, int no) {
+		if (tOrderNewMapper.checkContractNo(sno)>0) {
+			int i=Integer.parseInt(sno.substring(sno.indexOf("-")+2, sno.length()-4));
+			sno=countNo(mp, sno, ty, i);
+			iterationNo(sno,mp,ty,i);
+		}
+		return sno;
+	}
+
+
+
+	private String countNo(Object object, String sno, int ty, int no) {
+		if (no>0&&no<10) {
+			sno=object+"-"+ty+"000"+no;
+		}else if (no>10&&no<100) {
+			sno=object+"-"+ty+"00"+no;
+		} else if (no>100&&no<1000) {
+			sno=object+"-"+ty+"0"+no;
+		} else if(no>1000){
+			sno=object+"-"+ty+no;
+		}
+		return sno;
+	}
+	
+
 	public void addOrderLog(String orderNo, Integer code) {
 		TOrderLog tl=new TOrderLog();
 		tl.setOrderNo(orderNo);

+ 10 - 0
src/main/java/com/goafanti/organization/bo/OrganizationListOut.java

@@ -31,6 +31,10 @@ public class OrganizationListOut {
 	private String remarks;
 	/**组织状态**/
 	private String status;
+	/**
+	 * 缩写
+	 */
+	private String abbreviation;
 	public String getUid() {
 		return uid;
 	}
@@ -121,6 +125,12 @@ public class OrganizationListOut {
 	public void setStatus(String status) {
 		this.status = status;
 	}
+	public String getAbbreviation() {
+		return abbreviation;
+	}
+	public void setAbbreviation(String abbreviation) {
+		this.abbreviation = abbreviation;
+	}
 	
 	
 	

+ 5 - 4
src/main/java/com/goafanti/organization/controller/AdminOrganizationController.java

@@ -107,7 +107,7 @@ public class AdminOrganizationController extends BaseApiController{
 	/**修改信息**/
 	@RequestMapping(value = "/updateOrganization" , method = RequestMethod.POST)
 	public Result updateOrganization(String name, String type, String managerId, String superId, String status,
-			String remarks,String id){
+			String remarks,String id,String abbreviation){
 		Result res = new Result();
 		if(StringUtils.isBlank(name) || StringUtils.isBlank(type)
 				|| StringUtils.isBlank(managerId)|| StringUtils.isBlank(superId)
@@ -123,6 +123,7 @@ public class AdminOrganizationController extends BaseApiController{
 			res.getError().add(buildError("","每层最多存在99个子类"));
 			return res;
 		}
+		int i=0;
 		if(Count<10){
 			String dep=sdepNo+"0"+Count;
 			String sid=organizationManagementMapper.selectIdByDepNo(dep);
@@ -135,7 +136,7 @@ public class AdminOrganizationController extends BaseApiController{
 				}
 				sid=organizationManagementMapper.selectIdByDepNo(dep);				
 			}
-			organizationService.updateOrganization(name, type, managerId, superId, status, remarks,id,dep);
+			i=organizationService.updateOrganization(name, type, managerId, superId, status, remarks,id,dep,abbreviation);
 		}
 		if(Count>=10){
 			String dep=sdepNo+Count;
@@ -145,10 +146,10 @@ public class AdminOrganizationController extends BaseApiController{
 				dep=sdepNo+Count;
 				sid=organizationManagementMapper.selectIdByDepNo(dep);				
 			}
-			organizationService.updateOrganization(name, type, managerId, superId, status, remarks,id,dep);
+			i=organizationService.updateOrganization(name, type, managerId, superId, status, remarks,id,dep,abbreviation);
 		}
 		
-		return res;
+		return res.data(i);
 	}
 	
 	

+ 1 - 1
src/main/java/com/goafanti/organization/service/OrganizationService.java

@@ -39,6 +39,6 @@ public interface OrganizationService {
 	
 	int deleteById(String id);
 	
-	int updateOrganization(String name,String type,String managerId,String superId,String status,String remarks,String id,String depn);
+	int updateOrganization(String name,String type,String managerId,String superId,String status,String remarks,String id,String depn,String abbreviation);
 	
 }

+ 4 - 3
src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java

@@ -96,7 +96,7 @@ public class OrganizationServiceImpl extends BaseMybatisDao<OrganizationManageme
 		return 1;
 	}
 	@Override
-	public int updateOrganization(String name, String type, String managerId, String superId, String status,String remarks,String id,String depn) {
+	public int updateOrganization(String name, String type, String managerId, String superId, String status,String remarks,String id,String depn,String abbreviation) {
 		Date now=new Date();
 		OrganizationManagement om=new OrganizationManagement();
 		om.setName(name);
@@ -108,7 +108,8 @@ public class OrganizationServiceImpl extends BaseMybatisDao<OrganizationManageme
 		om.setStatus(status);
 		om.setRemarks(remarks); 
 		om.setId(id);
-		organizationManagementMapper.updateByPrimaryKeySelective(om);
+		om.setAbbreviation(abbreviation);
+		int x=organizationManagementMapper.updateByPrimaryKeySelective(om);
 		//*******下级编号修改
 		int n=0;
 		List<OrganizationListOut> Nos =organizationManagementMapper.selectIDNBySuperId(om.getId());
@@ -178,7 +179,7 @@ public class OrganizationServiceImpl extends BaseMybatisDao<OrganizationManageme
 				}
 			}
 		}
-		return 1;
+		return x;
 	}
 
 }

+ 2 - 2
src/main/resources/props/config_local.properties

@@ -60,12 +60,12 @@ template.cacheable=false
 portal.host=//sf.jishutao.com/portal/2.0.6
 avatar.upload.host=//sb.jishutao.com/upload
 #连接开发
-static.host=//sb.jishutao.com/1.1.02
+static.host=//sb.jishutao.com/1.1.04
 avatar.host=//sb.jishutao.com
 
 #连生产
 #avatar.host=//static.kedexinxi.com
-#static.host=//s.kedexinxi.com/1.1.02
+#static.host=//s.kedexinxi.com/1.1.04
 
 upload.path=F:/data/public/upload
 upload.private.path=F:/data/private/upload